claude "/claude-api help me configure a customer-managed encryption key with AWS KMS"Esta guía explica cómo configurar una clave de AWS KMS como una clave de cifrado administrada por el cliente (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 darle 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.
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 workspace (cifrado de sobre).DescribeKey no tiene un parámetro EncryptionContext, por lo que una condición EncryptionContext en esta acción siempre denegaría.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\": [
\"00000000-0000-0000-0000-000000000000\",
\"<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 workspace en el contexto de cifrado, por lo que el texto cifrado está vinculado criptográficamente a ese compartimento de todos modos. 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égala más tarde con kms:PutKeyPolicy.
Cómo encontrar tu ID de compartimento: El lugar donde encontrar tu ID de compartimento difiere entre Claude Platform y Claude Enterprise. Consulta las pestañas Claude Platform y Claude Enterprise bajo Registra la clave con Anthropic.
También puedes crear la clave desde la consola de AWS. Elige una clave simétrica con el 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 de Revisión: si agregas el ID de cuenta de Anthropic 915198916910 bajo 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 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 mostró anteriormente (las tres declaraciones limitadas al rol anthropic-cmek-client-us, con la condición EncryptionContext).




La forma de registrar la clave depende del producto que uses.
Cómo encontrar tu ID de compartimento: Cada workspace tiene un ID de compartimento que delimita sus datos de CMEK. Encuéntralo en la Claude Console bajo 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.
La validación de la clave siempre envía el UUID de compartimento de todos ceros (00000000-0000-0000-0000-000000000000) como contexto de cifrado, porque la validación se ejecuta antes de que la clave se adjunte a cualquier workspace. El tráfico en vivo envía el ID de compartimento de cada workspace adjunto.
Cualquier condición EncryptionContext debe permitir el valor de todos ceros más el ID de compartimento de cada workspace al que esté adjunta la clave. La validación también se ejecuta de nuevo cada vez que se vuelve a ejecutar la configuración de la clave, así que mantén la entrada de todos ceros de forma permanente.
Para adjuntar la clave a un workspace adicional, agrega el ID de compartimento de ese workspace a la condición con kms:PutKeyPolicy antes de adjuntarla.
Registra la clave con Anthropic
Crea una configuración de clave externa a través de la Admin API.
Para organizaciones en Claude Platform en AWS, los endpoints de claves externas aún no están disponibles. En su lugar, registra, valida y adjunta tu clave en la Claude Console.
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-create-key-step>",
"role_arn": "arn:aws:iam::915198916910:role/anthropic-cmek-client-us"
}
}'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 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:
AccessDeniedException opaca cuando una condición kms:EncryptionContext:anthropic:compartment_uuid permite solo uno de los dos valores que Anthropic envía. La validación envía el UUID de todos ceros (00000000-0000-0000-0000-000000000000); el tráfico en vivo envía el ID de compartimento del workspace adjunto. Confirma que la condición incluya ambos. Para descartar la condición por completo, elimina temporalmente el bloque Condition de la declaración AllowAnthropicCMEKCrypto y vuelve a validar.aws:PrincipalOrgID no coincide con tu organización, 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 workspace
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>"
}'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.
Was this page helpful?