Riferimento per i risultati di Security posture
Consulta l’endpoint della Compliance API che restituisce i risultati attuali di Security posture di un’organizzazione: la richiesta, i campi della risposta, il significato di ciascuno stato e gli errori.
Questo endpoint restituisce una voce per la maggior parte dei controlli di sicurezza di un’organizzazione, valutati al momento della richiesta, con l’attestazione di Security posture che la risposta mostra per ciascun controllo. Ti serve una Compliance Access Key che copra l’organizzazione, con lo scope read:compliance_org_data o read:org_audit; Disponibilità di Security posture indica quali organizzazioni possono essere lette.
Richiesta
Invia una richiesta GET a /v1/compliance/organizations/{organization_id}/security_posture. Ogni chiamata legge una sola organizzazione e la risposta non è impaginata.
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"| Elemento | Regola |
|---|---|
organization_id | L’uuid di un’organizzazione collegata ottenuto da Elencare le organizzazioni; qualsiasi altro valore restituisce 404. |
| Chiave | Una chiave per l’organizzazione padre può indicare qualsiasi organizzazione collegata, e una chiave per una singola organizzazione può indicare solo quell’organizzazione. |
anthropic-version | Obbligatorio; una richiesta senza di esso restituisce 400. |
| Parametri di query | Nessuno; una richiesta con qualsiasi parametro di query restituisce 400. |
Risposta
Il seguente esempio abbreviato mostra quattro dei controlli che una risposta può contenere. È la risposta a una chiave che dispone di read:compliance_org_data e read:compliance_user_data.
{
"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"
}
}
}
]
}Ogni campo è sempre presente, e un campo senza valore è null, mai omesso. Un orario non ha cifre frazionarie oppure ne ha sei, quindi confronta gli orari come orari, non come stringhe.
Campi di primo livello
| Campo | Tipo | Descrizione |
|---|---|---|
type | stringa | Sempre security_posture. |
organization_id | stringa | L’UUID dell’organizzazione. |
evaluated_at | stringa (RFC 3339, UTC) | Il momento in cui ogni controllo è stato valutato. |
comments_status | stringa | Indica se i commenti delle attestazioni sono stati letti; consulta Chi ha attestato e i commenti. |
controls | array di oggetti | I controlli dell’organizzazione; l’array non è mai vuoto. |
Campi di controls[]
| Campo | Tipo | Descrizione |
|---|---|---|
id | stringa | L’identificatore del controllo, che è lo stesso per ogni organizzazione e non cambia mai. |
display_name | stringa | Il nome visualizzato del controllo, come testo di visualizzazione in inglese la cui formulazione può cambiare. |
section | stringa | La sezione a cui appartiene il controllo, una delle dieci elencate dopo questa tabella; possono essere aggiunti altri valori, quindi tratta un valore sconosciuto come una sezione a sé. |
setting_name | stringa o null | Il name della voce nelle impostazioni effettive dell’organizzazione che questo controllo legge; null quando non legge alcuna voce di questo tipo. |
status | stringa | Il motivo del risultato del controllo; consulta Valori di stato. |
rating | stringa | Il risultato del controllo, che deriva da status; consulta Valori di stato. |
current_value | stringa o null | Il valore attuale, come testo di visualizzazione in inglese la cui formulazione può cambiare; null su un controllo manuale o quando non è stato letto alcun valore. |
desired_state | stringa o null | Il valore consigliato, come testo di visualizzazione in inglese la cui formulazione può cambiare; null quando non ce n’è uno per questa organizzazione. |
attestation | oggetto o null | L’attestazione che la risposta mostra, anche mentre non è in vigore; null mentre status è descriptive, not_applicable o not_evaluated, e in questi casi. |
section è uno tra identity_access, data_privacy, capabilities, connectors_integrations, chats_desktop_mdm, cowork_admin_console, cowork_desktop_mdm, claude_code_admin_console, claude_code_managed_settings e healthy_adoption.
Per confrontare i valori nel codice, cerca setting_name nelle impostazioni effettive della stessa organizzazione. La ricerca può non trovare nulla, e due controlli possono condividere lo stesso setting_name.
Campi di attestation
| Campo | Tipo | Descrizione |
|---|---|---|
state | stringa | Indica se l’attestazione è in vigore; consulta Stati dell’attestazione. |
attested_at | stringa (RFC 3339, UTC) | Quando è stata effettuata l’attestazione. |
comment | stringa o null | Il commento salvato con l’attestazione, di al massimo 2.000 caratteri; null se non ce n’è uno, o se comments_status non è available. |
attested_by | oggetto o null | La persona che ha attestato; null quando la chiave non dispone né di read:compliance_user_data né di read:org_audit, quando l’account di quella persona è stato eliminato o è in fase di eliminazione, o quando l’endpoint non restituisce per l’organizzazione chi ha attestato. |
Campi di attested_by
| Campo | Tipo | Descrizione |
|---|---|---|
type | stringa | Sempre user_actor. |
user_id | stringa | L’ID dell’utente, che inizia con user_. |
Valori di stato
status indica il motivo del risultato di un controllo, e ogni stato ha un solo rating.
status | Tipo di controllo | Significato | rating | Nella pagina |
|---|---|---|---|---|
passed | automatico | Il valore attuale soddisfa il valore consigliato. | passed | Superato |
matches_profile | automatico | Il valore attuale è uguale al valore consigliato. | passed | Superato |
exceeds_baseline | automatico | Il valore attuale è più restrittivo del valore consigliato. | passed | Superato |
failed_check_accepted_risk | automatico | La verifica automatica ha esito negativo, e un rischio accettato è in vigore. | passed | Superato |
failed | automatico o manuale | Il valore attuale non soddisfa il valore consigliato, oppure un’attestazione che la risposta omette dà questo risultato. | failed | Non superato, oppure Superato con un’attestazione Completato in vigore |
review | automatico | Il valore attuale è meno restrittivo del valore consigliato. | failed | Non superato |
attested_completed | manuale | È in vigore un’attestazione con il valore Completato (completed). | passed | Superato |
attested_accepted_risk | manuale | È in vigore un’attestazione con il valore Rischio accettato (accepted_risk). | passed | Superato |
not_attested | manuale | Nessuna attestazione è in vigore. | not_attested | Non attestato |
attestation_not_enabled | manuale | Nessuno può attestare il controllo. | not_attested | Descrittivo |
descriptive | solo informativo | Il controllo viene riportato, non classificato. | descriptive | Descrittivo |
not_applicable | qualsiasi | Il controllo non si applica all’organizzazione. | descriptive | Descrittivo |
not_evaluated | qualsiasi | Non è stato possibile leggere l’impostazione, o un’altra impostazione che determina se il controllo si applica. | descriptive | Descrittivo |
Nessun campo indica il tipo di controllo; per failed, un current_value null contraddistingue un controllo manuale. Possono essere aggiunti altri valori, quindi conta un controllo con uno status sconosciuto in base al suo rating, e non considerare Superato un rating sconosciuto. Lo stato review e lo stato dell’attestazione review_due non sono correlati.
Stati dell’attestazione
state indica se l’attestazione che la risposta mostra è in vigore.
state | Significato |
|---|---|
in_force | L’attestazione è in vigore. |
review_due | È arrivata la data di fine. |
setting_changed | La verifica ha esito negativo su un valore diverso da quello il cui rischio è stato accettato, oppure il rischio accettato era già stato registrato come terminato. |
check_passing | La verifica ha esito positivo, quindi non c’è alcun rischio da accettare. |
Quando si applica più di un motivo, la risposta indica il primo tra check_passing, setting_changed e review_due. A partire dalle 00:00 UTC della sua data di fine, un’attestazione non è in vigore. La risposta non riporta alcuna data di fine, quindi decide state; una data di fine che è stata salvata è il review_date dell’attività di attestazione. Considera uno state sconosciuto come non in vigore.
Come appare un’attestazione nella risposta
La risposta mostra alcune attestazioni e ne omette altre, quindi un attestation null non dimostra che nessuno abbia attestato.
| Tipo di controllo | Attestato come | status | rating | attestation |
|---|---|---|---|---|
| Manuale | Nessuna attestazione | not_attested, oppure attestation_not_enabled laddove nessuno possa attestare | not_attested | null |
| Manuale | Completato | attested_completed | passed | Mostrata |
| Manuale | Rischio accettato | attested_accepted_risk | passed | Mostrata |
| Manuale | Non superato (control_failed) | failed | failed | null: mai mostrata |
| Automatico, verifica con esito negativo | Nessuna attestazione | failed o review | failed | null |
| Automatico, verifica con esito negativo | Rischio accettato | failed_check_accepted_risk | passed | Mostrata |
| Automatico, verifica con esito negativo | Completato | failed, anche dove la verifica automatica dà review | failed | null: mai mostrata |
| Automatico, verifica con esito negativo | Non superato | Lo status che dà la verifica automatica | failed | null: mai mostrata |
| Automatico, verifica con esito positivo | Nessuna attestazione | passed, matches_profile o exceeds_baseline | passed | null |
| Automatico, verifica con esito positivo | Completato | Lo status che dà la verifica automatica | passed | null: mai mostrata |
| Automatico, verifica con esito positivo | Rischio accettato | Lo status che dà la verifica automatica | passed | null finché la verifica ha esito positivo sul valore accettato |
| Automatico, verifica con esito positivo | Non superato | failed | failed | null: mai mostrata |
| Solo informativo | Qualsiasi valore | descriptive | descriptive | null: mai mostrata |
| Qualsiasi, mentre l’attestazione non è in vigore | Un valore che una riga precedente mostra | Come senza attestazione | Come senza attestazione | Mostrata, con uno state diverso da in_force |
| Qualsiasi, mentre l’attestazione non è in vigore | Un valore che una riga precedente omette | Come senza attestazione | Come senza attestazione | null |
Ogni riga tranne le ultime due vale finché l’attestazione è in vigore. Su un controllo automatico, un’attestazione non è in vigore finché il valore letto dalla verifica differisce da quello su cui è stata salvata. Ogni attestazione che la risposta mostra su un controllo automatico è un rischio accettato. Anche l’Activity Feed registra le attestazioni dei tipi che la risposta omette.
Contare i risultati
Verifica quattro aspetti quando conti i controlli per rating.
| Se conti | Verifica anche |
|---|---|
Superato (passed) | Include ogni controllo con un rischio accettato in vigore, quindi cerca failed_check_accepted_risk e attested_accepted_risk. |
Non superato (failed) | Include un controllo attestato come Non superato (control_failed), e una verifica automatica con esito negativo con un’attestazione Completato in vigore, che la pagina Security posture mostra come Superato. |
Descrittivo (descriptive) | Può nascondere un controllo che non è stato possibile leggere, quindi cerca not_evaluated. |
| Tutti i controlli | Un controllo mancante dalla risposta non è considerato Superato e non viene nominato, quindi confronta i valori id con quelli che hai visto per l’organizzazione. |
Chi ha attestato e i commenti
attested_by viene compilato solo per una chiave che dispone di read:compliance_user_data insieme a read:compliance_org_data, oppure di read:org_audit. Una chiave con solo read:compliance_user_data riceve un 403. Lo user_id in attested_by è lo stesso dello user_id dell’actor nell’attività di attestazione. attested_by contiene solo l’ID utente: Elencare gli utenti dell’organizzazione fornisce il nome e l’indirizzo email di ogni membro attuale. Prima di aggiungere questi scope, consulta Chi può vedere chi ha attestato.
L’endpoint non restituisce commenti, anche quando la pagina Security posture ne mostra uno: ogni comment è null, e comments_status è not_enabled o not_permitted. Quindi not_enabled e un commento null non significano che l’attestazione non abbia un commento. comments_status indica come interpretare un commento null, e lo schema definisce questi valori.
comments_status | Significato |
|---|---|
not_permitted | La chiave API non dispone né di read:compliance_user_data né di read:org_audit, quindi ogni comment e ogni attested_by è null. |
requires_organization_key | La chiave API non è stata creata nell’organizzazione, come nel caso di una chiave per l’organizzazione padre, quindi ogni comment è null. Riprovare non serve. |
available | I commenti sono stati letti, quindi un commento null significa che non ce n’è uno, o che è stato salvato pochi istanti fa. |
not_enabled | Questo endpoint non restituisce commenti per l’organizzazione, quindi ogni comment è null. |
unavailable | Non è stato possibile leggere i commenti per questa risposta; una richiesta successiva potrebbe riuscire, ma alcune cause persistono finché il cliente non interviene. |
Possono essere aggiunti altri valori; considera un valore sconosciuto come unavailable.
Errori
Gli errori usano lo stesso corpo del resto della Compliance API; questa tabella elenca quelli che questo endpoint restituisce in modo specifico.
Stato ed error.type | Quando | Cosa fare |
|---|---|---|
400 invalid_request_error | anthropic-version è mancante o non valido, la Compliance API non è abilitata per l’organizzazione padre, oppure è presente un parametro di query. | Correggi ciò che indica error.message. |
401 authentication_error | La chiave è mancante, non riconosciuta, oppure non è una Compliance Access Key o una chiave Admin API. | Invia una Compliance Access Key valida in x-api-key. |
403 permission_error | La chiave non può chiamare questo endpoint, di solito perché non dispone né di read:compliance_org_data né di read:org_audit. | Usa una chiave con uno dei due scope. |
404 not_found_error | Consulta le cause elencate dopo questa tabella. | Non riprovare immediatamente, e non interpretarlo mai come assenza di controlli non superati. |
429 rate_limit_error | Il limite di velocità condiviso della Compliance API, o il limite più basso di questo endpoint, è esaurito; error.message indica quale. | Attendi retry-after; consulta 429 Too Many Requests. |
503 overloaded_error, con error.details.error_code pari a posture_evaluation_failed | Non è stato possibile produrre il risultato. | Attendi retry-after, poi riprova; se si ripresenta per una singola organizzazione nelle esecuzioni successive, contatta il supporto Anthropic una sola volta. |
503 senza error_code, oppure 504 timeout_error | Un errore temporaneo. | Riprova con backoff esponenziale. |
Cause di un 404:
organization_idnon è un UUID, non indica alcuna organizzazione, oppure indica un’organizzazione eliminata.organization_idindica l’organizzazione padre, un’organizzazione sotto un’altra organizzazione padre, oppure un’organizzazione che una chiave per una singola organizzazione non copre.- L’organizzazione non è su Claude Enterprise, oppure Security posture non è disponibile per essa, come nel caso di un’organizzazione Claude Console.
- La pagina Security posture è stata disattivata per l’organizzazione (vedi Disponibilità di Security posture).
- Security posture è disponibile per l’organizzazione, ma l’endpoint non la serve.
- Non è stato possibile verificare la disponibilità; una richiesta successiva può riuscire.
Ogni 404 ha lo stesso corpo, così come un percorso che non esiste.
Aggiornamento dei dati ed effetti collaterali
L’endpoint valuta ogni controllo quando lo chiami, e evaluated_at è quel momento.
- Una modifica degli ultimi minuti potrebbe non comparire.
- Un risultato può cambiare senza che sia cambiata alcuna impostazione, ad esempio quando arriva una data di fine o Anthropic modifica un valore consigliato.
- Se Anthropic riformula un valore attuale, un rischio accettato su di esso non è più in vigore.
- Una chiamata non archivia alcun risultato e non fa terminare alcuna attestazione.
- Ogni richiesta che supera le verifiche di chiave, scope e versione senza un parametro di query registra un’attività
compliance_api_accessed, sia che riesca sia che fallisca; il suourlindica l’organizzazione letta, eorganization_uuidènullper una chiave per l’organizzazione padre.
Questa pagina ti è stata utile?