claude "/claude-api help me configure a customer-managed encryption key with AWS KMS"Ce guide explique comment configurer une clé AWS KMS en tant que « customer-managed encryption key » (clé de chiffrement gérée par le client, ou CMEK) pour votre organisation Anthropic.
L'activation de CMEK est permanente. Si votre clé KMS est supprimée ou désactivée, Anthropic ne peut pas récupérer les données chiffrées avec celle-ci. Consultez les avertissements et limitations avant de commencer.
kms:CreateKey et kms:PutKeyPolicy).Pour qu'Anthropic utilise votre clé de chiffrement, vous devez donner au rôle IAM d'Anthropic une clé KMS qu'il peut utiliser pour chiffrer les données. L'ARN pour Anthropic CMEK est :
arn:aws:iam::915198916910:role/anthropic-cmek-client-usUtilisez uniquement cet ARN publié. Ne faites jamais confiance à un identifiant fourni par e-mail, chat ou tout autre canal d'intégration.
Créer la clé KMS avec une politique de clé inter-comptes
La politique de clé accorde au rôle IAM d'Anthropic un accès inter-comptes. Trois déclarations sont requises :
kms:Encrypt et kms:Decrypt, qu'Anthropic utilise pour chiffrer et déchiffrer les clés de données qui protègent les données de votre espace de travail (chiffrement par enveloppe).DescribeKey n'a pas de paramètre EncryptionContext, donc une condition EncryptionContext sur cette action refuserait toujours.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\": \"*\"
}
]
}"Récupérez KeyMetadata.Arn dans la sortie. Vous en aurez besoin lorsque vous enregistrerez la clé à l'étape suivante.
La condition EncryptionContext est recommandée mais facultative. Anthropic inclut toujours l'ID de compartiment de votre espace de travail dans le contexte de chiffrement, de sorte que le texte chiffré est cryptographiquement lié à ce compartiment dans tous les cas. L'ajout de la condition fournit une défense en profondeur au niveau de la couche IAM. Pour commencer sans elle, omettez le bloc Condition de la déclaration AllowAnthropicCMEKCrypto et ajoutez-le plus tard avec kms:PutKeyPolicy.
Trouver votre ID de compartiment : L'emplacement de votre ID de compartiment diffère entre Claude Platform et Claude Enterprise. Consultez les onglets Claude Platform et Claude Enterprise sous Enregistrer la clé auprès d'Anthropic.
Vous pouvez également créer la clé depuis la console AWS. Choisissez une clé symétrique avec l'usage de clé chiffrement et déchiffrement, une clé mono-région et une origine de matériel de clé KMS. L'assistant de création de clé valide une politique de clé à son étape Review : si vous ajoutez l'ID de compte d'Anthropic 915198916910 sous les autorisations d'utilisation de la clé à cet endroit, la politique générée accorde à l'ensemble du compte Anthropic des actions plus larges (telles que kms:ReEncrypt* et kms:GenerateDataKey*) sans condition EncryptionContext, et la validation réussirait quand même avec celle-ci. Pour éviter de laisser une clé trop permissive, terminez l'assistant avec les autorisations administratives uniquement, puis ouvrez l'onglet Key policy de la clé et remplacez le JSON par la politique limitée au rôle présentée précédemment (les trois déclarations limitées au rôle anthropic-cmek-client-us, avec la condition EncryptionContext).




La manière dont vous enregistrez la clé dépend du produit que vous utilisez.
Trouver votre ID de compartiment : Chaque espace de travail possède un ID de compartiment qui délimite ses données CMEK. Trouvez-le dans la Claude Console sous Workspace > Security > Encryption keys (le champ Compartment ID), ou lisez le champ compartment_id renvoyé par le point de terminaison Get Workspace. Remplacez <compartment-uuid> par cette valeur dans la politique de clé précédente.
La validation de la clé envoie toujours l'UUID de compartiment composé uniquement de zéros (00000000-0000-0000-0000-000000000000) comme contexte de chiffrement, car la validation s'exécute avant que la clé ne soit attachée à un espace de travail. Le trafic en production envoie l'ID de compartiment de chaque espace de travail attaché.
Toute condition EncryptionContext doit autoriser la valeur composée uniquement de zéros ainsi que l'ID de compartiment de chaque espace de travail auquel la clé est attachée. La validation s'exécute également à nouveau chaque fois que la configuration de la clé est relancée, donc conservez l'entrée composée uniquement de zéros en permanence.
Pour attacher la clé à un espace de travail supplémentaire, ajoutez l'ID de compartiment de cet espace de travail à la condition avec kms:PutKeyPolicy avant de l'attacher.
Enregistrer la clé auprès d'Anthropic
Créez une configuration de clé externe via l'API Admin.
Pour les organisations sur Claude Platform sur AWS, les points de terminaison de clé externe ne sont pas encore disponibles. Enregistrez, validez et attachez votre clé dans la Claude Console à la place.
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 réponse contient l'ID de la clé externe :
{
"type": "external_key",
"id": "ekey_<id>",
"display_name": "<friendly-name>"
}Valider la clé
Déclenchez un aller-retour de chiffrement et de déchiffrement avec votre clé.
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 '{}'Une réponse réussie ressemble à ceci :
{ "type": "external_key_validation", "status": "success", "error": null }Si la validation échoue, les causes courantes sont :
AccessDeniedException opaque lorsqu'une condition kms:EncryptionContext:anthropic:compartment_uuid n'autorise qu'une seule des deux valeurs envoyées par Anthropic. La validation envoie l'UUID composé uniquement de zéros (00000000-0000-0000-0000-000000000000) ; le trafic en production envoie l'ID de compartiment de l'espace de travail attaché. Confirmez que la condition liste les deux. Pour écarter entièrement la condition, supprimez temporairement le bloc Condition de la déclaration AllowAnthropicCMEKCrypto et revalidez.aws:PrincipalOrgID ne correspond pas à votre organisation, elle bloque le rôle inter-comptes d'Anthropic. La RCP a besoin d'une exception pour cette clé ou pour l'ARN du rôle d'Anthropic. Les politiques de contrôle de service ne s'appliquent pas ici, car elles ne sont pas évaluées pour les principaux externes appelant via des politiques basées sur les ressources.aws kms get-key-policy --key-id <id> --policy-name default.Attacher la clé à un espace de travail
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>"
}'Pour les déploiements « infrastructure-as-code » (infrastructure en tant que code), les mêmes étapes correspondent au fournisseur aws avec les ressources aws_kms_key et aws_kms_alias.
Was this page helpful?