CMEK용 Google Cloud KMS 구성
Google Cloud KMS를 사용하여 조직에 암호화 키를 제공합니다.
claude "/claude-api help me configure a customer-managed encryption key with Google Cloud KMS"이 가이드는 Google Cloud KMS 키를 Anthropic 조직의 "customer-managed encryption key"(고객 관리 암호화 키), 즉 CMEK로 구성하는 과정을 안내합니다.
사전 요구 사항
- 결제가 활성화된 Google Cloud 프로젝트.
- Cloud KMS API 활성화(
cloudkms.googleapis.com). - KMS 키 링과 키를 생성하고 이에 대한 IAM 정책을 설정할 수 있는 권한(
roles/cloudkms.admin또는 이에 상응하는 권한). - 조직의 Anthropic Admin API 키.
gcloudCLI 설치 및 인증 완료.- 프로젝트에 대해 Cloud KMS 데이터 액세스 감사 로그 활성화(IAM & Admin > Audit Logs > Cloud Key Management Service에서
DATA_READ및DATA_WRITE선택). 이 로그는 기본적으로 꺼져 있으며, 활성화하지 않으면 Anthropic의 암호화 및 복호화 작업이 Cloud Logging에 항목을 생성하지 않습니다.
Anthropic 서비스 계정 이메일
Anthropic이 여러분의 암호화 키를 사용하도록 하려면, Anthropic의 서비스 계정에 데이터 암호화에 사용할 수 있는 키를 제공해야 합니다. Anthropic CMEK용 서비스 계정 이메일은 다음과 같습니다:
anthropic-cmek-client-us@gcp-anthropic-cmek-clients.iam.gserviceaccount.com암호화 키 설정
키 링 생성 또는 선택
재사용할 키 링이 이미 있다면 이 단계를 건너뛰세요. 키 링은 리전 단위입니다. 구성 중인 Anthropic 지역과 일치하는
us-east5와 같은 단일 리전 US 위치를 선택하세요.us및global과 같은 멀티 리전 위치는 지원되지 않습니다.gcloud kms keyrings create <your-keyring-name> \ --project=<your-project-id> \ --location=<region>암호화 키 생성
ENCRYPT_DECRYPT용도의 대칭 키를 생성하세요. Anthropic은 HSM 보호를 강력히 권장합니다. Cloud KMS HSM 키는 FIPS 140-2 Level 3 검증을 받았으며, 소프트웨어 키 대비 비용 차이가 작습니다.gcloud kms keys create <your-key-name> \ --project=<your-project-id> \ --location=<region> \ --keyring=<your-keyring-name> \ --purpose=encryption \ --protection-level=hsm대신 소프트웨어 보호를 사용하려면
--protection-level=hsm을 생략하세요. 이 가이드의 나머지 내용은 변경되지 않습니다.Google Cloud Console에서도 키를 생성할 수 있습니다. 키 링을 열고 Create key를 클릭한 다음 Generated key를 선택하고, 용도와 알고리즘을 대칭 암호화 및 복호화로 설정한 뒤 보호 수준에서 HSM을 선택하세요.

HSM으로 보호되는 대칭 암호화/복호화(Symmetric encrypt/decrypt) 키를 생성합니다. Anthropic 서비스 계정에 키 액세스 권한 부여
두 개의 키 수준 IAM 바인딩이 필요합니다. 둘 다 프로젝트 전체나 키 링 전체가 아닌 단일 암호화 키로 범위가 지정됩니다.
암호화 및 복호화 권한은 Anthropic이 워크스페이스 데이터를 보호하는 데이터 키를 암호화하고 복호화하는 데 사용합니다(봉투 암호화, envelope encryption):
gcloud kms keys add-iam-policy-binding <your-key-name> \ --project=<your-project-id> \ --location=<region> \ --keyring=<your-keyring-name> \ --member="serviceAccount:anthropic-cmek-client-us@gcp-anthropic-cmek-clients.iam.gserviceaccount.com" \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter뷰어 권한은 Anthropic이 시작 시 키의 용도와 알고리즘을 검증하기 위해 수행하는 메타데이터 읽기(
cryptoKeys.get)에 사용됩니다:gcloud kms keys add-iam-policy-binding <your-key-name> \ --project=<your-project-id> \ --location=<region> \ --keyring=<your-keyring-name> \ --member="serviceAccount:anthropic-cmek-client-us@gcp-anthropic-cmek-clients.iam.gserviceaccount.com" \ --role=roles/cloudkms.viewerConsole에서는 키를 선택하고 Permissions 패널을 연 다음 Grant access를 클릭하고, Cloud KMS CryptoKey Encrypter/Decrypter 및 Cloud KMS Viewer 역할을 모두 지정하여 서비스 계정을 추가하세요. 권한 부여가 이 키에만 범위가 지정되도록, 키 링이나 프로젝트가 아닌 키의 권한 페이지에 있는지 확인하세요.

