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 --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"| Element | Regel |
|---|---|
organization_id | Die uuid einer verknüpften Organisation aus Organisationen auflisten; ein beliebiger anderer Wert gibt 404 zurück. |
| Key | Ein 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-version | Erforderlich; eine Anfrage ohne diesen Header gibt 400 zurück. |
| Query-Parameter | Keine; 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.
{
"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
| Feld | Typ | Beschreibung |
|---|---|---|
type | string | Immer security_posture. |
organization_id | string | Die UUID der Organisation. |
evaluated_at | string (RFC 3339, UTC) | Der Zeitpunkt, zu dem jede Kontrolle ausgewertet wurde. |
comments_status | string | Ob Kommentare zu Bestätigungen gelesen wurden; siehe Wer bestätigt hat, und Kommentare. |
controls | array von Objekten | Die Kontrollen der Organisation, nie leer. |
Felder von controls[]
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Die Kennung der Kontrolle, die für jede Organisation gleich ist und sich nie ändert. |
display_name | string | Der Anzeigename der Kontrolle, als englischer Anzeigetext, dessen Wortlaut sich ändern kann. |
section | string | Der 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_name | string oder null | Der name des Eintrags in den effektiven Einstellungen der Organisation, den diese Kontrolle liest; null, wenn sie keinen solchen Eintrag liest. |
status | string | Der Grund für das Ergebnis der Kontrolle; siehe Statuswerte. |
rating | string | Das Ergebnis der Kontrolle, das sich aus status ergibt; siehe Statuswerte. |
current_value | string oder null | Der aktuelle Wert, als englischer Anzeigetext, dessen Wortlaut sich ändern kann; null bei einer manuellen Kontrolle oder wenn kein Wert gelesen wurde. |
desired_state | string oder null | Der empfohlene Wert, als englischer Anzeigetext, dessen Wortlaut sich ändern kann; null, wenn es für diese Organisation keinen gibt. |
attestation | object oder null | Die 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
| Feld | Typ | Beschreibung |
|---|---|---|
state | string | Ob die Bestätigung in Kraft ist; siehe Bestätigungszustände. |
attested_at | string (RFC 3339, UTC) | Wann die Bestätigung abgegeben wurde. |
comment | string oder null | Der 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_by | object oder null | Die 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
| Feld | Typ | Beschreibung |
|---|---|---|
type | string | Immer user_actor. |
user_id | string | Die 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.
status | Art der Kontrolle | Bedeutung | rating | Auf der Seite |
|---|---|---|---|---|
passed | automatisch | Der aktuelle Wert erfüllt den empfohlenen Wert. | passed | Bestanden |
matches_profile | automatisch | Der aktuelle Wert entspricht dem empfohlenen Wert. | passed | Bestanden |
exceeds_baseline | automatisch | Der aktuelle Wert ist strenger als der empfohlene Wert. | passed | Bestanden |
failed_check_accepted_risk | automatisch | Die automatische Prüfung schlägt fehl, und ein akzeptiertes Risiko ist in Kraft. | passed | Bestanden |
failed | automatisch oder manuell | Der aktuelle Wert erfüllt den empfohlenen Wert nicht, oder eine Bestätigung, die die Antwort weglässt, ergibt dieses Ergebnis. | failed | Nicht bestanden, oder Bestanden, wenn eine Bestätigung mit dem Wert Umgesetzt in Kraft ist |
review | automatisch | Der aktuelle Wert ist lockerer als der empfohlene Wert. | failed | Nicht bestanden |
attested_completed | manuell | Eine Bestätigung mit dem Wert Umgesetzt (completed) ist in Kraft. | passed | Bestanden |
attested_accepted_risk | manuell | Eine Bestätigung mit dem Wert Akzeptiertes Risiko (accepted_risk) ist in Kraft. | passed | Bestanden |
not_attested | manuell | Es ist keine Bestätigung in Kraft. | not_attested | Nicht bestätigt |
attestation_not_enabled | manuell | Niemand kann die Kontrolle bestätigen. | not_attested | Informativ |
descriptive | rein informativ | Die Kontrolle wird gemeldet, nicht eingestuft. | descriptive | Informativ |
not_applicable | beliebig | Die Kontrolle gilt nicht für die Organisation. | descriptive | Informativ |
not_evaluated | beliebig | Die Einstellung oder eine andere Einstellung, die entscheidet, ob die Kontrolle gilt, konnte nicht gelesen werden. | descriptive | Informativ |
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.
state | Bedeutung |
|---|---|
in_force | Die Bestätigung ist in Kraft. |
review_due | Das Enddatum ist erreicht. |
setting_changed | Die 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_passing | Die 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 Kontrolle | Bestätigt als | status | rating | attestation |
|---|---|---|---|---|
| Manuell | Keine Bestätigung | not_attested oder, wenn niemand bestätigen kann, attestation_not_enabled | not_attested | null |
| Manuell | Umgesetzt | attested_completed | passed | Enthalten |
| Manuell | Akzeptiertes Risiko | attested_accepted_risk | passed | Enthalten |
| Manuell | Nicht bestanden (control_failed) | failed | failed | null: nie enthalten |
| Automatisch, Prüfung fehlgeschlagen | Keine Bestätigung | failed oder review | failed | null |
| Automatisch, Prüfung fehlgeschlagen | Akzeptiertes Risiko | failed_check_accepted_risk | passed | Enthalten |
| Automatisch, Prüfung fehlgeschlagen | Umgesetzt | failed, auch wo die automatische Prüfung review ergibt | failed | null: nie enthalten |
| Automatisch, Prüfung fehlgeschlagen | Nicht bestanden | Der status, den die automatische Prüfung ergibt | failed | null: nie enthalten |
| Automatisch, Prüfung erfolgreich | Keine Bestätigung | passed, matches_profile oder exceeds_baseline | passed | null |
| Automatisch, Prüfung erfolgreich | Umgesetzt | Der status, den die automatische Prüfung ergibt | passed | null: nie enthalten |
| Automatisch, Prüfung erfolgreich | Akzeptiertes Risiko | Der status, den die automatische Prüfung ergibt | passed | null, solange die Prüfung beim akzeptierten Wert erfolgreich ist |
| Automatisch, Prüfung erfolgreich | Nicht bestanden | failed | failed | null: nie enthalten |
| Rein informativ | Beliebiger Wert | descriptive | descriptive | null: nie enthalten |
| Beliebig, solange die Bestätigung nicht in Kraft ist | Ein Wert, den eine frühere Zeile als enthalten ausweist | Wie ohne Bestätigung | Wie ohne Bestätigung | Enthalten, mit einem anderen state als in_force |
| Beliebig, solange die Bestätigung nicht in Kraft ist | Ein Wert, den eine frühere Zeile als weggelassen ausweist | Wie ohne Bestätigung | Wie ohne Bestätigung | null |
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ählst | Prü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 Kontrolle | Eine 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_status | Bedeutung |
|---|---|
not_permitted | Der API-Key besitzt weder read:compliance_user_data noch read:org_audit, daher sind jeder comment und jedes attested_by null. |
requires_organization_key | Der 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. |
available | Kommentare wurden gelesen, ein comment mit dem Wert null bedeutet also, dass es keinen gibt oder dass er erst vor wenigen Augenblicken gespeichert wurde. |
not_enabled | Dieser Endpunkt gibt für die Organisation keine Kommentare zurück, daher ist jeder comment null. |
unavailable | Kommentare 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.type | Wann | Was zu tun ist |
|---|---|---|
400 invalid_request_error | anthropic-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_error | Der 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_error | Der 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_error | Siehe 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_error | Das 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_failed | Das 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_error | Ein vorübergehender Fehler. | Versuche es mit exponentiellem Backoff erneut. |
Ursachen für einen 404:
organization_idist keine UUID, benennt keine Organisation oder benennt eine gelöschte.organization_idbenennt 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; ihreurlnennt die gelesene Organisation, undorganization_uuidistnullbei einem Key für die übergeordnete Organisation.
War diese Seite hilfreich?