Configurar Azure Key Vault para CMEK
Usa Azure Key Vault para proporcionar una clave de cifrado para tu organización.
claude "/claude-api help me configure a customer-managed encryption key with Azure Key Vault"Esta guía explica cómo configurar una clave de Azure Key Vault como una clave de cifrado administrada por el cliente, o "customer-managed encryption key" (CMEK) para tu organización de Anthropic.
Requisitos previos
- Un Azure Key Vault con autorización RBAC habilitada (
enableRbacAuthorization: true) y acceso de red pública permitido. Anthropic llama a tu vault a través del endpoint público del plano de datos; los endpoints privados no son compatibles. - Protección contra purga habilitada (
enablePurgeProtection: true) en el vault. Sin ella, una clave eliminada puede purgarse permanentemente durante la ventana de retención de eliminación temporal (soft-delete), lo que causa la pérdida irreversible de tus datos protegidos con CMEK. La protección contra purga no se puede deshabilitar una vez habilitada. - Permisos para crear claves en el vault y para asignar roles RBAC sobre él.
- Permisos para crear entidades de servicio (service principals) en tu tenant de Entra (
Application Administrator,Cloud Application Administratoro un rol personalizado equivalente). - Una clave de API de administrador (Admin API key) de Anthropic para tu organización.
- La CLI
azinstalada y autenticada. - Diagnostic Settings (configuración de diagnóstico) configurada en el vault para enrutar la categoría de registro
AuditEventa Log Analytics, una cuenta de almacenamiento o un event hub. Azure Key Vault no emite registros de auditoría del plano de datos (comoKeyWrap,KeyUnwrapyKeyGet) de forma predeterminada, por lo que sin esto no obtienes ningún rastro de auditoría de las operaciones de clave de Anthropic.
Información de la aplicación de Anthropic
Para que Anthropic use tu clave de cifrado, debes configurar un ID de aplicación multitenant de Anthropic y un nombre para mostrar. Esos valores son:
| Campo | Valor |
|---|---|
| ID de cliente de la aplicación multitenant (EE. UU.) | 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 |
| Nombre para mostrar de la aplicación | anthropic-cmek-client-us |
Configuración de la clave de cifrado
Otorga consentimiento a la aplicación multitenant de Anthropic
Esto crea una entidad de servicio en tu tenant de Entra para la aplicación cliente CMEK de Anthropic. La aplicación no solicita permisos de Microsoft Graph; existe únicamente como destino de federación para el acceso al plano de datos de Key Vault.
az ad sp create --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87De la salida, captura el campo
id. Este es el ID de objeto de la entidad de servicio en tu tenant, que usarás cuando asignes el rol RBAC.{ "appId": "8635ae1a-3e5d-44e8-a4ed-e0f614466f87", "displayName": "anthropic-cmek-client-us", "id": "<sp-object-id>" }Si la entidad de servicio ya existe en tu tenant (por un intento anterior u otra integración),
az ad sp createtermina con un error "already exists". En su lugar, obtén su ID de objeto:az ad sp show --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 --query id -o tsvEste paso no tiene equivalente en el Portal. Si no tienes la CLI de Azure instalada localmente, abre Cloud Shell desde la barra de navegación superior del Portal. Después de que el comando se ejecute correctamente, puedes encontrar el ID de objeto de la entidad de servicio en Microsoft Entra ID > Enterprise applications quitando el filtro predeterminado de tipo de aplicación y buscando
anthropic-cmek-client-us.
Encuentra el Object ID (ID de objeto) de la entidad de servicio en la vista general de su aplicación empresarial de Entra. Crea una clave RSA en tu vault
Azure Key Vault no admite el encapsulado (wrapping) de claves simétricas, por lo que la clave debe ser RSA (de 3072 bits o más) con
wrapKeyyunwrapKeyen sus operaciones permitidas.az keyvault key create \ --vault-name <your-vault-name> \ --name <your-key-name> \ --kty RSA --size 3072 \ --ops wrapKey unwrapKeyPara claves respaldadas por HSM, usa
--kty RSA-HSM(requiere un vault de SKU Premium). Las claves RSA protegidas por software son aceptables para esta integración.Desde el Portal, abre tu Key Vault, selecciona Keys y luego Generate/Import. Establece el tipo de clave en RSA y el tamaño en 3072 o más. Para restringir la clave únicamente a encapsular y desencapsular, abre la versión de la clave, desplázate hasta Permitted operations y desmarca todo excepto Wrap Key y Unwrap Key.

