Skip to content

Python SDK ja CLI

aether365 pakett on Aether365 API ametlik Python SDK ja käsurealiides. See mähib endasse https://api.aether365.io, hoolitseb autentimise eest, pakib lahti vastuse ümbrise ja proovib mööduvaid tõrkeid automaatselt uuesti. Kõike, mida saad teha curl-iga, saad teha ka SDK või CLI kaudu.

SDK ja CLI kasutavad API võtit (ak_live_...) ja sihivad ühtset otspunkti: päringud suunatakse automaatselt sinu tenant'i koduregiooni. Kuidas võtmed töötavad, loe lehelt Autentimine.

Paigaldus

Paketti levitatakse sisemiselt (mitte PyPI kaudu). Paigalda see otse repositooriumist või kohalikust checkoutist.

bash
# From a local checkout of the monorepo
pip install ./packages/cli

# Or with Poetry, from a path
poetry add ./packages/cli

Nõutav on Python 3.12 või uuem. Paketi paigaldamine lisab ka käsu aether365 sinu PATH-i.

Seadistamine

Nii SDK kui ka CLI loevad samu keskkonnamuutujaid:

MuutujaOtstarveVaikimisi
AETHER365_API_KEYSinu API võti (ak_live_...). Kohustuslik.-
AETHER365_API_URLAsendab baas-URL-i (näiteks dev-otspunktiga).https://api.aether365.io
AETHER365_OUTPUTCLI väljundivorming: table või json.table
bash
export AETHER365_API_KEY="ak_live_..."

Regioon on automaatne: API tuvastab tenant'i võtme järgi ja edastab päringu õigesse regiooni, nii et regiooni ei pea kunagi seadistama ega kaasa andma.

Kiirstart: SDK

python
from aether365 import Aether365Client

with Aether365Client() as client:          # reads AETHER365_API_KEY
    tenant = client.tenants.me()
    print(tenant["name"])

    # Trigger a scan and wait for it to finish
    scan = client.scans.create("compliance")
    for snapshot in client.scans.wait(scan["id"]):
        print(snapshot["status"])

    # Read the findings
    findings = client.scans.results(scan["id"], result="Failed")
    print(f"{len(findings)} failed checks")

Kiirstart: CLI

bash
# Show the authenticated tenant
aether365 tenant me

# Trigger a scan and follow progress until it finishes
aether365 scan run --type compliance --watch

# List scans as JSON
aether365 --output json scan list

# Fail a CI job when a scan has failed findings (exit code 2)
aether365 scan results <SCAN_ID> --fail-on-findings

Mida API võti saab ja mida ei saa teha

API võti on piiratud turvalise lugemis- ja tööoperatsioonide pinnaga. See saab lugeda sinu andmeid, käivitada ja hallata skannimisi, genereerida raporteid ning hallata ründepinna sihtmärke. See ei saa teha konto haldamise ega kataloogist väljalukustamise toiminguid: API võtmete haldus, arveldus, meeskonna liikmesus, ühenduste lisamine ja eemaldamine, SSO, remediation-plaani rakendamine ega AI Piloti conditional-access/break-glass kirjutused. Need jäävad kättesaadavaks ainult dashboardi sisselogitud seansile. Päring keelatud marsruudile tagastab 403 AUTH_INSUFFICIENT_SCOPE.

Käskude ja meetodite viide

Iga rida näitab sama toimingut kolmel viisil: toores curl, SDK meetod ja CLI käsk.

Tenant ja konto

ToimingcurlSDKCLI
Tenant'i profiili pärimineGET /tenants/meclient.tenants.me()aether365 tenant me
Ühenduste loendGET /tenants/me/connectionsclient.connections.list()aether365 tenant connections
TeavituseelistusedGET /tenants/me/notificationsclient.notifications.get()aether365 tenant notifications
Plaanitud skannimisedGET /tenants/me/scheduled-scansclient.scheduled_scans.list()aether365 tenant scheduled-scans

Skannimised

ToimingcurlSDKCLI
Skannimiste loendGET /tenants/me/scansclient.scans.list()aether365 scan list
Skannimise käivitaminePOST /tenants/me/scansclient.scans.create("compliance")aether365 scan run --type compliance
Skannimise pärimineGET /scans/{id}client.scans.get(id)aether365 scan get <id>
Tulemuste lugemineGET /scans/{id}/resultsclient.scans.results(id)aether365 scan results <id>
Skannimise katkestaminePOST /scans/{id}/cancelclient.scans.cancel(id)aether365 scan cancel <id>
Skannimise peitminePATCH /scans/{id}/hideclient.scans.hide(id)aether365 scan hide <id>
Peidust välja toominePATCH /scans/{id}/unhideclient.scans.unhide(id)aether365 scan unhide <id>
Skannimise kustutamineDELETE /scans/{id}client.scans.delete(id)aether365 scan delete <id>

curl skannimise käivitamiseks:

bash
curl -X POST https://api.aether365.io/tenants/me/scans \
  -H "Authorization: Bearer $AETHER365_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scanType": "compliance"}'

Raportid

