Claude Platform Docs
관리Security posture

Security posture 결과 참조

조직의 현재 Security posture 결과를 반환하는 Compliance API 엔드포인트의 요청, 응답 필드, 각 결과 사유의 의미, 오류를 확인합니다.

이 엔드포인트는 요청 시점에 평가된 조직의 보안 통제 대부분에 대해 각각 하나의 항목을 반환하며, 각 통제에 대해 응답에 나타나는 Security posture 진술이 함께 포함됩니다. 해당 조직을 포함하고 read:compliance_org_data 또는 read:org_audit 범위를 가진 Compliance Access Key가 필요합니다. 읽을 수 있는 조직은 Security posture 사용 가능 여부에서 확인하세요.

요청

/v1/compliance/organizations/{organization_id}/security_posture로 GET 요청을 보내세요. 각 호출은 하나의 조직을 읽으며, 응답은 페이지로 나뉘지 않습니다.

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"
항목규칙
organization_id조직 나열에서 가져온 연결된 조직의 uuid입니다. 그 밖의 값은 어떤 값이든 404를 반환합니다.
키상위 조직용 키는 연결된 조직 중 어느 조직이든 지정할 수 있으며, 단일 조직용 키는 해당 조직만 지정할 수 있습니다.
anthropic-version필수입니다. 이 헤더가 없는 요청은 400을 반환합니다.
쿼리 매개변수없습니다. 쿼리 매개변수가 하나라도 포함된 요청은 400을 반환합니다.

응답

다음 축약 예시는 응답에 포함될 수 있는 통제 중 네 가지를 보여 줍니다. read:compliance_org_data와 read:compliance_user_data를 보유한 키에 대한 응답입니다.

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"
        }
      }
    }
  ]
}

모든 필드는 항상 존재하며, 값이 없는 필드는 절대 생략되지 않고 null이 됩니다. 시간 값은 소수 자릿수가 없거나 여섯 자리이므로, 시간은 문자열이 아닌 시간으로 비교하세요.

최상위 필드

필드유형설명
typestring항상 security_posture입니다.
organization_idstring조직의 UUID입니다.
evaluated_atstring (RFC 3339, UTC)모든 통제가 평가된 시점입니다.
comments_statusstring진술 코멘트를 읽었는지 여부입니다. 진술자 및 코멘트를 참조하세요.
controlsarray of objects조직의 통제이며, 절대 비어 있지 않습니다.

controls[] 필드

필드유형설명
idstring통제의 식별자로, 모든 조직에서 동일하며 절대 변경되지 않습니다.
display_namestring통제의 표시 이름으로, 표현이 바뀔 수 있는 영어 표시 텍스트입니다.
sectionstring통제가 속한 섹션으로, 이 표 뒤에 나열된 10개 섹션 중 하나입니다. 값이 추가될 수 있으므로 알 수 없는 값은 별도의 섹션으로 취급하세요.
setting_namestring 또는 null이 통제가 읽는, 조직의 유효 설정 항목의 name입니다. 이러한 항목을 읽지 않는 경우 null입니다.
statusstring통제 결과의 사유입니다. 결과 사유 값을 참조하세요.
ratingstring통제의 결과로, status에 따라 정해집니다. 결과 사유 값을 참조하세요.
current_valuestring 또는 null현재 값으로, 표현이 바뀔 수 있는 영어 표시 텍스트입니다. 수동 통제이거나 값을 읽지 못한 경우 null입니다.
desired_statestring 또는 null권장 값으로, 표현이 바뀔 수 있는 영어 표시 텍스트입니다. 이 조직에 권장 값이 없는 경우 null입니다.
attestationobject 또는 null응답에 나타나는 진술로, 진술이 유효하지 않은 동안에도 포함됩니다. status가 descriptive, not_applicable 또는 not_evaluated인 동안과 이러한 경우에는 null입니다.

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 필드

필드유형설명
statestring진술이 유효한지 여부입니다. 진술 상태를 참조하세요.
attested_atstring (RFC 3339, UTC)진술이 이루어진 시점입니다.
commentstring 또는 null진술과 함께 저장된 최대 2,000자의 코멘트입니다. 코멘트가 없거나 comments_status가 available이 아닌 경우 null입니다.
attested_byobject 또는 null진술한 사람입니다. 키가 read:compliance_user_data와 read:org_audit 중 어느 것도 보유하지 않은 경우, 해당 사람의 계정이 삭제되었거나 삭제 중인 경우, 또는 엔드포인트가 진술한 사람을 조직에 대해 반환하지 않는 경우 null입니다.

