Was this page helpful?
claude "/claude-api help me configure a customer-managed encryption key with AWS KMS"Esta guía te muestra cómo configurar una clave de AWS KMS como una "customer-managed encryption key" (clave de cifrado gestionada por el cliente), o CMEK, para tu organización de Anthropic.
Habilitar CMEK es permanente. Si tu clave de KMS se elimina o se deshabilita, Anthropic no puede recuperar los datos cifrados con ella. Revisa las advertencias y limitaciones antes de comenzar.
kms:CreateKey y kms:PutKeyPolicy).Para que Anthropic use tu clave de cifrado, debes otorgar al rol de IAM de Anthropic una clave de KMS que pueda usar para cifrar datos. El ARN para CMEK de Anthropic es:
arn:aws:iam::915198916910:role/anthropic-cmek-client-usUsa únicamente este ARN publicado. Nunca confíes en un identificador proporcionado por correo electrónico, chat o cualquier canal de incorporación.
Para implementaciones de infraestructura como código, los mismos pasos se corresponden con el proveedor aws usando los recursos aws_kms_key y aws_kms_alias.
Crea la clave de KMS con una política de clave entre cuentas
La política de clave otorga al rol de IAM de Anthropic acceso entre cuentas. Se requieren tres declaraciones:
kms:Encrypt y kms:Decrypt, que Anthropic usa para cifrar y descifrar las claves de datos que protegen los datos de tu espacio de trabajo (cifrado de sobre).DescribeKey no tiene un parámetro EncryptionContext, por lo que una condición de EncryptionContext en esta acción siempre denegaría el acceso.export YOUR_ACCOUNT=$(aws sts get-caller-identity --query Account --output text)
aws kms create-key \
--region <region> \
--description "Anthropic CMEK" \
--key-usage ENCRYPT_DECRYPT \
--policy "{
\"Version\": \"2012-10-17\",
\"Statement\": [
{
\"Sid\": \"AccountRootAdmin\",
\"Effect\": \"Allow\",
\"Principal\": {\"AWS\": \"arn:aws:iam::${YOUR_ACCOUNT}:root\"},
\"Action\": \"kms:*\",
\"Resource\": \"*\"
},
{
\"Sid\": \"AllowAnthropicCMEKCrypto\",
\"Effect\": \"Allow\",
\"Principal\": {\"AWS\": \"arn:aws:iam::915198916910:role/anthropic-cmek-client-us\"},
\"Action\": [\"kms:Encrypt\", \"kms:Decrypt\"],
\"Resource\": \"*\",
\"Condition\": {
\"StringEquals\": {
\"kms:EncryptionContext:anthropic:compartment_uuid\": \"<compartment-uuid>\"
}
}
},
{
\"Sid\": \"AllowAnthropicCMEKDescribe\",
\"Effect\": \"Allow\",
\"Principal\": {\"AWS\": \"arn:aws:iam::915198916910:role/anthropic-cmek-client-us\"},
\"Action\": \"kms:DescribeKey\",
\"Resource\": \"*\"
}
]
}"Captura KeyMetadata.Arn de la salida. Lo necesitarás cuando registres la clave en el siguiente paso.
La condición EncryptionContext es recomendada pero opcional. Anthropic siempre incluye el ID de compartimento de tu espacio de trabajo en el contexto de cifrado, por lo que el texto cifrado está vinculado criptográficamente a ese compartimento de todas formas. Agregar la condición proporciona defensa en profundidad en la capa de IAM. Para comenzar sin ella, omite el bloque Condition de la declaración AllowAnthropicCMEKCrypto y agrégalo más tarde con kms:PutKeyPolicy.
Cómo encontrar tu ID de compartimento: Cada espacio de trabajo tiene un ID de compartimento que delimita sus datos de CMEK. Encuéntralo en Claude Console en Workspace > Security > Encryption keys (el campo Compartment ID), o lee el campo compartment_id devuelto por el endpoint Get Workspace. Sustituye ese valor por <compartment-uuid> en la política de clave anterior. Anthropic también lo envía como contexto de cifrado al validar la clave, por lo que el valor de la condición debe coincidir para que la validación tenga éxito.
También puedes crear la clave desde la consola de AWS. Elige una clave simétrica con uso de clave de cifrado y descifrado, una clave de una sola región y origen de material de clave KMS. El asistente de creación de claves confirma una política de clave en su paso Review: si agregas el ID de cuenta de Anthropic 915198916910 en los permisos de uso de clave allí, la política generada otorga a toda la cuenta de Anthropic acciones más amplias (como kms:ReEncrypt* y kms:GenerateDataKey*) sin condición de EncryptionContext, y la validación aún tendría éxito con ella. Para evitar dejar una clave con permisos excesivos, finaliza el asistente solo con permisos administrativos, luego abre la pestaña Key policy de la clave y reemplaza el JSON con la política limitada al rol que se muestra arriba (las tres declaraciones limitadas al rol anthropic-cmek-client-us, con la condición EncryptionContext).




Registra la clave con Anthropic
Crea una configuración de clave externa a través de la 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": "aws",
"kms_arn": "<key-arn-from-step-1>",
"role_arn": "arn:aws:iam::915198916910:role/anthropic-cmek-client-us"
}
}'La respuesta contiene el ID de clave externa:
{
"type": "external_key",
"id": "ekey_<id>",
"display_name": "<friendly-name>"
}Valida la clave
Activa un ciclo completo de cifrado y descifrado contra tu clave.
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 '{}'Una respuesta exitosa se ve así:
{ "type": "external_key_validation", "status": "success", "error": null }Si la validación falla, las causas comunes son:
EncryptionContext en la política de clave, confirma que reemplazaste <compartment-uuid> con el ID de compartimento real de tu espacio de trabajo (ver paso 1). Un valor incorrecto o sin sustituir hace que KMS devuelva una AccessDeniedException opaca. Para descartarlo, elimina temporalmente el bloque Condition de la declaración AllowAnthropicCMEKCrypto y vuelve a validar.aws:PrincipalOrgID no coincide con tu organización, esta bloquea el rol entre cuentas de Anthropic. La RCP necesita una excepción para esta clave o para el ARN del rol de Anthropic. Las políticas de control de servicios no aplican aquí, porque no se evalúan para principales externos que llaman a través de políticas basadas en recursos.aws kms get-key-policy --key-id <id> --policy-name default.Adjunta la clave a un espacio de trabajo
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>"
}'