claude "/claude-api help me configure a customer-managed encryption key with AWS KMS"이 가이드는 Anthropic 조직을 위한 customer-managed encryption key (CMEK)(고객 관리형 암호화 키)로 AWS KMS 키를 구성하는 과정을 안내합니다.
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\": \"<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은 항상 워크스페이스의 compartment ID를 암호화 컨텍스트에 포함하므로, 암호문은 이와 관계없이 해당 compartment에 암호학적으로 바인딩됩니다. 조건을 추가하면 IAM 계층에서 심층 방어(defense-in-depth)를 제공합니다. 조건 없이 시작하려면 AllowAnthropicCMEKCrypto statement에서 Condition 블록을 생략하고 나중에 kms:PutKeyPolicy로 추가하세요.
Compartment ID 찾기: 각 워크스페이스에는 CMEK 데이터의 범위를 지정하는 compartment ID가 있습니다. Claude Console의 Workspace > Security > Encryption keys(Compartment ID 필드)에서 찾거나, Get Workspace 엔드포인트가 반환하는 compartment_id 필드를 읽으세요. 위 키 정책에서 <compartment-uuid>를 해당 값으로 대체하세요. Anthropic은 키를 검증할 때도 이 값을 암호화 컨텍스트로 전송하므로, 검증이 성공하려면 조건 값이 일치해야 합니다.
AWS Console에서도 키를 생성할 수 있습니다. 암호화 및 복호화 키 용도의 대칭 키, 단일 리전 키, KMS 키 구성 요소 오리진을 선택하세요. 키 생성 마법사는 Review 단계에서 키 정책을 커밋합니다. 해당 단계의 키 사용 권한에 Anthropic의 계정 ID 915198916910을 추가하면, 생성된 정책은 EncryptionContext 조건 없이 Anthropic 계정 전체에 더 광범위한 작업(예: kms:ReEncrypt* 및 kms:GenerateDataKey*)을 부여하며, 이 정책으로도 검증은 성공합니다. 과도한 권한이 부여된 키를 남기지 않으려면 관리 권한만으로 마법사를 완료한 다음, 키의 Key policy 탭을 열고 JSON을 위에 표시된 역할 범위 정책(anthropic-cmek-client-us 역할로 범위가 지정되고 EncryptionContext 조건이 포함된 세 개의 statement)으로 교체하세요.




Anthropic에 키 등록
Admin API를 통해 외부 키 구성을 생성합니다.
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-step-1>",
"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 }검증이 실패하는 경우 일반적인 원인은 다음과 같습니다:
EncryptionContext 조건을 유지한 경우, <compartment-uuid>를 워크스페이스의 실제 compartment ID로 교체했는지 확인하세요(1단계 참조). 잘못되었거나 대체되지 않은 값은 KMS가 불명확한 AccessDeniedException을 반환하게 합니다. 이를 배제하려면 AllowAnthropicCMEKCrypto statement에서 Condition 블록을 일시적으로 제거하고 다시 검증하세요.aws:PrincipalOrgID가 조직과 일치하지 않을 때 KMS 작업을 거부하는 RCP가 있는 경우, Anthropic의 교차 계정 역할이 차단됩니다. RCP에 이 키 또는 Anthropic의 역할 ARN에 대한 예외(carve-out)가 필요합니다. 서비스 제어 정책은 리소스 기반 정책을 통해 호출하는 외부 주체에 대해 평가되지 않으므로 여기에는 적용되지 않습니다.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?