Claude Platform Docs
AdminSecurity posture

Referenz zu Ergebnissen aus Security posture

Schlage den Endpunkt der Compliance API nach, der die aktuellen Ergebnisse einer Organisation in Security posture zurückgibt: die Anfrage, die Antwortfelder, die Bedeutung jedes Status und die Fehler.

Dieser Endpunkt gibt für die meisten Sicherheitskontrollen einer Organisation jeweils einen Eintrag zurück, ausgewertet zum Zeitpunkt der Anfrage, zusammen mit der Bestätigung für Security posture, die die Antwort für jede Kontrolle enthält. Du brauchst einen Compliance Access Key, der die Organisation abdeckt, mit dem Scope read:compliance_org_data oder read:org_audit; unter Verfügbarkeit von Security posture steht, welche Organisationen gelesen werden können.

Anfrage

Sende eine GET-Anfrage an /v1/compliance/organizations/{organization_id}/security_posture. Jeder Aufruf liest eine Organisation, und die Antwort ist nicht paginiert.

cURL
curl --fail-with-body -sS \
  "https://api.anthropic.com/v1/compliance/organizations/91012d09-e48b-438e-a489-1bebfd8fa6f9/security_posture" \
  -H "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  -H "anthropic-version: 2026-10-21"
ElementRegel
organization_idDie uuid einer verknüpften Organisation aus Organisationen auflisten; ein beliebiger anderer Wert gibt 404 zurück.
KeyEin Key für die übergeordnete Organisation kann eine beliebige verknüpfte Organisation angeben, und ein Key für eine einzelne Organisation kann nur diese Organisation angeben.
anthropic-versionErforderlich; eine Anfrage ohne diesen Header gibt 400 zurück.
Query-ParameterKeine; eine Anfrage mit irgendeinem Query-Parameter gibt 400 zurück.

Antwort

Das folgende Beispiel ist ein Auszug und zeigt vier der Kontrollen, die eine Antwort enthalten kann. Es ist die Antwort für einen Key, der read:compliance_org_data und read:compliance_user_data besitzt.

Response
{
  "type": "security_posture",
  "organization_id": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
  "evaluated_at": "2027-02-09T09:00:02.417305Z",
  "comments_status": "not_enabled",
  "controls": [
    {
      "id": "sso_enabled",
      "display_name": "Single sign-on (SSO)",
      "section": "identity_access",
      "setting_name": "sso_enabled",
      "status": "passed",
      "rating": "passed",
      "current_value": "On",
      "desired_state": "On",
      "attestation": null
    },
    {
      "id": "directory_sync_enabled",
      "display_name": "Directory sync (SCIM)",
      "section": "identity_access",
      "setting_name": "directory_sync_enabled",
      "status": "failed_check_accepted_risk",
      "rating": "passed",
      "current_value": "Off",
      "desired_state": "On",
      "attestation": {
        "state": "in_force",
        "attested_at": "2026-10-20T15:04:00.220114Z",
        "comment": null,
        "attested_by": {
          "type": "user_actor",
          "user_id": "user_01WxYzAbCdEfGhJkMnPqRsTu"
        }
      }
    },
    {
      "id": "allowed_invite_domains",
      "display_name": "Allowed email domains",
      "section": "identity_access",
      "setting_name": "allowed_invite_domains",
      "status": "descriptive",
      "rating": "descriptive",
      "current_value": "example.com",
      "desired_state": null,
      "attestation": null
    },
    {
      "id": "oauth_conditional_access",
      "display_name": "OAuth conditional access on connected SaaS",
      "section": "connectors_integrations",
      "setting_name": null,
      "status": "not_attested",
      "rating": "not_attested",
      "current_value": null,
      "desired_state": "Completed",
      "attestation": {
        "state": "review_due",
        "attested_at": "2026-11-02T09:30:00.008771Z",
        "comment": null,
        "attested_by": {
          "type": "user_actor",
          "user_id": "user_01AbCdEfGhJkLmNpQrStUvWx"
        }
      }
    }
  ]
}