Crea una clave RSA de tamaño 3072 o mayor. 
Restringe las Permitted operations (operaciones permitidas) a Wrap Key (encapsular clave) y Unwrap Key (desencapsular clave). Otorga a la entidad de servicio de Anthropic acceso a tu clave
Asigna el rol
Key Vault Crypto Usera la entidad de servicio del primer paso, con alcance a la clave individual en lugar de a todo el vault.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>"El rol integrado
Key Vault Crypto Userotorga operaciones criptográficas de clave (cifrar, descifrar, encapsular, desencapsular, firmar, verificar) además de lectura de clave en su alcance asignado. La restricción--ops wrapKey unwrapKeyque estableciste en la clave en el paso anterior limita aún más cuáles de esas operaciones pueden realizarse correctamente sobre esta clave, por lo que en la práctica Anthropic solo puede encapsular y desencapsular.Desde el Portal, abre la clave (no el vault), selecciona su pestaña Access control (IAM), haz clic en Add > Add role assignment, selecciona Key Vault Crypto User y asígnalo a la entidad de servicio
anthropic-cmek-client-us.
Asigna Key Vault Crypto User a la entidad de servicio de Anthropic, con alcance a la clave. Verifica la configuración de tu vault
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}"Confirma que:
rbacestrue.purgeestrue. Si esfalseonull, habilita la protección contra purga en el vault antes de continuar. Sin ella, una clave eliminada temporalmente puede purgarse permanentemente durante la ventana de retención, lo que hace que tus datos protegidos con CMEK sean irrecuperables.pubes"Enabled". Si es"Disabled", Anthropic no puede acceder al vault a través de su endpoint público del plano de datos y la validación falla.netes"Allow"o, si es"Deny", queipRulesincluya los rangos de salida (egress) de Anthropic (contacta a Anthropic para obtener la lista actual).uries el URI del vault que usas cuando registras la clave.tenantIdes el tenant que gobierna el vault. Usa este valor comotenant_idcuando registres la clave, no el tenant de tu suscripción actualmente activa (ambos pueden diferir en configuraciones entre tenants).
Registra la clave con Anthropic
La forma de registrar la clave depende del producto que uses.
Registra la clave con Anthropic
Crea una configuración de clave externa a través de la Admin API.
client = anthropic.Anthropic() external_key = client.beta.organization.external_keys.create( 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>", }, ) print(f"id: {external_key.id}") print(f"display_name: {external_key.display_name}")La respuesta contiene el ID de la clave externa:
{ "type": "external_key", "id": "ekey_<id>", "display_name": "<friendly-name>" }Valida la clave
Activa un ciclo completo de cifrado y descifrado con tu clave. Esto confirma que Anthropic puede autenticarse en tu tenant y realizar operaciones de encapsulado y desencapsulado.
client = anthropic.Anthropic() validation = client.beta.organization.external_keys.validate("ekey_<id>") print(f"status: {validation.status}") print(f"error: {validation.error}")Una respuesta exitosa se ve así:
{ "type": "external_key_validation", "status": "success", "error": null }Si la validación falla, el campo
errordescribe el problema. Las causas comunes son:- Retraso en la propagación de RBAC: las asignaciones de roles pueden tardar unos minutos en surtir efecto. Espera y vuelve a intentarlo.
- ACL de red que bloquean a Anthropic: confirma el acceso de red pública y las
ipRulescomo se describe en el paso de verificación. - Políticas de acceso condicional sobre identidades de carga de trabajo: si tu tenant tiene políticas de acceso condicional dirigidas a entidades de servicio, excluye la entidad de servicio de Anthropic o agrega los rangos de salida de Anthropic a las ubicaciones con nombre de la política.
Asocia la clave a un workspace
Una vez validada la clave, asóciala a un nuevo workspace antes de enviar cualquier solicitud a ese workspace. Para un workspace que ya recibe solicitudes, la clave puede tardar hasta un día en surtir efecto.
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
Para implementaciones de infraestructura como código, los mismos pasos se corresponden con los proveedores azurerm y azuread.
Was this page helpful?