attested_by 필드

필드유형설명
typestring항상 user_actor입니다.
user_idstring사용자의 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의 경우 current_value가 null이면 수동 통제입니다. 값이 추가될 수 있으므로, 알 수 없는 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는 유효하지 않은 것으로 간주하세요.

응답에 진술이 나타나는 방식

응답에는 일부 진술만 나타나고 나머지는 제외되므로, attestation이 null이라고 해서 아무도 진술하지 않았다는 것이 증명되지는 않습니다.

통제 종류진술 값statusratingattestation
수동진술 없음not_attested 또는 아무도 진술할 수 없는 경우 attestation_not_enablednot_attestednull
수동완료attested_completedpassed포함됨
수동위험 수용attested_accepted_riskpassed포함됨
수동실패(control_failed)failedfailednull: 절대 포함되지 않음
자동, 검사 기준 미충족진술 없음failed 또는 reviewfailednull
자동, 검사 기준 미충족위험 수용failed_check_accepted_riskpassed포함됨
자동, 검사 기준 미충족완료자동 검사가 review를 부여하는 경우에도 failedfailednull: 절대 포함되지 않음
자동, 검사 기준 미충족실패자동 검사가 부여하는 statusfailednull: 절대 포함되지 않음
자동, 검사 기준 충족진술 없음passed, matches_profile 또는 exceeds_baselinepassednull
자동, 검사 기준 충족완료자동 검사가 부여하는 statuspassednull: 절대 포함되지 않음
자동, 검사 기준 충족위험 수용자동 검사가 부여하는 statuspassed수용된 값에서 검사 기준을 충족하는 동안 null
자동, 검사 기준 충족실패failedfailednull: 절대 포함되지 않음
정보 제공용어떤 값이든descriptivedescriptivenull: 절대 포함되지 않음
어느 종류든, 진술이 유효하지 않은 동안앞의 행에서 응답에 포함되는 값진술이 없을 때와 같음진술이 없을 때와 같음포함됨, state는 in_force 이외의 값
어느 종류든, 진술이 유효하지 않은 동안앞의 행에서 응답에서 제외되는 값진술이 없을 때와 같음진술이 없을 때와 같음null

마지막 두 행을 제외한 각 행은 진술이 유효한 동안 적용됩니다. 자동 통제에서는 검사가 읽는 값이 진술이 저장될 때의 값과 다른 동안에는 진술이 유효하지 않습니다. 자동 통제에서 응답에 나타나는 진술은 모두 위험 수용입니다. Activity Feed에는 응답에서 제외되는 종류의 진술도 기록됩니다.

결과 집계

rating별로 통제를 집계할 때 네 가지 사항을 확인하세요.

집계 대상함께 확인할 사항
통과(passed)위험 수용이 유효한 모든 통제가 포함되므로 failed_check_accepted_risk와 attested_accepted_risk를 확인하세요.
실패(failed)실패(control_failed)로 진술된 통제와, 완료 진술이 유효하지만 자동 검사 기준을 충족하지 못한 통제가 포함됩니다. 후자는 Security posture 페이지에 통과로 나타납니다.
정보 제공(descriptive)읽을 수 없었던 통제가 가려질 수 있으므로 not_evaluated를 확인하세요.
모든 통제응답에 없는 통제는 통과로 간주하지 않으며 이름도 나타나지 않으므로, id 값을 해당 조직에서 이전에 확인한 값과 비교하세요.

진술자 및 코멘트

attested_by는 read:compliance_org_data와 함께 read:compliance_user_data를 보유하거나 read:org_audit를 보유한 키에 대해서만 채워집니다. read:compliance_user_data만 보유한 키는 403을 받습니다. attested_by의 user_id는 진술 활동에 있는 actor의 user_id와 같습니다. attested_by에는 사용자 ID만 들어 있으며, 각 현재 구성원의 이름과 이메일 주소는 조직 사용자 나열에서 제공됩니다. 이러한 범위를 추가하기 전에 진술한 사람을 볼 수 있는 사람을 참조하세요.