Jedes Feld ist immer vorhanden, und ein Feld ohne Wert ist null und wird nie weggelassen. Eine Zeitangabe hat entweder keine oder sechs Nachkommastellen, vergleiche Zeiten also als Zeiten, nicht als Strings.

Felder der obersten Ebene

FeldTypBeschreibung
typestringImmer security_posture.
organization_idstringDie UUID der Organisation.
evaluated_atstring (RFC 3339, UTC)Der Zeitpunkt, zu dem jede Kontrolle ausgewertet wurde.
comments_statusstringOb Kommentare zu Bestätigungen gelesen wurden; siehe Wer bestätigt hat, und Kommentare.
controlsarray von ObjektenDie Kontrollen der Organisation, nie leer.

Felder von controls[]

FeldTypBeschreibung
idstringDie Kennung der Kontrolle, die für jede Organisation gleich ist und sich nie ändert.
display_namestringDer Anzeigename der Kontrolle, als englischer Anzeigetext, dessen Wortlaut sich ändern kann.
sectionstringDer Abschnitt, zu dem die Kontrolle gehört, einer der zehn nach dieser Tabelle aufgeführten; weitere Werte können hinzukommen, behandle einen unbekannten Wert also als eigenen Abschnitt.
setting_namestring oder nullDer name des Eintrags in den effektiven Einstellungen der Organisation, den diese Kontrolle liest; null, wenn sie keinen solchen Eintrag liest.
statusstringDer Grund für das Ergebnis der Kontrolle; siehe Statuswerte.
ratingstringDas Ergebnis der Kontrolle, das sich aus status ergibt; siehe Statuswerte.
current_valuestring oder nullDer aktuelle Wert, als englischer Anzeigetext, dessen Wortlaut sich ändern kann; null bei einer manuellen Kontrolle oder wenn kein Wert gelesen wurde.
desired_statestring oder nullDer empfohlene Wert, als englischer Anzeigetext, dessen Wortlaut sich ändern kann; null, wenn es für diese Organisation keinen gibt.
attestationobject oder nullDie Bestätigung, die die Antwort enthält, auch solange sie nicht in Kraft ist; null, solange status descriptive, not_applicable oder not_evaluated ist, sowie in diesen Fällen.

section ist einer der Werte identity_access, data_privacy, capabilities, connectors_integrations, chats_desktop_mdm, cowork_admin_console, cowork_desktop_mdm, claude_code_admin_console, claude_code_managed_settings und healthy_adoption.

Um Werte im Code zu vergleichen, schlage setting_name in den effektiven Einstellungen derselben Organisation nach. Die Suche kann nichts finden, und zwei Kontrollen können sich einen setting_name teilen.

Felder von attestation

FeldTypBeschreibung
statestringOb die Bestätigung in Kraft ist; siehe Bestätigungszustände.
attested_atstring (RFC 3339, UTC)Wann die Bestätigung abgegeben wurde.
commentstring oder nullDer mit der Bestätigung gespeicherte Kommentar mit höchstens 2.000 Zeichen; null, wenn es keinen gibt oder wenn comments_status nicht available ist.
attested_byobject oder nullDie Person, die bestätigt hat; null, wenn der Key weder read:compliance_user_data noch read:org_audit besitzt, wenn das Konto dieser Person gelöscht wurde oder gerade gelöscht wird oder wenn der Endpunkt für die Organisation nicht zurückgibt, wer bestätigt hat.

Felder von attested_by

FeldTypBeschreibung
typestringImmer user_actor.
user_idstringDie ID des Benutzers, die mit user_ beginnt.

Statuswerte

status gibt den Grund für das Ergebnis einer Kontrolle an, und jeder Status hat genau ein rating.

