为 CMEK 配置 Google Cloud KMS
使用 Google Cloud KMS 为您的组织提供加密密钥。
Claude Code
让 Claude Code 为您设置此功能
/claude-api 帮我使用 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和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 验证,并且相对于软件密钥的成本差异很小。--labels选项添加组织标签anthropic-org-<ORGANIZATION_UUID>,其值为true,其中<ORGANIZATION_UUID>是您的 Anthropic 组织 ID(小写)。Anthropic 需要此标签来验证密钥。gcloud kms keys create <KEY_NAME> \ --project=<PROJECT_ID> \ --location=<REGION> \ --keyring=<KEYRING_NAME> \ --purpose=encryption \ --protection-level=hsm \ --labels=anthropic-org-<ORGANIZATION_UUID>=true如果改用软件保护,请省略
--protection-level=hsm。本指南中的其他内容不变。您也可以从 Google Cloud Console 创建密钥。打开密钥环,点击 Create key,选择 Generated key,将用途和算法设置为对称加密和解密,并在保护级别下选择 HSM。

创建一个带有组织标签的 HSM 保护对称加密/解密密钥。 要在多个 Anthropic 组织之间共享一个密钥,请为每个组织添加一个这样的标签。一个密钥最多可以携带 64 个标签,包括您自己的标签。
授予 Anthropic 服务账户对密钥的访问权限
需要两个密钥级别的 IAM 绑定。两者都限定于单个加密密钥,而不是项目范围或密钥环范围。
加密和解密,Anthropic 用它来加密和解密保护您工作区数据的数据密钥(信封加密):
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.viewer在 Console 中,选择密钥,打开 Permissions 面板,点击 Grant access,并为服务账户添加 Cloud KMS CryptoKey Encrypter/Decrypter 和 Cloud KMS Viewer 两个角色。确保您位于密钥的权限页面,而不是密钥环或项目,以便授权仅限定于此密钥。

为 Anthropic 服务账户授予两个角色,限定于该密钥。 记下完整的密钥资源名称
当您注册密钥时,需要将其传递给 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。

从操作菜单复制密钥的完整资源名称。
向 Anthropic 注册密钥
注册密钥的方式取决于您使用的产品。
您可以在 Claude Console 中或通过 Admin API 设置密钥,结果相同。
向 Anthropic 注册密钥
在 Claude Console 中,前往 Data retention 页面(
platform.claude.com/settings/privacy)。如果您没有看到 Encryption keys,请从页面顶部的下拉菜单中选择 Organization。在 Encryption keys 下,点击 Add key。输入显示名称,选择 Google Cloud KMS,然后点击 Continue。将完整的密钥资源名称粘贴到 Key resource name 中,然后点击 Add。密钥详情步骤会显示组织标签。在点击 Add 之前,按照创建步骤所述将其添加到密钥。
验证密钥
在 Encryption keys 列表中,点击密钥旁边的 Verify。检查通过后会显示 Connected。如果检查失败,会显示一条说明原因的消息。
将密钥附加到工作区
在 Claude Console 中,前往 Data retention 页面(
platform.claude.com/settings/privacy),并从页面顶部的下拉菜单中选择工作区。在 Encryption key 下,选择密钥,点击 Save 并确认。附加密钥后无法撤销。对于已在接收请求的工作区,密钥可能需要最多一天才能生效。
向 Anthropic 注册密钥
通过 Admin API 创建外部密钥配置,使用加密密钥设置下"记下完整的密钥资源名称"步骤中的资源名称。
Pythonclient = anthropic.Anthropic() external_key = client.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>" }验证密钥
针对您的密钥触发一次加密和解密往返。
Pythonclient = anthropic.Anthropic() validation = client.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>确认绑定存在。 - 已禁用或已销毁的密钥版本: 确认密钥的主版本已启用,而不是已禁用、计划销毁或已销毁。
将密钥附加到工作区
密钥验证通过后,在向该工作区发送任何请求之前,将其附加到新工作区。对于已经接收请求的工作区,密钥可能需要最多一天才能生效。
Pythonclient = anthropic.Anthropic() workspace = client.organization.workspaces.update( "<workspace-id>", external_key_id="ekey_<id>" ) print(f"id: {workspace.id}") print(f"external_key_id: {workspace.external_key_id}")
在 claude.ai > Organization settings > Data and privacy 中,打开 Encryption keys,然后点击 Add key。选择 Google Cloud,粘贴上一步中的完整密钥资源名称,然后点击 Continue。Anthropic 通过加密和解密往返来验证密钥。一旦显示为已验证,您的组织从那时起就受到 CMEK 保护。
在 Claude Enterprise 上,CMEK 适用于整个组织,因此没有单独的工作区附加步骤,并且一个组织只能有一个密钥。
Terraform
对于基础设施即代码部署,相同的步骤映射到 google 提供程序的 google_kms_key_ring、google_kms_crypto_key 和 google_kms_crypto_key_iam_member 资源。
Was this page helpful?