claude "/claude-api help me configure a customer-managed encryption key with AWS KMS"이 가이드는 AWS KMS 키를 Anthropic 조직의 customer-managed encryption key(고객 관리형 암호화 키), 즉 CMEK로 구성하는 과정을 안내합니다.
CMEK 활성화는 영구적입니다. KMS 키가 삭제되거나 비활성화되면 Anthropic은 해당 키로 암호화된 데이터를 복구할 수 없습니다. 시작하기 전에 경고 및 제한 사항을 검토하세요.
kms:CreateKey 및 kms:PutKeyPolicy)이 있는 AWS 계정.Anthropic이 사용자의 암호화 키를 사용하도록 하려면, Anthropic의 IAM 역할에 데이터 암호화에 사용할 수 있는 KMS 키를 제공해야 합니다. Anthropic CMEK의 ARN은 다음과 같습니다:
arn:aws:iam::915198916910:role/anthropic-cmek-client-us이 게시된 ARN만 사용하세요. 이메일, 채팅 또는 온보딩 채널을 통해 제공된 식별자는 절대 신뢰하지 마세요.
교차 계정 키 정책으로 KMS 키 생성
키 정책은 Anthropic의 IAM 역할에 교차 계정 액세스를 부여합니다. 세 가지 문(statement)이 필요합니다:
kms:Encrypt 및 kms:Decrypt 작업으로, Anthropic이 워크스페이스 데이터를 보호하는 데이터 키를 암호화하고 복호화하는 데 사용합니다(봉투 암호화).DescribeKey에는 EncryptionContext 매개변수가 없어 이 작업에 EncryptionContext 조건을 적용하면 항상 거부되기 때문에 별도로 부여됩니다.export YOUR_ACCOUNT=$(aws sts get-caller-identity --query Account --output text)
aws kms create-key \
--region <region> \
--description "Anthropic CMEK" \
--key-usage ENCRYPT_DECRYPT \
--policy "{
\"Version\": \"2012-10-17\",
\"Statement\": [
{
\"Sid\": \"AccountRootAdmin\",
\"Effect\": \"Allow\",
\"Principal\": {\"AWS\": \"arn:aws:iam::${YOUR_ACCOUNT}:root\"},
\"Action\": \"kms:*\",
\"Resource\": \"*\"
},
{
\"Sid\": \"AllowAnthropicCMEKCrypto\",
\"Effect\": \"Allow\",
\"Principal\": {\"AWS\": \"arn:aws:iam::915198916910:role/anthropic-cmek-client-us\"},
\"Action\": [\"kms:Encrypt\", \"kms:Decrypt\"],
\"Resource\": \"*\",
\"Condition\": {
\"StringEquals\": {
\"kms:EncryptionContext:anthropic:compartment_uuid\": [
\"00000000-0000-0000-0000-000000000000\",
\"<compartment-uuid>\"
]
}
}
},
{
\"Sid\": \"AllowAnthropicCMEKDescribe\",
\"Effect\": \"Allow\",
\"Principal\": {\"AWS\": \"arn:aws:iam::915198916910:role/anthropic-cmek-client-us\"},
\"Action\": \"kms:DescribeKey\",
\"Resource\": \"*\"
}
]
}"출력에서 KeyMetadata.Arn을 기록해 두세요. 다음 단계에서 키를 등록할 때 필요합니다.
EncryptionContext 조건은 권장되지만 선택 사항입니다. Anthropic은 항상 워크스페이스의 컴파트먼트 ID를 암호화 컨텍스트에 포함하므로, 암호문은 조건과 관계없이 해당 컴파트먼트에 암호학적으로 바인딩됩니다. 조건을 추가하면 IAM 계층에서 심층 방어를 제공합니다. 조건 없이 시작하려면 AllowAnthropicCMEKCrypto 문에서 Condition 블록을 생략하고 나중에 kms:PutKeyPolicy로 추가하세요.
컴파트먼트 ID 찾기: 컴파트먼트 ID를 찾는 위치는 Claude Platform과 Claude Enterprise에서 다릅니다. Anthropic에 키 등록 아래의 Claude Platform 및 Claude Enterprise 탭을 참조하세요.
AWS Console에서도 키를 생성할 수 있습니다. 암호화 및 복호화 키 사용, 단일 리전 키, KMS 키 구성 요소 오리진을 가진 대칭 키를 선택하세요. 키 생성 마법사는 Review 단계에서 키 정책을 커밋합니다: 해당 단계의 키 사용 권한에 Anthropic의 계정 ID 915198916910을 추가하면, 생성된 정책은 EncryptionContext 조건 없이 Anthropic 계정 전체에 더 광범위한 작업(예: kms:ReEncrypt* 및 kms:GenerateDataKey*)을 부여하며, 검증은 여전히 성공합니다. 과도하게 허용적인 키를 남기지 않으려면 관리 권한만으로 마법사를 완료한 다음, 키의 Key policy 탭을 열고 JSON을 앞서 표시된 역할 범위 정책(anthropic-cmek-client-us 역할로 범위가 지정되고 EncryptionContext 조건이 포함된 세 가지 문)으로 교체하세요.