statusArt der KontrolleBedeutungratingAuf der Seite
passedautomatischDer aktuelle Wert erfüllt den empfohlenen Wert.passedBestanden
matches_profileautomatischDer aktuelle Wert entspricht dem empfohlenen Wert.passedBestanden
exceeds_baselineautomatischDer aktuelle Wert ist strenger als der empfohlene Wert.passedBestanden
failed_check_accepted_riskautomatischDie automatische Prüfung schlägt fehl, und ein akzeptiertes Risiko ist in Kraft.passedBestanden
failedautomatisch oder manuellDer aktuelle Wert erfüllt den empfohlenen Wert nicht, oder eine Bestätigung, die die Antwort weglässt, ergibt dieses Ergebnis.failedNicht bestanden, oder Bestanden, wenn eine Bestätigung mit dem Wert Umgesetzt in Kraft ist
reviewautomatischDer aktuelle Wert ist lockerer als der empfohlene Wert.failedNicht bestanden
attested_completedmanuellEine Bestätigung mit dem Wert Umgesetzt (completed) ist in Kraft.passedBestanden
attested_accepted_riskmanuellEine Bestätigung mit dem Wert Akzeptiertes Risiko (accepted_risk) ist in Kraft.passedBestanden
not_attestedmanuellEs ist keine Bestätigung in Kraft.not_attestedNicht bestätigt
attestation_not_enabledmanuellNiemand kann die Kontrolle bestätigen.not_attestedInformativ
descriptiverein informativDie Kontrolle wird gemeldet, nicht eingestuft.descriptiveInformativ
not_applicablebeliebigDie Kontrolle gilt nicht für die Organisation.descriptiveInformativ
not_evaluatedbeliebigDie Einstellung oder eine andere Einstellung, die entscheidet, ob die Kontrolle gilt, konnte nicht gelesen werden.descriptiveInformativ

Kein Feld nennt die Art der Kontrolle; bei failed kennzeichnet ein current_value mit dem Wert null eine manuelle Kontrolle. Weitere Werte können hinzukommen, zähle eine Kontrolle mit einem unbekannten status also nach ihrem rating, und werte ein unbekanntes rating nicht als Bestanden. Der Status review und der Bestätigungszustand review_due hängen nicht zusammen.

Bestätigungszustände

state gibt an, ob die Bestätigung, die die Antwort enthält, in Kraft ist.

stateBedeutung
in_forceDie Bestätigung ist in Kraft.
review_dueDas Enddatum ist erreicht.
setting_changedDie Prüfung schlägt bei einem anderen Wert fehl als dem, dessen Risiko akzeptiert wurde, oder das akzeptierte Risiko wurde bereits als beendet erfasst.
check_passingDie Prüfung ist erfolgreich, es gibt also kein Risiko zu akzeptieren.

Wenn mehr als ein Grund zutrifft, gibt die Antwort den ersten von check_passing, setting_changed und review_due an. Ab 00:00 UTC an ihrem Enddatum ist eine Bestätigung nicht in Kraft. Die Antwort enthält kein Enddatum, daher entscheidet state; ein Enddatum, das gespeichert wurde, ist das review_date der Aktivität der Bestätigung. Werte einen unbekannten state als nicht in Kraft.

Wie eine Bestätigung in der Antwort erscheint

Die Antwort enthält manche Bestätigungen und lässt andere weg, ein attestation mit dem Wert null beweist also nicht, dass niemand bestätigt hat.

Art der KontrolleBestätigt alsstatusratingattestation
ManuellKeine Bestätigungnot_attested oder, wenn niemand bestätigen kann, attestation_not_enablednot_attestednull
ManuellUmgesetztattested_completedpassedEnthalten
ManuellAkzeptiertes Risikoattested_accepted_riskpassedEnthalten
ManuellNicht bestanden (control_failed)failedfailednull: nie enthalten
Automatisch, Prüfung fehlgeschlagenKeine Bestätigungfailed oder reviewfailednull
Automatisch, Prüfung fehlgeschlagenAkzeptiertes Risikofailed_check_accepted_riskpassedEnthalten
Automatisch, Prüfung fehlgeschlagenUmgesetztfailed, auch wo die automatische Prüfung review ergibtfailednull: nie enthalten
Automatisch, Prüfung fehlgeschlagenNicht bestandenDer status, den die automatische Prüfung ergibtfailednull: nie enthalten
Automatisch, Prüfung erfolgreichKeine Bestätigungpassed, matches_profile oder exceeds_baselinepassednull
Automatisch, Prüfung erfolgreichUmgesetztDer status, den die automatische Prüfung ergibtpassednull: nie enthalten
Automatisch, Prüfung erfolgreichAkzeptiertes RisikoDer status, den die automatische Prüfung ergibtpassednull, solange die Prüfung beim akzeptierten Wert erfolgreich ist
Automatisch, Prüfung erfolgreichNicht bestandenfailedfailednull: nie enthalten
Rein informativBeliebiger Wertdescriptivedescriptivenull: nie enthalten
Beliebig, solange die Bestätigung nicht in Kraft istEin Wert, den eine frühere Zeile als enthalten ausweistWie ohne BestätigungWie ohne BestätigungEnthalten, mit einem anderen state als in_force
Beliebig, solange die Bestätigung nicht in Kraft istEin Wert, den eine frühere Zeile als weggelassen ausweistWie ohne BestätigungWie ohne Bestätigungnull

