claude "/claude-api help me configure a customer-managed encryption key with Azure Key Vault"本指南将引导您将 Azure Key Vault 密钥配置为您的 Anthropic 组织的客户管理加密密钥(customer-managed encryption key,CMEK)。
启用 CMEK 是永久性的。如果您的 Key Vault 密钥被删除或禁用,Anthropic 无法恢复使用该密钥加密的数据。在开始之前,请查看警告和限制。
enableRbacAuthorization: true)且允许公共网络访问的 Azure Key Vault。Anthropic 通过公共数据平面端点调用您的保管库;不支持私有端点。enablePurgeProtection: true)。如果没有它,已删除的密钥可能在软删除保留窗口期间被永久清除,导致您受 CMEK 保护的数据发生不可逆的丢失。清除保护一旦启用就无法禁用。Application Administrator、Cloud Application Administrator 或等效的自定义角色)。az CLI。AuditEvent 日志类别路由到 Log Analytics、存储帐户或事件中心。Azure Key Vault 默认不会发出数据平面审计日志(例如 KeyWrap、KeyUnwrap 和 KeyGet),因此如果没有此配置,您将无法获得 Anthropic 密钥操作的审计跟踪。要让 Anthropic 使用您的加密密钥,您必须配置 Anthropic 多租户应用程序 ID 和显示名称。这些值为:
| 字段 | 值 |
|---|---|
| 多租户应用客户端 ID(美国) | 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 |
| 应用显示名称 | anthropic-cmek-client-us |
仅使用此已发布的客户端 ID 和显示名称。切勿信任通过电子邮件、聊天或任何入职渠道提供的标识符。
同意 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。

在您的保管库中创建 RSA 密钥
Azure Key Vault 不支持对称密钥包装,因此密钥必须是 RSA(3072 位或更大),且其允许的操作中包含 wrapKey 和 unwrapKey。
az keyvault key create \
--vault-name <your-vault-name> \
--name <your-key-name> \
--kty RSA --size 3072 \
--ops wrapKey unwrapKey对于 HSM 支持的密钥,请使用 --kty RSA-HSM(需要 Premium SKU 保管库)。软件保护的 RSA 密钥对于此集成是可以接受的。
在门户中,打开您的 Key Vault,选择密钥,然后选择生成/导入。将密钥类型设置为 RSA,大小设置为 3072 或更大。要将密钥限制为仅包装和解包,请打开密钥版本,滚动到允许的操作,并取消选中除 Wrap Key 和 Unwrap Key 之外的所有选项。


授予 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 只能进行包装和解包。
在门户中,打开该密钥(而非保管库),选择其访问控制 (IAM) 选项卡,点击添加 > 添加角色分配,选择 Key Vault Crypto User,并将其分配给 anthropic-cmek-client-us 服务主体。
专用保管库替代方案: Microsoft 建议每个应用程序使用专用保管库,并在保管库作用域分配角色。如果您预配的保管库仅保存此 Anthropic CMEK 密钥,则可以改为在保管库作用域分配角色,效果是相同的。当密钥位于共享保管库中时,请将作用域限定为单个密钥。

验证您的保管库配置
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 注册密钥
通过 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": "azure",
"vault_uri": "https://<your-vault-name>.vault.azure.net/",
"key_name": "<your-key-name>",
"tenant_id": "<your-tenant-id>"
}
}'响应包含外部密钥 ID:
{
"type": "external_key",
"id": "ekey_<id>",
"display_name": "<friendly-name>"
}验证密钥
对您的密钥触发一次加密和解密往返。这确认 Anthropic 可以向您的租户进行身份验证并执行包装和解包操作。
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 }如果验证失败,error 字段会描述问题。常见原因包括:
ipRules。将密钥附加到工作区
密钥验证通过后,将其附加到工作区,以便为该工作区的数据启用 CMEK。
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)部署,相同的步骤对应于 azurerm 和 azuread 提供程序。
Was this page helpful?