키를 등록하는 방법은 사용하는 제품에 따라 다릅니다.
컴파트먼트 ID 찾기: 각 워크스페이스에는 CMEK 데이터의 범위를 지정하는 컴파트먼트 ID가 있습니다. Claude Console의 Workspace > Security > Encryption keys(Compartment ID 필드)에서 찾거나, Get Workspace 엔드포인트가 반환하는 compartment_id 필드를 읽으세요. 앞의 키 정책에서 <compartment-uuid>를 해당 값으로 대체하세요.
키 검증은 키가 워크스페이스에 연결되기 전에 실행되므로, 항상 모두 0인 컴파트먼트 UUID(00000000-0000-0000-0000-000000000000)를 암호화 컨텍스트로 전송합니다. 실제 트래픽은 연결된 각 워크스페이스의 컴파트먼트 ID를 전송합니다.
모든 EncryptionContext 조건은 모두 0인 값과 키가 연결된 모든 워크스페이스의 컴파트먼트 ID를 허용해야 합니다. 키 설정을 다시 실행할 때마다 검증도 다시 실행되므로, 모두 0인 항목을 영구적으로 유지하세요.
키를 추가 워크스페이스에 연결하려면, 연결하기 전에 kms:PutKeyPolicy로 해당 워크스페이스의 컴파트먼트 ID를 조건에 추가하세요.
Anthropic에 키 등록
Admin API를 통해 외부 키 구성을 생성합니다.
Claude Platform on AWS를 사용하는 조직의 경우, 외부 키 엔드포인트는 아직 사용할 수 없습니다. 대신 Claude Console에서 키를 등록, 검증 및 연결하세요.
curl -sS https://api.anthropic.com/v1/organizations/external_keys \
-H "x-api-key: <anthropic-admin-api-key>" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"display_name": "<friendly-name>",
"geo": "us",
"provider_config": {
"type": "aws",
"kms_arn": "<key-arn-from-create-key-step>",
"role_arn": "arn:aws:iam::915198916910:role/anthropic-cmek-client-us"
}
}'응답에는 외부 키 ID가 포함됩니다:
{
"type": "external_key",
"id": "ekey_<id>",
"display_name": "<friendly-name>"
}키 검증
키에 대해 암호화 및 복호화 왕복(round-trip)을 트리거합니다.
curl -sS -X POST https://api.anthropic.com/v1/organizations/external_keys/ekey_<id>/validate \
-H "x-api-key: <anthropic-admin-api-key>" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{}'성공적인 응답은 다음과 같습니다:
{ "type": "external_key_validation", "status": "success", "error": null }검증이 실패하는 경우 일반적인 원인은 다음과 같습니다:
kms:EncryptionContext:anthropic:compartment_uuid 조건이 Anthropic이 전송하는 두 값 중 하나만 허용하는 경우, 불명확한 AccessDeniedException과 함께 검증은 실패하지만 데이터 트래픽은 작동합니다(또는 그 반대). 검증은 모두 0인 UUID(00000000-0000-0000-0000-000000000000)를 전송하고, 실제 트래픽은 연결된 워크스페이스의 컴파트먼트 ID를 전송합니다. 조건에 두 값이 모두 나열되어 있는지 확인하세요. 조건을 완전히 배제하려면 AllowAnthropicCMEKCrypto 문에서 Condition 블록을 일시적으로 제거하고 다시 검증하세요.aws:PrincipalOrgID가 조직과 일치하지 않을 때 KMS 작업을 거부하는 RCP가 있는 경우, Anthropic의 교차 계정 역할이 차단됩니다. RCP에 이 키 또는 Anthropic의 역할 ARN에 대한 예외가 필요합니다. 서비스 제어 정책은 리소스 기반 정책을 통해 호출하는 외부 주체에 대해 평가되지 않으므로 여기에는 적용되지 않습니다.aws kms get-key-policy --key-id <id> --policy-name default로 확인하세요.워크스페이스에 키 연결
curl -sS -X POST https://api.anthropic.com/v1/organizations/workspaces/<workspace-id> \
-H "x-api-key: <anthropic-admin-api-key>" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"external_key_id": "ekey_<id>"
}'infrastructure-as-code(코드형 인프라) 배포의 경우, 동일한 단계가 aws_kms_key 및 aws_kms_alias 리소스와 함께 aws 프로바이더에 매핑됩니다.
Was this page helpful?