Jede Zeile außer den letzten beiden gilt, solange die Bestätigung in Kraft ist. Bei einer automatischen Kontrolle ist eine Bestätigung nicht in Kraft, solange der Wert, den die Prüfung liest, von dem abweicht, für den sie gespeichert wurde. Jede Bestätigung, die die Antwort bei einer automatischen Kontrolle enthält, ist ein akzeptiertes Risiko. Der Activity Feed erfasst auch Bestätigungen der Arten, die die Antwort weglässt.

Ergebnisse zählen

Prüfe vier Dinge, wenn du Kontrollen nach rating zählst.

Wenn du zählstPrüfe auch
Bestanden (passed)Dazu zählt jede Kontrolle, bei der ein akzeptiertes Risiko in Kraft ist, achte also auf failed_check_accepted_risk und attested_accepted_risk.
Nicht bestanden (failed)Dazu zählen eine als Nicht bestanden (control_failed) bestätigte Kontrolle und eine fehlschlagende automatische Prüfung, bei der eine Bestätigung mit dem Wert Umgesetzt in Kraft ist; diese zeigt die Seite Security posture als Bestanden an.
Informativ (descriptive)Darunter kann sich eine Kontrolle verbergen, die nicht gelesen werden konnte, achte also auf not_evaluated.
Jede KontrolleEine Kontrolle, die in der Antwort fehlt, zählt nicht als Bestanden und wird nicht genannt, vergleiche also die id-Werte mit denen, die du für die Organisation gesehen hast.

Wer bestätigt hat, und Kommentare

attested_by wird nur für einen Key gefüllt, der read:compliance_user_data zusammen mit read:compliance_org_data besitzt oder der read:org_audit besitzt. Ein Key mit nur read:compliance_user_data erhält einen 403. Die user_id in attested_by ist dieselbe wie die user_id des actor in der Aktivität der Bestätigung. attested_by enthält nur die Benutzer-ID: Benutzer einer Organisation auflisten liefert den Namen und die E-Mail-Adresse jedes aktuellen Mitglieds. Bevor du diese Scopes hinzufügst, lies Wer sehen kann, wer bestätigt hat.

Der Endpunkt gibt keine Kommentare zurück, auch wenn die Seite Security posture einen anzeigt: Jeder comment ist null, und comments_status ist not_enabled oder not_permitted. not_enabled und ein comment mit dem Wert null bedeuten also nicht, dass die Bestätigung keinen Kommentar hat. comments_status gibt an, wie ein comment mit dem Wert null zu lesen ist, und das Schema definiert diese Werte.

comments_statusBedeutung
not_permittedDer API-Key besitzt weder read:compliance_user_data noch read:org_audit, daher sind jeder comment und jedes attested_by null.
requires_organization_keyDer API-Key wurde nicht in der Organisation erstellt, wie es bei einem Key für die übergeordnete Organisation der Fall ist, daher ist jeder comment null. Ein erneuter Versuch hilft nicht.
availableKommentare wurden gelesen, ein comment mit dem Wert null bedeutet also, dass es keinen gibt oder dass er erst vor wenigen Augenblicken gespeichert wurde.
not_enabledDieser Endpunkt gibt für die Organisation keine Kommentare zurück, daher ist jeder comment null.
unavailableKommentare konnten für diese Antwort nicht gelesen werden; eine spätere Anfrage könnte erfolgreich sein, aber manche Ursachen bestehen fort, bis der Kunde handelt.