이 엔드포인트는 Security posture 페이지에 코멘트가 표시되는 경우에도 코멘트를 반환하지 않습니다. 모든 comment는 null이며, comments_status는 not_enabled 또는 not_permitted입니다. 따라서 not_enabled와 null 코멘트는 진술에 코멘트가 없다는 뜻이 아닙니다. comments_status는 null 코멘트를 어떻게 해석해야 하는지 알려 주며, 스키마에는 이 값들이 정의되어 있습니다.

comments_status의미
not_permittedAPI 키가 read:compliance_user_data와 read:org_audit 중 어느 것도 보유하지 않으므로 모든 comment와 모든 attested_by가 null입니다.
requires_organization_keyAPI 키가 상위 조직용 키 등 해당 조직에서 생성되지 않은 키이므로 모든 comment가 null입니다. 다시 시도해도 해결되지 않습니다.
available코멘트를 읽었으므로, null 코멘트는 코멘트가 없거나 방금 저장되었음을 의미합니다.
not_enabled이 엔드포인트는 해당 조직의 코멘트를 반환하지 않으므로 모든 comment가 null입니다.
unavailable이 응답에서는 코멘트를 읽을 수 없었습니다. 이후 요청은 성공할 수도 있지만, 일부 원인은 고객이 조치할 때까지 지속됩니다.

값이 추가될 수 있습니다. 알 수 없는 값은 unavailable로 간주하세요.

오류

오류는 나머지 Compliance API와 동일한 본문을 사용합니다. 이 표는 이 엔드포인트가 고유한 방식으로 반환하는 오류를 나열합니다.

상태 코드 및 error.type발생 시점조치
400 invalid_request_erroranthropic-version이 없거나 유효하지 않은 경우, 상위 조직에 Compliance API가 활성화되지 않은 경우, 또는 쿼리 매개변수가 있는 경우입니다.error.message에 명시된 문제를 수정하세요.
401 authentication_error키가 없거나, 인식되지 않거나, Compliance Access Key 또는 Admin API 키가 아닌 경우입니다.x-api-key에 유효한 Compliance Access 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를 참조하세요.
error.details.error_code가 posture_evaluation_failed인 503 overloaded_error결과를 생성할 수 없었습니다.retry-after만큼 기다린 후 재시도하세요. 이후 실행에서도 특정 조직에서 다시 발생하면 Anthropic 지원팀에 한 번 문의하세요.
error_code가 없는 503 또는 504 timeout_error일시적인 실패입니다.지수 백오프로 재시도하세요.

404의 원인:

  • organization_id가 UUID가 아니거나, 어떤 조직도 가리키지 않거나, 삭제된 조직을 가리킵니다.
  • organization_id가 상위 조직, 다른 상위 조직 아래의 조직, 또는 단일 조직용 키가 포함하지 않는 조직을 가리킵니다.
  • 조직이 Claude Enterprise를 사용하지 않거나, Claude Console 조직처럼 Security posture를 사용할 수 없습니다.
  • 해당 조직에 대해 Security posture 페이지가 꺼짐으로 설정되었습니다(Security posture 사용 가능 여부 참조).
  • 조직에서 Security posture를 사용할 수 있지만, 엔드포인트가 해당 조직을 지원하지 않습니다.
  • 사용 가능 여부를 확인할 수 없었습니다. 이후 요청은 성공할 수 있습니다.

모든 404는 존재하지 않는 경로와 마찬가지로 동일한 본문을 가집니다.

최신성 및 부수 효과

엔드포인트는 호출 시점에 모든 통제를 평가하며, evaluated_at이 그 시점입니다.

  • 최근 몇 분 이내의 변경 사항은 반영되지 않을 수 있습니다.
  • 설정이 변경되지 않아도 결과가 바뀔 수 있습니다. 예를 들어 만료일이 되거나 Anthropic이 권장 값을 변경하는 경우입니다.
  • Anthropic이 현재 값의 표현을 변경하면, 해당 값에 대한 위험 수용은 유효하지 않습니다.
  • 호출은 결과를 저장하지 않으며 진술을 종료시키지 않습니다.
  • 키, 범위, 버전 검사를 통과하고 쿼리 매개변수가 없는 각 요청은 성공 여부와 관계없이 compliance_api_accessed 활동을 하나 기록합니다. 이 활동의 url은 읽은 조직을 나타내며, 상위 조직용 키의 경우 organization_uuid는 null입니다.

이 페이지가 도움이 되었나요?