Claude Platform Docs
管理加密密钥(CMEK)

为 CMEK 配置 Azure Key Vault

使用 Azure Key Vault 为您的组织提供加密密钥。

Claude Code

让 Claude Code 为您设置此功能

/claude-api 帮我使用 Azure Key Vault 配置客户管理的加密密钥

本指南将引导您将 Azure Key Vault 密钥配置为 Anthropic 组织的客户管理加密密钥(customer-managed encryption key,CMEK)。

前提条件

  • 一个已启用 RBAC 授权(enableRbacAuthorization: true)且允许公共网络访问的 Azure Key Vault。Anthropic 通过公共数据平面端点调用您的保管库;不支持私有端点。
  • 保管库上已启用清除保护(enablePurgeProtection: true)。如果没有它,已删除的密钥可能在软删除保留窗口期间被永久清除,导致您的 CMEK 保护数据不可逆转地丢失。清除保护一旦启用便无法禁用。
  • 在保管库中创建密钥以及在其上分配 RBAC 角色的权限。
  • 在您的 Entra 租户中创建服务主体的权限(Application Administrator、Cloud Application Administrator 或等效的自定义角色)。
  • 您组织的 Anthropic Admin API 密钥。
  • 已安装并通过身份验证的 az CLI。
  • 在保管库上配置了诊断设置(Diagnostic Settings),以将 AuditEvent 日志类别路由到 Log Analytics、存储帐户或事件中心。Azure Key Vault 默认不发出数据平面审计日志(例如 KeyWrap、KeyUnwrap 和 KeyGet),因此如果没有此配置,您将无法获得 Anthropic 密钥操作的审计跟踪。

Anthropic 应用信息

要让 Anthropic 使用您的加密密钥,您必须配置一个 Anthropic 多租户应用程序 ID 和显示名称。这些值为:

字段值
多租户应用客户端 ID(美国)8635ae1a-3e5d-44e8-a4ed-e0f614466f87
应用显示名称anthropic-cmek-client-us