Weitere Werte können hinzukommen; werte einen unbekannten Wert als unavailable.

Fehler

Fehler verwenden denselben Body wie der Rest der Compliance API; diese Tabelle listet die Fehler auf, die dieser Endpunkt auf eigene Weise zurückgibt.

Status und error.typeWannWas zu tun ist
400 invalid_request_erroranthropic-version fehlt oder ist ungültig, die Compliance API ist für die übergeordnete Organisation nicht aktiviert, oder es gibt einen Query-Parameter.Behebe, was error.message nennt.
401 authentication_errorDer Key fehlt, wird nicht erkannt oder ist weder ein Compliance Access Key noch ein Admin-API-Key.Sende einen gültigen Compliance Access Key in x-api-key.
403 permission_errorDer Key darf diesen Endpunkt nicht aufrufen, meist weil ihm sowohl read:compliance_org_data als auch read:org_audit fehlen.Verwende einen Key mit einem der beiden Scopes.
404 not_found_errorSiehe die Ursachen, die nach dieser Tabelle aufgeführt sind.Versuche es nicht sofort erneut, und werte es nie als „keine fehlgeschlagenen Kontrollen“.
429 rate_limit_errorDas gemeinsame Ratenlimit der Compliance API oder das niedrigere Limit dieses Endpunkts ist ausgeschöpft; error.message gibt an, welches.Warte retry-after ab; siehe 429 Too Many Requests.
503 overloaded_error, mit error.details.error_code gleich posture_evaluation_failedDas Ergebnis konnte nicht erzeugt werden.Warte retry-after ab und versuche es dann erneut; wenn es bei späteren Durchläufen für eine Organisation erneut auftritt, wende dich einmalig an den Anthropic-Support.
503 ohne error_code, oder 504 timeout_errorEin vorübergehender Fehler.Versuche es mit exponentiellem Backoff erneut.

Ursachen für einen 404:

  • organization_id ist keine UUID, benennt keine Organisation oder benennt eine gelöschte.
  • organization_id benennt die übergeordnete Organisation, eine Organisation unter einer anderen übergeordneten Organisation oder eine, die ein Key für eine einzelne Organisation nicht abdeckt.
  • Die Organisation nutzt nicht Claude Enterprise, oder Security posture ist für sie nicht verfügbar, wie bei einer Organisation in der Claude Console.
  • Die Seite Security posture wurde für die Organisation ausgeschaltet (siehe Verfügbarkeit von Security posture).
  • Security posture ist für die Organisation verfügbar, aber der Endpunkt bedient sie nicht.
  • Die Verfügbarkeit konnte nicht geprüft werden; eine spätere Anfrage kann erfolgreich sein.

Jeder 404 hat denselben Body, ebenso wie ein Pfad, der nicht existiert.

Aktualität und Nebeneffekte

Der Endpunkt wertet jede Kontrolle aus, wenn du ihn aufrufst, und evaluated_at ist dieser Zeitpunkt.

  • Eine Änderung aus den letzten Minuten wird möglicherweise noch nicht angezeigt.
  • Ein Ergebnis kann sich ändern, ohne dass sich eine Einstellung geändert hat, zum Beispiel wenn ein Enddatum erreicht ist oder Anthropic einen empfohlenen Wert ändert.
  • Wenn Anthropic einen aktuellen Wert umformuliert, ist ein akzeptiertes Risiko für diesen Wert nicht in Kraft.
  • Ein Aufruf speichert kein Ergebnis und beendet keine Bestätigung.
  • Jede Anfrage, die die Prüfungen von Key, Scope und Version ohne Query-Parameter besteht, erfasst genau eine Aktivität compliance_api_accessed, unabhängig davon, ob sie erfolgreich ist oder fehlschlägt; ihre url nennt die gelesene Organisation, und organization_uuid ist null bei einem Key für die übergeordnete Organisation.

War diese Seite hilfreich?