Referência de resultados de Security posture
Consulte o endpoint da Compliance API que retorna os resultados atuais de Security posture de uma organização: a requisição, os campos da resposta, o que cada status significa e os erros.
Este endpoint retorna uma entrada para a maioria dos controles de segurança de uma organização, avaliados no momento da requisição, com a atestação do Security posture que a resposta exibe para cada controle. Você precisa de uma Compliance Access Key que cubra a organização, com o escopo read:compliance_org_data ou read:org_audit; Disponibilidade do Security posture informa quais organizações podem ser lidas.
Requisição
Envie uma requisição GET para /v1/compliance/organizations/{organization_id}/security_posture. Cada chamada lê uma organização, e a resposta não é paginada.
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"| Item | Regra |
|---|---|
organization_id | O uuid de uma organização vinculada obtido em Listar organizações; qualquer outro valor retorna 404. |
| Chave | Uma chave da organização pai pode indicar qualquer organização vinculada, e uma chave de uma única organização pode indicar apenas essa organização. |
anthropic-version | Obrigatório; uma requisição sem ele retorna 400. |
| Parâmetros de consulta | Nenhum; uma requisição com qualquer parâmetro de consulta retorna 400. |
Resposta
O exemplo resumido a seguir mostra quatro dos controles que uma resposta pode conter. É a resposta para uma chave que possui 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"
}
}
}
]
}Todo campo está sempre presente, e um campo sem valor é null, nunca omitido. Um horário não tem dígitos fracionários ou tem exatamente seis, então compare horários como horários, não como strings.
Campos de nível superior
| Campo | Tipo | Descrição |
|---|---|---|
type | string | Sempre security_posture. |
organization_id | string | O UUID da organização. |
evaluated_at | string (RFC 3339, UTC) | O momento em que todos os controles foram avaliados. |
comments_status | string | Se os comentários das atestações foram lidos; consulte Quem atestou, e comentários. |
controls | array de objetos | Os controles da organização, nunca vazio. |
Campos de controls[]
| Campo | Tipo | Descrição |
|---|---|---|
id | string | O identificador do controle, que é o mesmo para todas as organizações e nunca muda. |
display_name | string | O nome de exibição do controle, como texto de exibição em inglês cuja redação pode mudar. |
section | string | A seção à qual o controle pertence, uma das dez listadas depois desta tabela; mais valores podem ser adicionados, então trate um valor desconhecido como uma seção própria. |
setting_name | string ou null | O name da entrada nas configurações efetivas da organização que este controle lê; null quando ele não lê nenhuma entrada desse tipo. |
status | string | O motivo do resultado do controle; consulte Valores de status. |
rating | string | O resultado do controle, que decorre de status; consulte Valores de status. |
current_value | string ou null | O valor atual, como texto de exibição em inglês cuja redação pode mudar; null em um controle manual ou quando nenhum valor foi lido. |
desired_state | string ou null | O valor recomendado, como texto de exibição em inglês cuja redação pode mudar; null quando não há nenhum para esta organização. |
attestation | objeto ou null | A atestação que a resposta exibe, também enquanto ela não estiver em vigor; null enquanto status for descriptive, not_applicable ou not_evaluated, e nestes casos. |
section é um de 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.
Para comparar valores em código, procure setting_name nas configurações efetivas da mesma organização. A busca pode não encontrar nada, e dois controles podem compartilhar um mesmo setting_name.
Campos de attestation
| Campo | Tipo | Descrição |
|---|---|---|
state | string | Se a atestação está em vigor; consulte Estados da atestação. |
attested_at | string (RFC 3339, UTC) | Quando a atestação foi feita. |
comment | string ou null | O comentário salvo com a atestação, de no máximo 2.000 caracteres; null se não houver nenhum, ou se comments_status não for available. |
attested_by | objeto ou null | A pessoa que atestou; null quando a chave não possui nem read:compliance_user_data nem read:org_audit, quando a conta dessa pessoa foi excluída ou está sendo excluída, ou quando o endpoint não retorna, para a organização, quem atestou. |
Campos de attested_by
| Campo | Tipo | Descrição |
|---|---|---|
type | string | Sempre user_actor. |
user_id | string | O ID do usuário, que começa com user_. |
Valores de status
status informa o motivo do resultado de um controle, e cada status tem um único rating.
status | Tipo de controle | Significado | rating | Na página |
|---|---|---|---|---|
passed | automático | O valor atual atende ao valor recomendado. | passed | Aprovado |
matches_profile | automático | O valor atual é igual ao valor recomendado. | passed | Aprovado |
exceeds_baseline | automático | O valor atual é mais rigoroso que o valor recomendado. | passed | Aprovado |
failed_check_accepted_risk | automático | A verificação automática falha, e um risco aceito está em vigor. | passed | Aprovado |
failed | automático ou manual | O valor atual não atende ao valor recomendado, ou uma atestação que a resposta omite produz este resultado. | failed | Reprovado, ou Aprovado com uma atestação Concluído em vigor |
review | automático | O valor atual é mais permissivo que o valor recomendado. | failed | Reprovado |
attested_completed | manual | Uma atestação com o valor Concluído (completed) está em vigor. | passed | Aprovado |
attested_accepted_risk | manual | Uma atestação com o valor Risco aceito (accepted_risk) está em vigor. | passed | Aprovado |
not_attested | manual | Nenhuma atestação está em vigor. | not_attested | Não atestado |
attestation_not_enabled | manual | Ninguém pode atestar o controle. | not_attested | Descritivo |
descriptive | apenas informativo | O controle é reportado, não classificado. | descriptive | Descritivo |
not_applicable | qualquer | O controle não se aplica à organização. | descriptive | Descritivo |
not_evaluated | qualquer | A configuração, ou outra configuração que decide se o controle se aplica, não pôde ser lida. | descriptive | Descritivo |
Nenhum campo informa o tipo de controle; para failed, um current_value null indica um controle manual. Mais valores podem ser adicionados, então conte um controle com um status desconhecido pelo seu rating, e trate um rating desconhecido como não Aprovado. O status review e o estado da atestação review_due não estão relacionados.
Estados da atestação
state informa se a atestação que a resposta exibe está em vigor.
state | Significado |
|---|---|
in_force | A atestação está em vigor. |
review_due | A data de término chegou. |
setting_changed | A verificação falha em um valor diferente daquele cujo risco foi aceito, ou o risco aceito já foi registrado como encerrado. |
check_passing | A verificação passa, então não há risco a aceitar. |
Quando mais de um motivo se aplica, a resposta informa o primeiro entre check_passing, setting_changed e review_due. A partir de 00:00 UTC da sua data de término, uma atestação não está em vigor. A resposta não tem data de término, então state decide; uma data de término que foi salva é o review_date da atividade da atestação. Trate um state desconhecido como não em vigor.
Como uma atestação aparece na resposta
A resposta exibe algumas atestações e omite outras, então um attestation null não prova que ninguém atestou.
| Tipo de controle | Atestado como | status | rating | attestation |
|---|---|---|---|---|
| Manual | Sem atestação | not_attested, ou attestation_not_enabled quando ninguém pode atestar | not_attested | null |
| Manual | Concluído | attested_completed | passed | Exibida |
| Manual | Risco aceito | attested_accepted_risk | passed | Exibida |
| Manual | Reprovado (control_failed) | failed | failed | null: nunca exibida |
| Automático, a verificação falhou | Sem atestação | failed ou review | failed | null |
| Automático, a verificação falhou | Risco aceito | failed_check_accepted_risk | passed | Exibida |
| Automático, a verificação falhou | Concluído | failed, mesmo quando a verificação automática produz review | failed | null: nunca exibida |
| Automático, a verificação falhou | Reprovado | O status que a verificação automática produz | failed | null: nunca exibida |
| Automático, a verificação passou | Sem atestação | passed, matches_profile ou exceeds_baseline | passed | null |
| Automático, a verificação passou | Concluído | O status que a verificação automática produz | passed | null: nunca exibida |
| Automático, a verificação passou | Risco aceito | O status que a verificação automática produz | passed | null enquanto a verificação passa no valor aceito |
| Automático, a verificação passou | Reprovado | failed | failed | null: nunca exibida |
| Apenas informativo | Qualquer valor | descriptive | descriptive | null: nunca exibida |
| Qualquer, enquanto a atestação não estiver em vigor | Um valor que uma linha anterior exibe | Como sem atestação | Como sem atestação | Exibida, com um state diferente de in_force |
| Qualquer, enquanto a atestação não estiver em vigor | Um valor que uma linha anterior omite | Como sem atestação | Como sem atestação | null |
Cada linha, exceto as duas últimas, vale enquanto a atestação está em vigor. Em um controle automático, uma atestação não está em vigor enquanto o valor que a verificação lê for diferente daquele sobre o qual ela foi salva. Toda atestação que a resposta exibe em um controle automático é um risco aceito. O Activity Feed também registra atestações dos tipos que a resposta omite.
Contar resultados
Verifique quatro pontos ao contar controles por rating.
| Se você contar | Verifique também |
|---|---|
Aprovado (passed) | Inclui todo controle com um risco aceito em vigor, então procure failed_check_accepted_risk e attested_accepted_risk. |
Reprovado (failed) | Inclui um controle atestado como Reprovado (control_failed), e uma verificação automática com falha com uma atestação Concluído em vigor, que a página Security posture exibe como Aprovado. |
Descritivo (descriptive) | Pode ocultar um controle que não pôde ser lido, então procure not_evaluated. |
| Todos os controles | Um controle ausente da resposta não conta como Aprovado e não é nomeado, então compare os valores de id com os que você já viu para a organização. |
Quem atestou, e comentários
attested_by é preenchido apenas para uma chave que possui read:compliance_user_data junto com read:compliance_org_data, ou que possui read:org_audit. Uma chave apenas com read:compliance_user_data recebe um 403. O user_id em attested_by é o mesmo que o user_id do actor na atividade da atestação. attested_by contém apenas o ID de usuário: Listar usuários da organização fornece o nome e o endereço de e-mail de cada membro atual. Antes de adicionar esses escopos, consulte Quem pode ver quem atestou.
O endpoint não retorna comentários, mesmo quando a página Security posture mostra um: todo comment é null, e comments_status é not_enabled ou not_permitted. Portanto, not_enabled e um comentário null não significam que a atestação não tenha comentário. comments_status informa como interpretar um comentário null, e o esquema define estes valores.
comments_status | Significado |
|---|---|
not_permitted | A chave de API não possui nem read:compliance_user_data nem read:org_audit, então todo comment e todo attested_by é null. |
requires_organization_key | A chave de API não foi criada na organização, como acontece com uma chave da organização pai, então todo comment é null. Tentar novamente não ajuda. |
available | Os comentários foram lidos, então um comentário null significa que não há nenhum, ou que ele foi salvo há instantes. |
not_enabled | Este endpoint não retorna comentários para a organização, então todo comment é null. |
unavailable | Os comentários não puderam ser lidos para esta resposta; uma requisição posterior pode ter sucesso, mas algumas causas persistem até que o cliente tome uma ação. |
Mais valores podem ser adicionados; trate um valor desconhecido como unavailable.
Erros
Os erros usam o mesmo corpo que o restante da Compliance API; esta tabela lista os que este endpoint retorna de forma própria.
Status e error.type | Quando | O que fazer |
|---|---|---|
400 invalid_request_error | anthropic-version está ausente ou é inválido, a Compliance API não está habilitada para a organização pai, ou há um parâmetro de consulta. | Corrija o que error.message indicar. |
401 authentication_error | A chave está ausente, não é reconhecida, ou não é uma Compliance Access Key nem uma chave da Admin API. | Envie uma Compliance Access Key válida em x-api-key. |
403 permission_error | A chave não pode chamar este endpoint, geralmente porque não possui nem read:compliance_org_data nem read:org_audit. | Use uma chave com qualquer um dos escopos. |
404 not_found_error | Consulte as causas listadas após esta tabela. | Não tente novamente de imediato, e nunca o interprete como ausência de controles Reprovados. |
429 rate_limit_error | O limite de taxa compartilhado da Compliance API, ou o limite mais baixo deste endpoint, foi esgotado; error.message informa qual. | Aguarde retry-after; consulte 429 Too Many Requests. |
503 overloaded_error, com error.details.error_code igual a posture_evaluation_failed | O resultado não pôde ser produzido. | Aguarde retry-after e tente novamente; se isso se repetir para uma organização em execuções posteriores, entre em contato com o suporte da Anthropic uma única vez. |
503 sem error_code, ou 504 timeout_error | Uma falha temporária. | Tente novamente com backoff exponencial. |
Causas de um 404:
organization_idnão é um UUID, não corresponde a nenhuma organização, ou corresponde a uma organização excluída.organization_idcorresponde à organização pai, a uma organização sob outra organização pai, ou a uma que uma chave de organização única não cobre.- A organização não está no Claude Enterprise, ou o Security posture não está disponível para ela, como no caso de uma organização do Claude Console.
- A página Security posture foi desativada para a organização (veja Disponibilidade do Security posture).
- O Security posture está disponível para a organização, mas o endpoint não a atende.
- A disponibilidade não pôde ser verificada; uma requisição posterior pode ter sucesso.
Todo 404 tem o mesmo corpo, assim como um caminho que não existe.
Atualidade e efeitos colaterais
O endpoint avalia todos os controles quando você o chama, e evaluated_at é esse momento.
- Uma alteração feita nos últimos minutos pode não aparecer.
- Um resultado pode mudar sem que nenhuma configuração tenha mudado, por exemplo quando uma data de término chega ou a Anthropic altera um valor recomendado.
- Se a Anthropic alterar a redação de um valor atual, um risco aceito sobre ele deixa de estar em vigor.
- Uma chamada não armazena nenhum resultado e não encerra nenhuma atestação.
- Cada requisição que passa nas verificações de chave, escopo e versão sem um parâmetro de consulta registra uma atividade
compliance_api_accessed, seja ela bem-sucedida ou não; seuurlindica a organização lida, eorganization_uuidénullpara uma chave da organização pai.
Esta página foi útil?