Справочник по результатам Security posture
Справочные сведения о конечной точке Compliance API, которая возвращает текущие результаты Security posture для организации: запрос, поля ответа, значение каждого статуса и ошибки.
Эта конечная точка возвращает записи для большинства мер безопасности организации, оценённых в момент запроса, вместе с подтверждением Security posture, которое ответ содержит для каждой из них. Вам нужен Compliance Access Key, охватывающий организацию, с областью действия read:compliance_org_data или read:org_audit; в разделе Доступность Security posture указано, какие организации можно прочитать.
Запрос
Отправьте запрос GET на /v1/compliance/organizations/{organization_id}/security_posture. Каждый вызов читает одну организацию, и ответ не разбивается на страницы.
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"| Элемент | Правило |
|---|---|
organization_id | uuid связанной организации, полученный через Список организаций; любое другое значение возвращает 404. |
| Ключ | Ключ для родительской организации может указывать любую связанную организацию, а ключ для отдельной организации может указывать только эту организацию. |
anthropic-version | Обязателен; запрос без него возвращает 400. |
| Параметры запроса | Отсутствуют; запрос с любым параметром запроса возвращает 400. |
Ответ
Следующий сокращённый пример показывает четыре из мер, которые может содержать ответ. Это ответ на запрос с ключом, у которого есть read:compliance_org_data и 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"
}
}
}
]
}Каждое поле присутствует всегда, а поле без значения равно null и никогда не опускается. Время содержит либо ноль, либо шесть знаков дробной части, поэтому сравнивайте время как время, а не как строки.
Поля верхнего уровня
| Поле | Тип | Описание |
|---|---|---|
type | строка | Всегда security_posture. |
organization_id | строка | UUID организации. |
evaluated_at | строка (RFC 3339, UTC) | Время, в которое была оценена каждая мера. |
comments_status | строка | Были ли прочитаны комментарии к подтверждениям; см. Кто подтвердил, и комментарии. |
controls | массив объектов | Меры организации; массив никогда не бывает пустым. |
Поля controls[]
| Поле | Тип | Описание |
|---|---|---|
id | строка | Идентификатор меры, одинаковый для всех организаций и никогда не меняющийся. |
display_name | строка | Отображаемое название меры в виде отображаемого текста на английском языке, формулировка которого может меняться. |
section | строка | Раздел, к которому относится мера, — один из десяти, перечисленных после этой таблицы; могут добавляться новые значения, поэтому считайте неизвестное значение отдельным разделом. |
setting_name | строка или null | name записи в действующих настройках организации, которую считывает эта мера; null, если мера не считывает такую запись. |
status | строка | Причина результата меры; см. Значения статуса. |
rating | строка | Результат меры, который следует из status; см. Значения статуса. |
current_value | строка или null | Текущее значение в виде отображаемого текста на английском языке, формулировка которого может меняться; null для вручную подтверждаемой меры или если значение не было прочитано. |
desired_state | строка или null | Рекомендуемое значение в виде отображаемого текста на английском языке, формулировка которого может меняться; null, если для этой организации его нет. |
attestation | объект или null | Подтверждение, которое ответ содержит, в том числе пока оно не действует; null, пока status равен descriptive, not_applicable или not_evaluated, а также в этих случаях. |
section принимает одно из значений: identity_access, data_privacy, capabilities, connectors_integrations, chats_desktop_mdm, cowork_admin_console, cowork_desktop_mdm, claude_code_admin_console, claude_code_managed_settings и healthy_adoption.
Чтобы сравнивать значения в коде, найдите setting_name в действующих настройках той же организации. Поиск может ничего не найти, а две меры могут использовать один и тот же setting_name.
Поля attestation
| Поле | Тип | Описание |
|---|---|---|
state | строка | Действует ли подтверждение; см. Состояния подтверждения. |
attested_at | строка (RFC 3339, UTC) | Когда было сделано подтверждение. |
comment | строка или null | Комментарий, сохранённый вместе с подтверждением, длиной не более 2 000 символов; null, если комментария нет или если comments_status не равен available. |
attested_by | объект или null | Человек, сделавший подтверждение; null, если у ключа нет ни read:compliance_user_data, ни read:org_audit, если учётная запись этого человека удалена или находится в процессе удаления, или если конечная точка не возвращает для организации, кто сделал подтверждение. |
Поля attested_by
| Поле | Тип | Описание |
|---|---|---|
type | строка | Всегда user_actor. |
user_id | строка | ID пользователя, начинающийся с user_. |
Значения статуса
status указывает причину результата меры, и каждому статусу соответствует один rating.
status | Вид меры | Значение | rating | На странице |
|---|---|---|---|---|
passed | автоматически проверяемая | Текущее значение соответствует рекомендуемому значению. | passed | Пройдено |
matches_profile | автоматически проверяемая | Текущее значение равно рекомендуемому значению. | passed | Пройдено |
exceeds_baseline | автоматически проверяемая | Текущее значение строже рекомендуемого значения. | passed | Пройдено |
failed_check_accepted_risk | автоматически проверяемая | Автоматическая проверка завершается неуспешно, и действует принятый риск. | passed | Пройдено |
failed | автоматически проверяемая или вручную подтверждаемая | Текущее значение не соответствует рекомендуемому значению, или такой результат даёт подтверждение, которое ответ опускает. | failed | Не пройдено или Пройдено при действующем подтверждении Выполнено |
review | автоматически проверяемая | Текущее значение мягче рекомендуемого значения. | failed | Не пройдено |
attested_completed | вручную подтверждаемая | Действует подтверждение со значением Выполнено (completed). | passed | Пройдено |
attested_accepted_risk | вручную подтверждаемая | Действует подтверждение со значением Принятый риск (accepted_risk). | passed | Пройдено |
not_attested | вручную подтверждаемая | Нет действующего подтверждения. | not_attested | Не подтверждено |
attestation_not_enabled | вручную подтверждаемая | Никто не может подтвердить эту меру. | not_attested | Справочно |
descriptive | справочная | Мера отображается в отчёте, но не получает результат. | descriptive | Справочно |
not_applicable | любая | Мера не применяется к организации. | descriptive | Справочно |
not_evaluated | любая | Не удалось прочитать настройку или другую настройку, которая определяет, применяется ли мера. | descriptive | Справочно |
Ни одно поле не указывает вид меры; для failed значение null в current_value означает вручную подтверждаемую меру. Могут добавляться новые значения, поэтому учитывайте меру с неизвестным status по её rating, а меру с неизвестным rating не считайте пройденной. Статус review и состояние подтверждения review_due между собой не связаны.
Состояния подтверждения
state указывает, действует ли подтверждение, которое содержит ответ.
state | Значение |
|---|---|
in_force | Подтверждение действует. |
review_due | Наступила дата окончания. |
setting_changed | Проверка завершается неуспешно на значении, отличном от того, риск которого был принят, или принятый риск уже был записан как переставший действовать. |
check_passing | Проверка завершается успешно, поэтому нет риска, который нужно принимать. |
Когда применимо более одной причины, ответ содержит первую из check_passing, setting_changed и review_due. Начиная с 00:00 UTC в дату своего окончания подтверждение не действует. В ответе нет даты окончания, поэтому всё определяет state; сохранённая дата окончания — это поле review_date активности подтверждения. Подтверждение с неизвестным state считайте недействующим.
Как подтверждение отображается в ответе
Ответ содержит одни подтверждения и опускает другие, поэтому null в attestation не доказывает, что никто не сделал подтверждение.
| Вид меры | Подтверждено как | status | rating | attestation |
|---|---|---|---|---|
| Вручную подтверждаемая | Нет подтверждения | not_attested или attestation_not_enabled, если никто не может выполнять подтверждения | not_attested | null |
| Вручную подтверждаемая | Выполнено | attested_completed | passed | Содержится |
| Вручную подтверждаемая | Принятый риск | attested_accepted_risk | passed | Содержится |
| Вручную подтверждаемая | Не пройдено (control_failed) | failed | failed | null: никогда не содержится |
| Автоматически проверяемая, проверка не пройдена | Нет подтверждения | failed или review | failed | null |
| Автоматически проверяемая, проверка не пройдена | Принятый риск | failed_check_accepted_risk | passed | Содержится |
| Автоматически проверяемая, проверка не пройдена | Выполнено | failed, даже если автоматическая проверка даёт review | failed | null: никогда не содержится |
| Автоматически проверяемая, проверка не пройдена | Не пройдено | status, который даёт автоматическая проверка | failed | null: никогда не содержится |
| Автоматически проверяемая, проверка пройдена | Нет подтверждения | passed, matches_profile или exceeds_baseline | passed | null |
| Автоматически проверяемая, проверка пройдена | Выполнено | status, который даёт автоматическая проверка | passed | null: никогда не содержится |
| Автоматически проверяемая, проверка пройдена | Принятый риск | status, который даёт автоматическая проверка | passed | null, пока проверка завершается успешно на принятом значении |
| Автоматически проверяемая, проверка пройдена | Не пройдено | failed | failed | null: никогда не содержится |
| Справочная | Любое значение | descriptive | descriptive | null: никогда не содержится |
| Любая, пока подтверждение не действует | Значение, которое по одной из предыдущих строк содержится в ответе | Как без подтверждения | Как без подтверждения | Содержится, со state, отличным от in_force |
| Любая, пока подтверждение не действует | Значение, которое в одной из предыдущих строк опускается | Как без подтверждения | Как без подтверждения | null |
Каждая строка, кроме двух последних, справедлива, пока подтверждение действует. Для автоматически проверяемой меры подтверждение не действует, пока значение, которое считывает проверка, отличается от того, при котором подтверждение было сохранено. Каждое подтверждение, которое ответ содержит для автоматически проверяемой меры, является принятым риском. Лента активности также записывает подтверждения тех видов, которые ответ опускает.
Подсчёт результатов
Проверьте четыре момента при подсчёте мер по rating.
| Если вы считаете | Также проверьте |
|---|---|
Пройдено (passed) | Сюда входит каждая мера с действующим принятым риском, поэтому ищите failed_check_accepted_risk и attested_accepted_risk. |
Не пройдено (failed) | Сюда входит мера, подтверждённая как Не пройдено (control_failed), а также мера с автоматической проверкой, которая завершается неуспешно, при действующем подтверждении Выполнено — её страница Security posture показывает как Пройдено. |
Справочно (descriptive) | Здесь может скрываться мера, которую не удалось прочитать, поэтому ищите not_evaluated. |
| Все меры | Мера, отсутствующая в ответе, не считается пройденной и нигде не называется, поэтому сравнивайте значения id с теми, которые вы видели для этой организации. |
Кто подтвердил, и комментарии
attested_by заполняется только для ключа, у которого есть read:compliance_user_data вместе с read:compliance_org_data или есть read:org_audit. Ключ только с read:compliance_user_data получает 403. user_id в attested_by совпадает с user_id в actor активности подтверждения. attested_by содержит только идентификатор пользователя: Список пользователей организации предоставляет имя и адрес электронной почты каждого текущего участника. Прежде чем добавлять эти области действия, ознакомьтесь с разделом Кто может видеть, кто выполнил подтверждение.
Конечная точка не возвращает комментарии, даже если на странице Security posture комментарий отображается: каждый comment равен null, а comments_status равен not_enabled или not_permitted. Поэтому not_enabled и комментарий, равный null, не означают, что у подтверждения нет комментария. comments_status указывает, как интерпретировать комментарий, равный null, и схема определяет эти значения.
comments_status | Значение |
|---|---|
not_permitted | У ключа API нет ни read:compliance_user_data, ни read:org_audit, поэтому каждый comment и каждый attested_by равен null. |
requires_organization_key | Ключ API был создан не в этой организации, как в случае с ключом для родительской организации, поэтому каждый comment равен null. Повторная попытка не поможет. |
available | Комментарии были прочитаны, поэтому комментарий, равный null, означает, что комментария нет или что он был сохранён несколько мгновений назад. |
not_enabled | Эта конечная точка не возвращает комментарии для организации, поэтому каждый comment равен null. |
unavailable | Не удалось прочитать комментарии для этого ответа; последующий запрос может завершиться успешно, но некоторые причины сохраняются, пока клиент не примет меры. |
Могут добавляться новые значения; неизвестное значение считайте равным unavailable.
Ошибки
Ошибки используют то же тело, что и остальной Compliance API; в этой таблице перечислены те, которые эта конечная точка возвращает по-своему.
Статус и error.type | Когда | Что делать |
|---|---|---|
400 invalid_request_error | anthropic-version отсутствует или недопустим, Compliance API не включён для родительской организации или указан параметр запроса. | Исправьте то, что указано в error.message. |
401 authentication_error | Ключ отсутствует, не распознан или не является ни Compliance Access Key, ни ключом Admin API. | Отправьте действительный Compliance Access Key в x-api-key. |
403 permission_error | Ключу не разрешено вызывать эту конечную точку, обычно потому, что у него нет ни read:compliance_org_data, ни read:org_audit. | Используйте ключ с любой из этих областей действия. |
404 not_found_error | См. причины, перечисленные после этой таблицы. | Не повторяйте запрос сразу и никогда не интерпретируйте это как отсутствие мер, не прошедших проверку. |
429 rate_limit_error | Общее ограничение скорости Compliance API или более низкое ограничение этой конечной точки исчерпано; error.message указывает, какое именно. | Дождитесь retry-after; см. 429 Too Many Requests. |
503 overloaded_error с error.details.error_code, равным posture_evaluation_failed | Не удалось получить результат. | Дождитесь retry-after и повторите запрос; если ошибка повторяется для одной организации при последующих запусках, обратитесь в службу поддержки Anthropic один раз. |
503 без error_code или 504 timeout_error | Временный сбой. | Повторите запрос с экспоненциальной задержкой. |
Причины ошибки 404:
organization_idне является UUID, не указывает ни на одну организацию или указывает на удалённую.organization_idуказывает на родительскую организацию, на организацию под другой родительской организацией или на организацию, которую не охватывает ключ для отдельной организации.- Организация не использует Claude Enterprise, или функция Security posture ей недоступна, как в случае организации Claude Console.
- Для организации страницу Security posture отключили (см. Доступность Security posture).
- Функция Security posture доступна организации, но конечная точка её не обслуживает.
- Не удалось проверить доступность; последующий запрос может завершиться успешно.
У каждой ошибки 404 одинаковое тело — такое же, как у ответа на несуществующий путь.
Актуальность и побочные эффекты
Конечная точка оценивает каждую меру в момент вызова, и evaluated_at — это время вызова.
- Изменение, сделанное в последние несколько минут, может не отобразиться.
- Результат может измениться без изменения настроек, например когда наступает дата окончания или Anthropic меняет рекомендуемое значение.
- Если Anthropic изменит формулировку текущего значения, принятый риск для него не действует.
- Вызов не сохраняет результат и не прекращает действие подтверждений.
- Каждый запрос, который проходит проверки ключа, области действия и версии и не содержит параметра запроса, записывает одну активность
compliance_api_accessedнезависимо от того, успешен он или нет; еёurlуказывает на прочитанную организацию, аorganization_uuidравенnullдля ключа для родительской организации.
Эта страница была полезной?