Configurare AWS KMS per CMEK
Usa AWS KMS per fornire una chiave di crittografia per la tua organizzazione.
Claude Code
Lascia che Claude Code configuri questa funzionalità per te
/claude-api aiutami a configurare una chiave di crittografia gestita dal cliente con AWS KMSQuesta guida illustra la configurazione di una chiave AWS KMS come chiave di crittografia gestita dal cliente (CMEK) per la tua organizzazione Anthropic.
Prerequisiti
- Un account AWS con i permessi per creare chiavi KMS e impostare policy delle chiavi (
kms:CreateKeyekms:PutKeyPolicy). - Una chiave Admin API per la tua organizzazione.
- La AWS CLI installata e autenticata.
Amazon Resource Name (ARN) per Anthropic
Per far sì che Anthropic utilizzi la tua chiave di crittografia, devi fornire al ruolo IAM di Anthropic una chiave KMS che possa usare per crittografare i dati. L'ARN per Anthropic CMEK è:
arn:aws:iam::915198916910:role/anthropic-cmek-client-usConfigurazione della chiave di crittografia
Crea la chiave KMS con una policy della chiave cross-account
La policy della chiave concede al ruolo IAM di Anthropic l'accesso cross-account. Sono richieste tre dichiarazioni:
- Admin root dell'account: il pattern KMS standard. Il tuo account mantiene il pieno controllo amministrativo.
- Encrypt e decrypt di Anthropic: le azioni
kms:Encryptekms:Decrypt, che Anthropic usa per crittografare e decrittografare le chiavi dati che proteggono i dati del tuo workspace (crittografia envelope). - Describe di Anthropic: la lettura dei metadati che Anthropic esegue all'avvio. Viene concessa separatamente perché
DescribeKeynon ha un parametroEncryptionContext, quindi una condizioneEncryptionContextsu questa azione negherebbe sempre.
Per trovare l'ID del tuo account AWS, esegui
aws sts get-caller-identity --query Account --output text.Nella policy, sostituisci
<AWS_ACCOUNT_ID>con l'ID del tuo account AWS e<ORGANIZATION_UUID>con l'ID della tua organizzazione. La condizioneStringEqualssukms:EncryptionContext:anthropic:org_uuidvincola la chiave alla tua organizzazione Anthropic, e la validazione rifiuta una chiave senza di essa. Per condividere una chiave tra più organizzazioni Anthropic, elenca l'ID di ciascuna organizzazione nel valore della condizione.Salva la policy come
key-policy.json. Per creare invece la chiave nella AWS Console, incolla lì la policy, come descritto più avanti in questo passaggio.key-policy.json{ "Version": "2012-10-17", "Statement": [ { "Sid": "AccountRootAdmin", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<AWS_ACCOUNT_ID>: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:org_uuid": ["<ORGANIZATION_UUID>"] } } }, { "Sid": "AllowAnthropicCMEKDescribe", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::915198916910:role/anthropic-cmek-client-us" }, "Action": "kms:DescribeKey", "Resource": "*" } ] }aws kms create-key \ --region <REGION> \ --description "Anthropic CMEK" \ --key-usage ENCRYPT_DECRYPT \ --policy file://key-policy.jsonCattura
KeyMetadata.Arndall'output. Ne hai bisogno quando registri la chiave nel passaggio successivo.Anthropic valida la chiave quando la verifichi o la colleghi a un workspace. Ogni validazione aggiunge quattro errori di accesso negato a CloudTrail. Questi sono previsti. Se hai bisogno di filtrarli, filtra su tutti e tre i seguenti valori. Il primo da solo non è sufficiente, perché qualsiasi chiamante può impostarlo:
requestParameters.encryptionContext.associatedData:Y21lay12YWxpZGF0aW9uuserIdentity.accountId:915198916910resources.ARN:arn:aws:kms:<REGION>:<AWS_ACCOUNT_ID>:key/<KEY_ID>
Puoi anche creare la chiave dalla AWS Console. Scegli una chiave simmetrica con l'uso chiave encrypt e decrypt, una chiave a regione singola, e origine del materiale della chiave KMS. La procedura guidata Create-key conferma una policy della chiave al suo passaggio Review: Se aggiungi l'ID account di Anthropic
915198916910sotto i permessi di uso della chiave lì, la policy generata concede all'intero account Anthropic azioni più ampie (comekms:ReEncrypt*ekms:GenerateDataKey*) senza una condizioneEncryptionContext, e la validazione la rifiuta. Per evitare di lasciare una chiave con permessi eccessivi, completa la procedura guidata con i soli permessi amministrativi, poi apri la scheda Key policy della chiave e sostituisci il JSON con la policykey-policy.jsonmostrata in precedenza in questo passaggio.
Configura la chiave: simmetrica, encrypt e decrypt, chiave a regione singola. 
Aggiungi un alias e una descrizione per la chiave. 
Definisci i permessi amministrativi della chiave (opzionale). Il tuo account mantiene il pieno controllo amministrativo. 
Non aggiungere qui l'ID account di Anthropic. Questo passaggio della procedura guidata produce una policy con permessi eccessivi. Lascia vuoti i permessi di uso e modifica il JSON della Key policy dopo la creazione (vedi la policy della chiave precedente).
Registra la chiave con Anthropic
Il modo in cui registri la chiave dipende dal prodotto che usi.
Puoi configurare la chiave nella Claude Console o tramite l'Admin API, con lo stesso risultato.
Registra la chiave con Anthropic
Nella Claude Console, vai alla pagina Data retention (
platform.claude.com/settings/privacy). Se non vedi Encryption keys, seleziona Organization dal menu a discesa nella parte superiore della pagina. In Encryption keys, fai clic su Add key. Inserisci un nome visualizzato, scegli AWS KMS e fai clic su Continue. Incolla l'ARN della chiave in KMS key ARN e fai clic su Add.Il passaggio dei dettagli della chiave mostra l'ID della tua organizzazione. Aggiungilo alla policy della chiave prima di cliccare Add.
Valida la chiave
Nell'elenco Encryption keys, fai clic su Verify accanto alla chiave. Quando il controllo ha esito positivo appare Connected. Se non riesce, un messaggio ne indica il motivo.
Collega la chiave a un workspace
Nella Claude Console, vai alla pagina Data retention (
platform.claude.com/settings/privacy) e seleziona il workspace dal menu a discesa nella parte superiore della pagina. In Encryption key, seleziona la chiave, fai clic su Save e conferma. Il collegamento di una chiave non può essere annullato. Per un workspace che riceve già richieste, la chiave può impiegare fino a un giorno per avere effetto.
Registra la chiave con Anthropic
Crea una configurazione di chiave esterna tramite l'Admin API.
Pythonclient = anthropic.Anthropic() external_key = client.organization.external_keys.create( display_name="<friendly-name>", geo="us", provider_config={"type": "aws", "kms_arn": "<key-arn-from-create-key-step>"}, ) print(f"id: {external_key.id}") print(f"display_name: {external_key.display_name}")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.
Pythonclient = anthropic.Anthropic() validation = client.organization.external_keys.validate("ekey_<id>") print(f"status: {validation.status}") print(f"error: {validation.error}")Una risposta riuscita appare così:
{ "type": "external_key_validation", "status": "success", "error": null }Se la validazione fallisce, le cause comuni sono:
- Mancata corrispondenza del contesto di crittografia: Se la policy ha una condizione
kms:EncryptionContext:anthropic:compartment_uuid, assicurati che elenchi l'ID di compartimento di ogni workspace a cui la chiave è collegata. La validazione invia l'ID di compartimento del workspace che controlla. Una chiave più vecchia la cui dichiarazione di compartimento consente ancorakms:Encryptviene validata con il valore tutto zeri (00000000-0000-0000-0000-000000000000) mentre non è collegata, quindi mantieni quel valore nel suo elenco. - Resource control policy (RCP): Se la tua organizzazione AWS ha una RCP che nega le operazioni KMS quando
aws:PrincipalOrgIDnon corrisponde alla tua org, 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 qui, perché non vengono valutate per i principal esterni che chiamano tramite policy basate sulle risorse. - Accesso concesso tramite IAM anziché la policy della chiave: L'accesso KMS cross-account deve essere concesso nella policy della chiave stessa, non tramite una policy IAM nel tuo account. Controlla con
aws kms get-key-policy --key-id <id> --policy-name default. - Mancata corrispondenza della regione: Conferma che la regione della chiave sia una in cui Anthropic opera per il geo tier che hai configurato.
- Mancata corrispondenza del contesto di crittografia: Se la policy ha una condizione
Collega la chiave a un workspace
Una volta validata la chiave, collegala a un nuovo workspace prima di inviare qualsiasi richiesta a quel workspace. Per un workspace che riceve già richieste, la chiave può impiegare fino a un giorno per avere effetto.
Pythonclient = anthropic.Anthropic() workspace = client.organization.workspaces.update( "<workspace-id>", external_key_id="ekey_<id>" ) print(f"id: {workspace.id}") print(f"external_key_id: {workspace.external_key_id}")
In claude.ai > Organization settings > Data and privacy, apri Encryption keys, poi clicca Add key. Scegli AWS e clicca Continue, poi incolla l'ARN della chiave dal passaggio precedente e clicca Add. Anthropic valida la chiave con un round-trip di encrypt e decrypt. Una volta che appare come verificata, la tua organizzazione è protetta da CMEK da quel momento in poi.
Il passaggio dei dettagli della chiave di questo flusso mostra il tuo Organization ID for the key policy con un pulsante di copia. Sostituisci quel valore per <ORGANIZATION_UUID> nella policy della chiave. Puoi aprire il flusso per copiare l'ID prima di creare la chiave.
Su Claude Enterprise, CMEK si applica all'intera organizzazione, quindi non c'è un passaggio di collegamento al workspace separato, e un'organizzazione può avere solo una chiave.
Configurare CMEK su Claude Platform on AWS
Su Claude Platform on AWS, CMEK usa solo chiavi AWS KMS, e la configurazione differisce dalle sezioni precedenti in questi modi:
- Principal: La tua policy della chiave concede l'accesso al principal di servizio AWS
aws-external-anthropic.amazonaws.com. Il ruolo IAM e l'ID account di Anthropic non vengono usati, quindi l'ARN per Anthropic non si applica. - Requisiti della chiave: La chiave deve essere una chiave KMS simmetrica con uso encrypt e decrypt, a regione singola, e nello stesso account e regione AWS del workspace a cui la colleghi. Le chiavi cross-account non sono supportate: la chiave deve essere nell'account AWS che ospita la tua organizzazione. Le chiavi multi-regione (ID chiave che iniziano con
mrk-) e gli ARN di alias vengono rifiutati quando registri la chiave; usa l'ARN della chiave. - Nessun passaggio di validazione separato: A parte quei controlli sull'ARN della chiave alla registrazione, la chiave viene validata quando la colleghi a un workspace. La chiamata di collegamento esegue un round di encrypt/decrypt sulla chiave con l'ID di compartimento di quel workspace come contesto di crittografia, quindi un problema della policy della chiave emerge al momento del collegamento anziché alla registrazione. Una condizione
EncryptionContextquindi non necessita di una voce tutto zeri. - Dove gestisci le chiavi: Registra e collega le chiavi nella Claude Console, autenticato tramite AWS con il ruolo Admin. Gli endpoint delle chiavi esterne sono disponibili anche su Claude Platform on AWS, autorizzati tramite azioni IAM; lì, una chiave è identificata dal suo ARN della chiave KMS anziché da un ID
ekey_.
Prerequisiti
- L'account AWS che ospita la tua organizzazione Claude Platform on AWS, con i permessi per creare chiavi KMS e impostare policy delle chiavi (
kms:CreateKeyekms:PutKeyPolicy). - Il ruolo Admin nella Claude Console per Claude Platform on AWS. Vedi Usare la Claude Console.
- Per il principal IAM con cui accedi alla Claude Console: oltre a
aws-external-anthropic:AssumeConsole, le azioni IAM per le operazioni che esegui lì, perché la registrazione, l'elenco e il collegamento delle chiavi passano attraverso il gateway AWS. La registrazione di una chiave corrisponde aRegisterKey(conListKeyseGetKeyper visualizzare le registrazioni) e il collegamento corrisponde aUpdateWorkspaceoCreateWorkspace. Le azioni sulle chiavi esterne (eCreateWorkspace) hanno ambito a livello di account, quindi concedile suResource: "*"; una policy limitata agli ARN dei workspace non le include. - Per il principal IAM che collega la chiave a un workspace (l'identità con cui hai effettuato l'accesso alla Claude Console):
kms:DescribeKey,kms:Encrypt, ekms:Decryptsulla chiave. L'accesso del tuo principal alla chiave viene controllato quando la colleghi, oltre a quello del principal di servizio. - Opzionale, per il selettore di chiavi nella Claude Console:
kms:ListKeysekms:DescribeKeyper il principal con cui accedi. Senza di essi, incolla invece l'ARN della chiave.
Crea la chiave KMS
La policy della chiave ha tre dichiarazioni: la dichiarazione di amministrazione root del tuo account; una dichiarazione che consente al principal di servizio di Claude Platform on AWS di crittografare, decrittografare e generare chiavi dati; e una dichiarazione separata per kms:DescribeKey. La dichiarazione crittografica include una condizione EncryptionContext opzionale che vincola la chiave ai workspace che elenchi. DescribeKey viene concessa separatamente perché non ha un parametro EncryptionContext, quindi una condizione EncryptionContext su quell'azione negherebbe sempre l'accesso.
Se prevedi di usare la condizione EncryptionContext facoltativa mostrata qui, crea prima il workspace (senza chiave), copia il suo ID di compartimento e sostituiscilo a <compartment-uuid>. Per trovare l'ID nella Claude Console, vai alla pagina Data retention (platform.claude.com/settings/privacy) e seleziona il workspace dal menu a discesa nella parte superiore della pagina. L'ID si trova in Encryption key, nel campo Compartment ID. Puoi anche leggerlo dal campo compartment_id restituito dall'endpoint Get Workspace. Se non prevedi di usare la condizione, elimina il blocco Condition da quella dichiarazione.
export YOUR_ACCOUNT=$(aws sts get-caller-identity --query Account --output text)
aws kms create-key \
--region <workspace-region> \
--description "Anthropic CMEK (Claude Platform on AWS)" \
--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\": \"AllowClaudePlatformOnAWSCrypto\",
\"Effect\": \"Allow\",
\"Principal\": {\"Service\": \"aws-external-anthropic.amazonaws.com\"},
\"Action\": [\"kms:Encrypt\", \"kms:Decrypt\", \"kms:GenerateDataKey\"],
\"Resource\": \"*\",
\"Condition\": {
\"StringEquals\": {
\"kms:EncryptionContext:anthropic:compartment_uuid\": [
\"<compartment-uuid>\"
]
}
}
},
{
\"Sid\": \"AllowClaudePlatformOnAWSDescribe\",
\"Effect\": \"Allow\",
\"Principal\": {\"Service\": \"aws-external-anthropic.amazonaws.com\"},
\"Action\": \"kms:DescribeKey\",
\"Resource\": \"*\"
}
]
}"Cattura KeyMetadata.Arn dall'output. Ne hai bisogno quando registri la chiave.
La condizione EncryptionContext è opzionale. Ogni chiamata di crittografia, decrittografia e chiave dati effettuata per un workspace, incluso il controllo al momento del collegamento, include l'ID di compartimento di quel workspace come anthropic:compartment_uuid, quindi la condizione elenca l'ID di compartimento di ogni workspace a cui colleghi la chiave e non necessita di alcuna voce di soli zeri. Aggiungerla vincola la chiave ai workspace che elenchi anche a livello IAM. Poiché un ID di compartimento esiste solo dopo che il relativo workspace esiste, l'ordine è: crea il workspace, inserisci il suo ID di compartimento nella condizione (alla creazione della chiave, o successivamente con kms:PutKeyPolicy), quindi collega la chiave. Prima di collegare la chiave a ogni workspace aggiuntivo, aggiungi l'ID di compartimento di quel workspace nello stesso modo. Per iniziare senza di essa, elimina il blocco Condition dalla dichiarazione AllowClaudePlatformOnAWSCrypto; se la aggiungi in seguito, includi l'ID di compartimento di ogni workspace a cui la chiave è già collegata.
Puoi limitare ulteriormente entrambe le dichiarazioni del principal di servizio con una condizione aws:SourceArn. Il servizio passa l'ARN del workspace (arn:aws:aws-external-anthropic:<region>:<account-id>:workspace/<workspace-id>) come ARN di origine in ogni chiamata che effettua con la tua chiave, quindi "ArnLike": {"aws:SourceArn": "arn:aws:aws-external-anthropic:*:<account-id>:workspace/*"} limita la concessione ai workspace nel tuo account AWS, e un elenco di ARN completi dei workspace la limita a quei workspace. Questa condizione non è obbligatoria; la condizione EncryptionContext da sola vincola la chiave ai workspace che elenchi.
Puoi anche creare la chiave dalla AWS Console: scegli una chiave simmetrica con l'uso chiave encrypt e decrypt, una chiave a regione singola, e origine del materiale della chiave KMS, nella regione del workspace. Lascia vuoti i permessi di uso della chiave nella procedura guidata Create-key, poi apri la scheda Key policy della chiave e sostituisci il JSON con la policy mostrata qui.
Registra e collega la chiave
Registra la chiave
Nella Claude Console, vai alla pagina Data retention (
platform.claude.com/settings/privacy). Se non vedi Encryption keys, seleziona Organization dal menu a discesa nella parte superiore della pagina. In Encryption keys, fai clic su Add key. Inserisci un nome visualizzato, quindi scegli la chiave dal selettore di chiavi oppure scegli Enter ARN manually e incolla l'ARN della chiave, e fai clic su Add. La chiave deve trovarsi nell'account AWS che ospita la tua organizzazione; le chiavi cross-account non sono supportate. Il selettore elenca le chiavi abilitate, gestite dal cliente, simmetriche e a regione singola presenti nel tuo account in una delle regioni della tua organizzazione; per una chiave che il selettore non elenca, inserisci l'ARN. Elenca le chiavi solo se il principal con cui hai effettuato l'accesso può chiamarekms:ListKeysekms:DescribeKey.Collega la chiave a un workspace
Collega la chiave a un nuovo workspace prima di inviare qualsiasi richiesta a quel workspace. Per un workspace che riceve già richieste, la chiave può impiegare fino a un giorno per diventare effettiva. Nella Claude Console, vai alla pagina Data retention (
platform.claude.com/settings/privacy) e seleziona il workspace dal menu a discesa nella parte superiore della pagina. In Encryption key, seleziona la chiave, fai clic su Save e conferma. Puoi anche selezionare una chiave quando crei un workspace nella Claude Console, ma solo se la tua policy della chiave non nomina ancora workspace specifici (nessuna condizioneEncryptionContext), perché l'ID di compartimento del workspace viene assegnato alla creazione. Una volta collegata, la chiave di un workspace non può essere modificata.Questo è il momento in cui la chiave viene validata: la chiamata di collegamento controlla l'accesso del tuo principal alla chiave ed esegue un round di encrypt/decrypt su di essa con l'ID di compartimento del workspace come contesto di crittografia, quindi un problema con la policy della chiave o con i permessi del tuo principal emerge come errore su quella chiamata. Se il collegamento fallisce con un errore di accesso KMS, controlla quanto segue:
- La policy della chiave nomina il principal di servizio
aws-external-anthropic.amazonaws.come concedekms:Encrypt,kms:Decrypt, ekms:GenerateDataKey, piùkms:DescribeKeyin una dichiarazione separata che non ha una condizioneEncryptionContext. - Qualsiasi condizione
EncryptionContextinclude l'ID di compartimento di questo workspace, e qualsiasi condizioneaws:SourceArnche hai aggiunto corrisponde all'ARN di questo workspace. - La chiave è abilitata, a regione singola, e nello stesso account e regione AWS del workspace.
- Il principal con cui hai effettuato l'accesso ha
kms:DescribeKey,kms:Encrypt, ekms:Decryptsulla chiave. - Nessuna service control policy o resource control policy nella tua organizzazione AWS impedisce al principal di servizio o al tuo principal di usare la chiave.
- Se la policy sembra corretta e il collegamento continua a non riuscire, trova l'evento
kms:negato in CloudTrail nell'account della chiave (mostra il principal chiamante e, per le chiamate crittografiche, il contesto di crittografia), quindi correggi la condizione conkms:PutKeyPolicye riprova.
- La policy della chiave nomina il principal di servizio
Terraform
Per i deployment infrastructure-as-code, gli stessi passaggi si mappano al provider aws con le risorse aws_kms_key e aws_kms_alias.
Was this page helpful?