ToimingcurlSDKCLI
Raporti olekGET /scans/{id}/reportclient.reports.status(id)aether365 report status <id>
Raporti genereeriminePOST /scans/{id}/report/generateclient.reports.generate(id)aether365 report generate <id>
Raportite loendGET /tenants/me/reportsclient.reports.list()aether365 report list
Raporti allalaadimineGET /scans/{id}/report (presigned)client.reports.download(id, path)aether365 report download <id> -o out.pdf

Raporti olek on üks järgmistest: ready, rendering, orgNameRequired või locked. Raporti genereerimine võib kulutada raportikrediidi (ühekordne tasu, kui plaan ei sisalda kvooti): võtme omanik nõustub sellega generate'i välja kutsudes.

Raportite loend on offset-põhiselt lehekülgedeks jaotatud: saada meta["nextCursor"] (täisarvuline reanihe, viimasel lehel None) tagasi cursor-ina. client.reports.iter_all() järgib kursorit sinu eest.

Ründepind

ToimingcurlSDKCLI
ÜlevaadeGET /tenants/me/attack-surfaceclient.attack_surface.summary()aether365 eas summary
AjaluguGET /tenants/me/attack-surface/historyclient.attack_surface.history()aether365 eas history
Sihtmärkide loendGET /tenants/me/attack-surface/targetsclient.attack_surface.targets()aether365 eas targets list
Sihtmärgi lisaminePOST /tenants/me/attack-surface/targetsclient.attack_surface.add_target(host)aether365 eas targets add <host>
Sihtmärgi uuendaminePATCH /tenants/me/attack-surface/targets/{id}client.attack_surface.update_target(id, ...)aether365 eas targets update <id> --label ...
Sihtmärgi kustutamineDELETE /tenants/me/attack-surface/targets/{id}client.attack_surface.remove_target(id)aether365 eas targets remove <id>
Sihtmärgi kinnitaminePOST /tenants/me/attack-surface/targets/{id}/verifyclient.attack_surface.verify_target(id)aether365 eas targets verify <id>
EAS-skannimise käivitaminePOST /tenants/me/attack-surface/scanclient.attack_surface.scan()aether365 eas scan

Turvaseis, remediation ja AI Pilot

ToimingcurlSDKCLI
Ohtude ja riskide vaadeGET /tenants/me/threatsclient.threats.list()aether365 threats
Poliitikate seisGET /tenants/me/policiesclient.policies.list()aether365 policies
Remediation-võimekusedGET /tenants/me/remediation/capabilitiesclient.remediation.capabilities()aether365 remediation capabilities
Remediation-plaanide loendGET /tenants/me/remediation-plansclient.remediation.plans()aether365 remediation plans
Remediation-plaani pärimineGET /tenants/me/remediation-plans/{id}client.remediation.plan(id)aether365 remediation plan <id>
AI Pilot remediableGET /tenants/me/ai-pilot/remediableclient.ai_pilot.remediable()aether365 ai-pilot remediable
AI Pilot break-glassGET /tenants/me/ai-pilot/break-glassclient.ai_pilot.break_glass()aether365 ai-pilot break-glass
AI Pilot CA-poliitikadGET /tenants/me/ai-pilot/conditional-accessclient.ai_pilot.conditional_access()aether365 ai-pilot conditional-access

Remediation on API võtmete jaoks ainult lugemiseks. Plaani rakendamist ei pakuta: plaani action-registry kirjed võivad sisaldada Conditional-Access / authorization-policy muudatusi, mis lukustaksid tenant'i tema enda kataloogist välja (AADSTS50097), seega jääb rakendamine dashboardi, kus operaator on protsessi kaasatud. AI Piloti conditional-access ja break-glass on samal põhjusel samuti ainult loetavad.

Veakäsitlus ja uuesti proovimine

Iga API viga vastab tüübitud erindile, mis on Aether365Error alamklass:

python
from aether365 import Aether365Client
from aether365.exceptions import PermissionError_, PlanLimitError, NotFoundError

with Aether365Client() as client:
    try:
        client.scans.create("compliance")
    except PlanLimitError:
        print("Scan quota reached for this plan.")
    except PermissionError_:
        print("Route not allowed for this key, or plan lacks API access.")
    except NotFoundError:
        print("Resource not found.")

Klient proovib automaatselt uuesti vigu 429 RATE_LIMITED ja 503 SERVICE_STARTING (dev-keskkonna külma andmebaasi soojenemine) eksponentsiaalse backoffiga, arvestades Retry-After päist. Kvoodivead, näiteks SCAN_PLAN_LIMIT_REACHED, tõstatatakse kohe: neid uuesti ei proovita.

CLI kasutamine CI-s

aether365 scan results <id> --fail-on-findings lõpetab väljumiskoodiga 2, kui leidub kas või üks ebaõnnestunud leid, nii et pipeline saab skannimistulemuste põhjal väravat pidada:

bash
aether365 scan run --type compliance --watch
aether365 scan results "$SCAN_ID" --fail-on-findings

CLI kirjutab vead stderr-i ja väljub koodiga 1 iga API vea korral ning koodiga 2 leidude värava korral.

Kas sellest lehest oli abi?