claude "/claude-api help me configure a customer-managed encryption key with AWS KMS"Questa guida illustra come configurare una chiave AWS KMS come "customer-managed encryption key" (chiave di crittografia gestita dal cliente), o CMEK, per la tua organizzazione Anthropic.
L'abilitazione di CMEK è permanente. Se la tua chiave KMS viene eliminata o disabilitata, Anthropic non può recuperare i dati crittografati con essa. Consulta le avvertenze e limitazioni prima di iniziare.
kms:CreateKey e kms:PutKeyPolicy).Affinché Anthropic utilizzi la tua chiave di crittografia, devi concedere al ruolo IAM di Anthropic una chiave KMS che possa utilizzare per crittografare i dati. L'ARN per Anthropic CMEK è:
arn:aws:iam::915198916910:role/anthropic-cmek-client-usUtilizza solo questo ARN pubblicato. Non fidarti mai di un identificatore fornito tramite email, chat o qualsiasi canale di onboarding.
Crea la chiave KMS con una key policy cross-account
La key policy concede al ruolo IAM di Anthropic l'accesso cross-account. Sono richieste tre istruzioni:
kms:Encrypt e kms:Decrypt, che Anthropic utilizza per crittografare e decrittografare le data key che proteggono i dati del tuo workspace (envelope encryption).DescribeKey non ha un parametro EncryptionContext, quindi una condizione EncryptionContext su questa azione risulterebbe sempre in un deny.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\": \"*\"
}
]
}"Acquisisci KeyMetadata.Arn dall'output. Ti servirà quando registrerai la chiave nel passaggio successivo.
La condizione EncryptionContext è consigliata ma opzionale. Anthropic include sempre il compartment ID del tuo workspace nell'encryption context, quindi il testo cifrato è comunque vincolato crittograficamente a quel compartment. L'aggiunta della condizione fornisce una difesa in profondità a livello IAM. Per iniziare senza di essa, ometti il blocco Condition dall'istruzione AllowAnthropicCMEKCrypto e aggiungilo in seguito con kms:PutKeyPolicy.
Trovare il tuo compartment ID: ogni workspace ha un compartment ID che delimita l'ambito dei suoi dati CMEK. Puoi trovarlo nella Claude Console in Workspace > Security > Encryption keys (il campo Compartment ID), oppure leggere il campo compartment_id restituito dall'endpoint Get Workspace. Sostituisci quel valore a <compartment-uuid> nella key policy sopra. Anthropic lo invia anche come encryption context durante la validazione della chiave, quindi il valore della condizione deve corrispondere affinché la validazione abbia successo.
Puoi anche creare la chiave dalla Console AWS. Scegli una chiave simmetrica con utilizzo encrypt and decrypt, una chiave single-region e origine del materiale della chiave KMS. La procedura guidata di creazione della chiave applica una key policy al passaggio Review: se aggiungi l'ID account di Anthropic 915198916910 nelle autorizzazioni di utilizzo della chiave in quel punto, la policy generata concede all'intero account Anthropic azioni più ampie (come kms:ReEncrypt* e kms:GenerateDataKey*) senza alcuna condizione EncryptionContext, e la validazione avrebbe comunque successo. Per evitare di lasciare una chiave con autorizzazioni eccessive, completa la procedura guidata solo con le autorizzazioni amministrative, quindi apri la scheda Key policy della chiave e sostituisci il JSON con la policy limitata al ruolo mostrata sopra (le tre istruzioni limitate al ruolo anthropic-cmek-client-us, con la condizione EncryptionContext).




Registra la chiave con Anthropic
Crea una configurazione di chiave esterna tramite l'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 risposta contiene l'ID della chiave esterna:
{
"type": "external_key",
"id": "ekey_<id>",
"display_name": "<friendly-name>"
}Valida la chiave
Attiva un round-trip di encrypt e decrypt sulla tua chiave.
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 risposta di successo ha questo aspetto:
{ "type": "external_key_validation", "status": "success", "error": null }Se la validazione fallisce, le cause comuni sono:
EncryptionContext nella key policy, verifica di aver sostituito <compartment-uuid> con il compartment ID effettivo del tuo workspace (vedi passaggio 1). Un valore errato o non sostituito fa sì che KMS restituisca un'eccezione AccessDeniedException opaca. Per escludere questa causa, rimuovi temporaneamente il blocco Condition dall'istruzione AllowAnthropicCMEKCrypto e ripeti la validazione.aws:PrincipalOrgID non corrisponde alla tua organizzazione, questa blocca il ruolo cross-account di Anthropic. La RCP necessita di un'eccezione per questa chiave o per l'ARN del ruolo di Anthropic. Le service control policy non si applicano in questo caso, perché non vengono valutate per principal esterni che effettuano chiamate tramite policy basate sulle risorse.aws kms get-key-policy --key-id <id> --policy-name default.Associa la chiave 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>"
}'Per i deployment infrastructure-as-code, gli stessi passaggi corrispondono al provider aws con le risorse aws_kms_key e aws_kms_alias.
Was this page helpful?