Configurare Azure Key Vault per CMEK
Usa Azure Key Vault per fornire una chiave di crittografia per la tua organizzazione.
claude "/claude-api help me configure a customer-managed encryption key with Azure Key Vault"Questa guida illustra come configurare una chiave di Azure Key Vault come customer-managed encryption key (chiave di crittografia gestita dal cliente), o CMEK per la tua organizzazione Anthropic.
Prerequisiti
- Un Azure Key Vault con autorizzazione RBAC abilitata (
enableRbacAuthorization: true) e accesso alla rete pubblica consentito. Anthropic chiama il tuo vault tramite l'endpoint pubblico del data plane; gli endpoint privati non sono supportati. - Protezione dall'eliminazione definitiva (purge protection) abilitata (
enablePurgeProtection: true) sul vault. Senza di essa, una chiave eliminata può essere rimossa definitivamente durante la finestra di conservazione del soft-delete, causando la perdita irreversibile dei tuoi dati protetti da CMEK. La purge protection non può essere disabilitata una volta abilitata. - Permessi per creare chiavi nel vault e per assegnare ruoli RBAC su di esso.
- Permessi per creare service principal nel tuo tenant Entra (
Application Administrator,Cloud Application Administratoro un ruolo personalizzato equivalente). - Una chiave API Admin di Anthropic per la tua organizzazione.
- La CLI
azinstallata e autenticata. - Diagnostic Settings (impostazioni di diagnostica) configurate sul vault per instradare la categoria di log
AuditEventverso Log Analytics, un account di archiviazione o un event hub. Azure Key Vault non emette log di audit del data plane (comeKeyWrap,KeyUnwrapeKeyGet) per impostazione predefinita, quindi senza questa configurazione non ottieni alcuna traccia di audit per le operazioni di Anthropic sulla chiave.
Informazioni sull'app Anthropic
Per consentire ad Anthropic di usare la tua chiave di crittografia, devi configurare un ID applicazione multitenant di Anthropic e un nome visualizzato. Questi valori sono:
| Campo | Valore |
|---|---|
| Client ID dell'app multitenant (US) | 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 |
| Nome visualizzato dell'app | anthropic-cmek-client-us |
Configurazione della chiave di crittografia
Concedi il consenso all'applicazione multitenant di Anthropic
Questo crea un service principal nel tuo tenant Entra per l'applicazione client CMEK di Anthropic. L'applicazione non richiede alcun permesso Microsoft Graph; esiste unicamente come destinazione di federazione per l'accesso al data plane di Key Vault.
az ad sp create --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87Dall'output, acquisisci il campo
id. Questo è l'object ID del service principal nel tuo tenant, che userai quando assegni il ruolo RBAC.{ "appId": "8635ae1a-3e5d-44e8-a4ed-e0f614466f87", "displayName": "anthropic-cmek-client-us", "id": "<sp-object-id>" }Se il service principal esiste già nel tuo tenant (da un tentativo precedente o da un'altra integrazione),
az ad sp createtermina con un errore "already exists". Recupera invece il suo object ID:az ad sp show --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 --query id -o tsvQuesto passaggio non ha un equivalente nel Portal. Se non hai la Azure CLI installata localmente, apri Cloud Shell dalla barra di navigazione superiore del Portal. Dopo che il comando ha avuto successo, puoi trovare l'object ID del service principal in Microsoft Entra ID > Enterprise applications rimuovendo il filtro predefinito per tipo di applicazione e cercando
anthropic-cmek-client-us.
Trova l'Object ID del service principal nella panoramica della sua enterprise application in Entra. Crea una chiave RSA nel tuo vault
Azure Key Vault non supporta il wrapping di chiavi simmetriche, quindi la chiave deve essere RSA (3072 bit o superiore) con
wrapKeyeunwrapKeytra le operazioni consentite.az keyvault key create \ --vault-name <your-vault-name> \ --name <your-key-name> \ --kty RSA --size 3072 \ --ops wrapKey unwrapKeyPer chiavi supportate da HSM, usa
--kty RSA-HSM(richiede un vault con SKU Premium). Le chiavi RSA protette via software sono accettabili per questa integrazione.Dal Portal, apri il tuo Key Vault, seleziona Keys, quindi Generate/Import. Imposta il tipo di chiave su RSA e la dimensione su 3072 o superiore. Per limitare la chiave alle sole operazioni di wrap e unwrap, apri la versione della chiave, scorri fino a Permitted operations (operazioni consentite) e deseleziona tutto tranne Wrap Key e Unwrap Key.