加密密钥设置

  1. 同意 Anthropic 多租户应用程序

    这会在您的 Entra 租户中为 Anthropic 的 CMEK 客户端应用程序创建一个服务主体。该应用程序不请求任何 Microsoft Graph 权限;它仅作为 Key Vault 数据平面访问的联合目标而存在。

    az ad sp create --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87

    从输出中,捕获 id 字段。这是服务主体在您租户中的对象 ID,您在分配 RBAC 角色时会用到它。

    {
      "appId": "8635ae1a-3e5d-44e8-a4ed-e0f614466f87",
      "displayName": "anthropic-cmek-client-us",
      "id": "<sp-object-id>"
    }

    如果服务主体已存在于您的租户中(来自先前的尝试或其他集成),az ad sp create 会以"already exists"错误退出。请改为获取其对象 ID:

    az ad sp show --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 --query id -o tsv

    此步骤没有门户等效操作。如果您本地未安装 Azure CLI,请从门户顶部导航栏打开 Cloud Shell。命令成功后,您可以在 Microsoft Entra ID > 企业应用程序中,通过清除默认的应用程序类型筛选器并搜索 anthropic-cmek-client-us 来找到服务主体的对象 ID。

    anthropic-cmek-client-us 的 Microsoft Entra 企业应用程序概述,显示其应用程序 ID(Application ID)和对象 ID(Object ID)。

    在其 Entra 企业应用程序概述中找到服务主体的对象 ID(Object ID)。
  2. 在您的保管库中创建 RSA 密钥

    Azure Key Vault 不支持对称密钥包装,因此密钥必须是 RSA(3072 位或更大),并在其允许的操作中包含 wrapKey 和 unwrapKey。

    --tags 选项添加组织标签 anthropic-org-<ORGANIZATION_UUID>,其值为 true,其中 <ORGANIZATION_UUID> 是您的 Anthropic 组织 ID(小写)。此标签是 Anthropic 验证密钥所必需的。

    az keyvault key create \
      --vault-name <VAULT_NAME> \
      --name <KEY_NAME> \
      --kty RSA --size 3072 \
      --ops wrapKey unwrapKey \
      --tags anthropic-org-<ORGANIZATION_UUID>=true

    对于 HSM 支持的密钥,使用 --kty RSA-HSM(需要 Premium-SKU 保管库)。软件保护的 RSA 密钥对于此集成是可接受的。

    从门户中,打开您的 Key Vault,选择 Keys,然后选择 Generate/Import。将密钥类型设置为 RSA,大小设置为 3072 或更大。要将密钥限制为仅包装和解包,请打开密钥版本,滚动到 Permitted operations,并取消选中除 Wrap Key 和 Unwrap Key 之外的所有内容。

    在 Create a key 页面上,还要在 Tags 下添加组织标签。

    Azure Key Vault 的 Create a key 页面,密钥类型为 RSA,密钥大小为 3072,anthropic-org 标签已设置为 true。

    创建一个大小为 3072 或更大的 RSA 密钥,并将标签 anthropic-org-<ORGANIZATION_UUID> 设置为 true。

    Azure Key Vault 密钥版本,带有 1 个标签,Permitted operations 仅限于 Wrap Key 和 Unwrap Key。

    将允许的操作限制为 Wrap Key 和 Unwrap Key。密钥版本显示组织标签。

    要在多个 Anthropic 组织之间共享一个密钥,请为每个组织添加一个这样的标签。一个密钥版本最多可以携带 15 个标签,包括您自己的标签。

  3. 授予 Anthropic 服务主体访问您密钥的权限

    将 Key Vault Crypto User 角色分配给第一步中的服务主体,范围限定为单个密钥而不是整个保管库。

    VAULT_ID=$(az keyvault show --name <your-vault-name> --query id -o tsv)
    
    az role assignment create \
      --role "Key Vault Crypto User" \
      --assignee-object-id <sp-object-id> \
      --assignee-principal-type ServicePrincipal \
      --scope "${VAULT_ID}/keys/<your-key-name>"

    内置的 Key Vault Crypto User 角色在其分配的范围内授予密钥加密操作(加密、解密、包装、解包、签名、验证)以及密钥读取权限。您在上一步中对密钥设置的 --ops wrapKey unwrapKey 限制进一步缩小了针对此密钥可以成功执行的操作,因此实际上 Anthropic 只能包装和解包。

    从门户中,打开密钥(而不是保管库),选择其 Access control (IAM) 选项卡,单击 Add > Add role assignment,选择 Key Vault Crypto User,并将其分配给 anthropic-cmek-client-us 服务主体。

    Key Vault IAM 角色分配,显示 anthropic-cmek-client-us 已被分配 Key Vault Crypto User 角色。

    将 Key Vault Crypto User 分配给 Anthropic 服务主体,范围限定为密钥。
  4. 验证您的保管库配置

    az keyvault show --name <your-vault-name> \
      --query "{rbac:properties.enableRbacAuthorization, purge:properties.enablePurgeProtection, pub:properties.publicNetworkAccess, net:properties.networkAcls.defaultAction, ipRules:properties.networkAcls.ipRules, uri:properties.vaultUri, tenantId:properties.tenantId}"

    确认:

    • rbac 为 true。
    • purge 为 true。如果它为 false 或 null,请在继续之前在保管库上启用清除保护。如果没有它,软删除的密钥可能在保留窗口期间被永久清除,使您的 CMEK 保护数据无法恢复。
    • pub 为 "Enabled"。如果它为 "Disabled",Anthropic 无法通过其公共数据平面端点访问保管库,验证将失败。
    • net 为 "Allow",或者,如果它为 "Deny",则 ipRules 包含 Anthropic 的出口范围(请联系 Anthropic 获取当前列表)。
    • uri 是您注册密钥时使用的保管库 URI。
    • tenantId 是管理保管库的租户。注册密钥时将此值用作 tenant_id,而不是您当前活动订阅的租户(在跨租户设置中两者可能不同)。

向 Anthropic 注册密钥

注册密钥的方式取决于您使用的产品。

您可以在 Claude Console 中或通过 Admin API 设置密钥,结果相同。

  1. 向 Anthropic 注册密钥

    在 Claude Console 中,前往 Data retention 页面(platform.claude.com/settings/privacy)。如果您没有看到 Encryption keys,请从页面顶部的下拉菜单中选择 Organization。在 Encryption keys 下,单击 Add key。输入显示名称,选择 Azure Key Vault,然后单击 Continue。填写 Vault URI、Key name 和 Tenant ID,然后单击 Add。

    密钥详细信息步骤会显示组织标签。在单击 Add 之前,按照创建步骤中的描述将其添加到密钥。

  2. 验证密钥

    在 Encryption keys 列表中,单击密钥旁边的 Verify。检查通过后会显示 Connected。如果失败,会显示一条说明原因的消息。

  3. 将密钥附加到工作区

    在 Claude Console 中,前往 Data retention 页面(platform.claude.com/settings/privacy),并从页面顶部的下拉菜单中选择工作区。在 Encryption key 下,选择密钥,单击 Save 并确认。附加密钥后无法撤销。对于已在接收请求的工作区,密钥可能需要最多一天才能生效。

Terraform

对于基础设施即代码部署,相同的步骤映射到 azurerm 和 azuread 提供程序。

Was this page helpful?