Anthropic 서비스 계정에 키 범위로 지정된 두 역할(Cloud KMS CryptoKey Encrypter/Decrypter 및 Viewer)을 모두 부여합니다. 전체 키 리소스 이름 기록
키를 등록할 때 이 값을 Anthropic에 전달합니다. 형식은 다음과 같습니다:
projects/<your-project-id>/locations/<region>/keyRings/<your-keyring-name>/cryptoKeys/<your-key-name>다음 명령으로 조회하세요:
gcloud kms keys describe <your-key-name> \ --project=<your-project-id> \ --location=<region> \ --keyring=<your-keyring-name> \ --format="value(name)"Console에서는 키의 세부 정보 페이지를 열고 Copy resource name을 클릭하세요.

작업 메뉴에서 키의 전체 리소스 이름을 복사합니다(Copy resource name).
Anthropic에 키 등록
키를 등록하는 방법은 사용하는 제품에 따라 다릅니다.
Anthropic에 키 등록
암호화 키 설정의 전체 키 리소스 이름 기록 단계에서 얻은 리소스 이름을 사용하여 Admin API를 통해 외부 키 구성을 생성하세요.
client = anthropic.Anthropic() external_key = client.beta.organization.external_keys.create( display_name="<friendly-name>", geo="us", provider_config={ "type": "gcp", "key_name": "projects/<your-project-id>/locations/<region>/keyRings/<your-keyring-name>/cryptoKeys/<your-key-name>", }, ) print(f"id: {external_key.id}") print(f"display_name: {external_key.display_name}")응답에는 외부 키 ID가 포함됩니다:
{ "type": "external_key", "id": "ekey_<id>", "display_name": "<friendly-name>" }키 검증
키에 대해 암호화 및 복호화 왕복 테스트를 실행하세요.
client = anthropic.Anthropic() validation = client.beta.organization.external_keys.validate("ekey_<id>") print(f"status: {validation.status}") print(f"error: {validation.error}")성공적인 응답은 다음과 같습니다:
{ "type": "external_key_validation", "status": "success", "error": null }검증이 실패하는 경우 일반적인 원인은 다음과 같습니다:
- VPC Service Controls: 프로젝트에서 서비스 경계가 Cloud KMS를 보호하고 있다면, Anthropic이 키에 접근할 수 있도록 경계의 액세스 수준에 Anthropic을 추가하거나 키의 프로젝트를 제외하세요.
- 도메인 제한 공유:
constraints/iam.allowedPolicyMemberDomains조직 정책이 Anthropic 서비스 계정 바인딩을 제거할 수 있습니다(앞의 참고 사항 참조).gcloud kms keys get-iam-policy <your-key-name> --project=<your-project-id> --location=<region> --keyring=<your-keyring-name>으로 바인딩이 존재하는지 확인하세요. - 비활성화되거나 폐기된 키 버전: 키의 기본 버전이 활성화되어 있으며, 비활성화되었거나 폐기 예정이거나 폐기된 상태가 아닌지 확인하세요.
워크스페이스에 키 연결
키가 검증되면, 해당 워크스페이스에 요청을 보내기 전에 새 워크스페이스에 키를 연결하세요. 이미 요청을 받고 있는 워크스페이스의 경우 키가 적용되기까지 최대 하루가 걸릴 수 있습니다.
client = anthropic.Anthropic() workspace = client.beta.organization.workspaces.update( "<workspace-id>", external_key_id="ekey_<id>" ) print(f"id: {workspace.id}") print(f"external_key_id: {workspace.external_key_id}")
Terraform
코드형 인프라(infrastructure-as-code) 배포의 경우, 동일한 단계가 google 프로바이더의 google_kms_key_ring, google_kms_crypto_key, google_kms_crypto_key_iam_member 리소스에 대응됩니다.
Was this page helpful?