Crea una chiave RSA di dimensione 3072 o superiore. 
Limita le Permitted operations (operazioni consentite) a Wrap Key e Unwrap Key. Concedi al service principal di Anthropic l'accesso alla tua chiave
Assegna il ruolo
Key Vault Crypto Useral service principal del primo passaggio, con ambito limitato alla singola chiave anziché all'intero vault.VAULT_ID=$(az keyvault show --name <your-vault-name> --query id -o tsv) az role assignment create \ --role "Key Vault Crypto User" \ --assignee-object-id <sp-object-id> \ --assignee-principal-type ServicePrincipal \ --scope "${VAULT_ID}/keys/<your-key-name>"Il ruolo predefinito
Key Vault Crypto Userconcede le operazioni crittografiche sulle chiavi (encrypt, decrypt, wrap, unwrap, sign, verify) più la lettura delle chiavi nell'ambito assegnato. La restrizione--ops wrapKey unwrapKeyche hai impostato sulla chiave nel passaggio precedente restringe ulteriormente quali di queste operazioni possono avere successo su questa chiave, quindi in pratica Anthropic può solo eseguire wrap e unwrap.Dal Portal, apri la chiave (non il vault), seleziona la scheda Access control (IAM), fai clic su Add > Add role assignment, seleziona Key Vault Crypto User e assegnalo al service principal
anthropic-cmek-client-us.
Assegna Key Vault Crypto User al service principal di Anthropic, con ambito limitato alla chiave. Verifica la configurazione del tuo vault
az keyvault show --name <your-vault-name> \ --query "{rbac:properties.enableRbacAuthorization, purge:properties.enablePurgeProtection, pub:properties.publicNetworkAccess, net:properties.networkAcls.defaultAction, ipRules:properties.networkAcls.ipRules, uri:properties.vaultUri, tenantId:properties.tenantId}"Conferma che:
rbacsiatrue.purgesiatrue. Se èfalseonull, abilita la purge protection sul vault prima di procedere. Senza di essa, una chiave in soft-delete può essere rimossa definitivamente durante la finestra di conservazione, rendendo irrecuperabili i tuoi dati protetti da CMEK.pubsia"Enabled". Se è"Disabled", Anthropic non può raggiungere il vault tramite il suo endpoint pubblico del data plane e la validazione fallisce.netsia"Allow", oppure, se è"Deny", cheipRulesincluda gli intervalli di egress di Anthropic (contatta Anthropic per l'elenco aggiornato).urisia l'URI del vault che userai quando registri la chiave.tenantIdsia il tenant che governa il vault. Usa questo valore cometenant_idquando registri la chiave, non il tenant della tua sottoscrizione attualmente attiva (i due possono differire nelle configurazioni cross-tenant).
Registra la chiave con Anthropic
Il modo in cui registri la chiave dipende dal prodotto che usi.
Registra la chiave con Anthropic
Crea una configurazione di chiave esterna tramite l'Admin API.
client = anthropic.Anthropic() external_key = client.beta.organization.external_keys.create( display_name="<friendly-name>", geo="us", provider_config={ "type": "azure", "vault_uri": "https://<your-vault-name>.vault.azure.net/", "key_name": "<your-key-name>", "tenant_id": "<your-tenant-id>", }, ) 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 ciclo completo di crittografia e decrittografia sulla tua chiave. Questo conferma che Anthropic può autenticarsi al tuo tenant ed eseguire operazioni di wrap e unwrap.
client = anthropic.Anthropic() validation = client.beta.organization.external_keys.validate("ekey_<id>") print(f"status: {validation.status}") print(f"error: {validation.error}")Una risposta riuscita ha questo aspetto:
{ "type": "external_key_validation", "status": "success", "error": null }Se la validazione fallisce, il campo
errordescrive il problema. Le cause comuni sono:- Ritardo di propagazione RBAC: le assegnazioni di ruolo possono richiedere alcuni minuti per diventare effettive. Attendi e riprova.
- ACL di rete che bloccano Anthropic: conferma l'accesso alla rete pubblica e le
ipRulescome descritto nel passaggio di verifica. - Criteri di accesso condizionale sulle workload identity: se il tuo tenant ha criteri di accesso condizionale che hanno come destinazione i service principal, escludi il service principal di Anthropic oppure aggiungi gli intervalli di egress di Anthropic alle named location del criterio.
Associa la chiave a un workspace
Una volta validata la chiave, associala a un nuovo workspace prima di inviare qualsiasi richiesta a quel workspace. Per un workspace che riceve già richieste, la chiave può richiedere fino a un giorno per diventare effettiva.
client = anthropic.Anthropic() workspace = client.beta.organization.workspaces.update( "<workspace-id>", external_key_id="ekey_<id>" ) print(f"id: {workspace.id}") print(f"external_key_id: {workspace.external_key_id}")
Terraform
Per i deployment infrastructure-as-code, gli stessi passaggi corrispondono ai provider azurerm e azuread.
Was this page helpful?