Azure Key Vault für CMEK konfigurieren
Verwende Azure Key Vault, um einen Verschlüsselungsschlüssel für deine Organisation bereitzustellen.
claude "/claude-api help me configure a customer-managed encryption key with Azure Key Vault"Diese Anleitung führt durch die Konfiguration eines Azure-Key-Vault-Schlüssels als kundenverwalteter Verschlüsselungsschlüssel (customer-managed encryption key, CMEK) für deine Anthropic-Organisation.
Voraussetzungen
- Ein Azure Key Vault mit aktivierter RBAC-Autorisierung (
enableRbacAuthorization: true) und erlaubtem öffentlichem Netzwerkzugriff. Anthropic ruft deinen Vault über den öffentlichen Data-Plane-Endpunkt auf; private Endpunkte werden nicht unterstützt. - Aktivierter Löschschutz (
enablePurgeProtection: true) auf dem Vault. Ohne ihn kann ein gelöschter Schlüssel während des Soft-Delete-Aufbewahrungszeitraums dauerhaft entfernt werden, was zu einem unwiederbringlichen Verlust deiner CMEK-geschützten Daten führt. Der Löschschutz kann nach der Aktivierung nicht mehr deaktiviert werden. - Berechtigungen zum Erstellen von Schlüsseln im Vault und zum Zuweisen von RBAC-Rollen darauf.
- Berechtigungen zum Erstellen von Dienstprinzipalen in deinem Entra-Mandanten (
Application Administrator,Cloud Application Administratoroder eine gleichwertige benutzerdefinierte Rolle). - Ein Anthropic-Admin-API-Key für deine Organisation.
- Die
az-CLI installiert und authentifiziert. - Diagnoseeinstellungen auf dem Vault konfiguriert, um die Protokollkategorie
AuditEventan Log Analytics, ein Speicherkonto oder einen Event Hub weiterzuleiten. Azure Key Vault gibt standardmäßig keine Data-Plane-Audit-Protokolle (wieKeyWrap,KeyUnwrapundKeyGet) aus, sodass du ohne dies keinen Audit-Trail für Anthropics Schlüsseloperationen erhältst.
Anthropic-App-Informationen
Damit Anthropic deinen Verschlüsselungsschlüssel verwendet, musst du eine Anthropic-Multitenant-Anwendungs-ID und einen Anzeigenamen konfigurieren. Diese Werte sind:
| Feld | Wert |
|---|---|
| Multitenant-App-Client-ID (US) | 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 |
| App-Anzeigename | anthropic-cmek-client-us |
Einrichtung des Verschlüsselungsschlüssels
Der Anthropic-Multitenant-Anwendung zustimmen
Dies erstellt einen Dienstprinzipal in deinem Entra-Mandanten für Anthropics CMEK-Client-Anwendung. Die Anwendung fordert keine Microsoft-Graph-Berechtigungen an; sie existiert ausschließlich als Föderationsziel für den Key-Vault-Data-Plane-Zugriff.
az ad sp create --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87Erfasse aus der Ausgabe das Feld
id. Dies ist die Objekt-ID des Dienstprinzipals in deinem Mandanten, die du verwendest, wenn du die RBAC-Rolle zuweist.{ "appId": "8635ae1a-3e5d-44e8-a4ed-e0f614466f87", "displayName": "anthropic-cmek-client-us", "id": "<sp-object-id>" }Wenn der Dienstprinzipal bereits in deinem Mandanten existiert (aus einem früheren Versuch oder einer anderen Integration), beendet sich
az ad sp createmit einem „already exists“-Fehler. Rufe stattdessen seine Objekt-ID ab:az ad sp show --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 --query id -o tsvDieser Schritt hat kein Portal-Äquivalent. Wenn du die Azure-CLI nicht lokal installiert hast, öffne Cloud Shell über die obere Navigationsleiste des Portals. Nachdem der Befehl erfolgreich war, findest du die Objekt-ID des Dienstprinzipals unter Microsoft Entra ID > Unternehmensanwendungen, indem du den Standardfilter für den Anwendungstyp löschst und nach
anthropic-cmek-client-ussuchst.
Finde die Object ID des Dienstprinzipals in der Übersicht seiner Entra-Unternehmensanwendung. Einen RSA-Schlüssel in deinem Vault erstellen
Azure Key Vault unterstützt kein symmetrisches Schlüssel-Wrapping, daher muss der Schlüssel RSA (3072-Bit oder größer) mit
wrapKeyundunwrapKeyin seinen erlaubten Operationen sein.az keyvault key create \ --vault-name <your-vault-name> \ --name <your-key-name> \ --kty RSA --size 3072 \ --ops wrapKey unwrapKeyFür HSM-gestützte Schlüssel verwende
--kty RSA-HSM(erfordert einen Vault mit Premium-SKU). Softwaregeschützte RSA-Schlüssel sind für diese Integration akzeptabel.Öffne im Portal deinen Key Vault, wähle Schlüssel und dann Generieren/Importieren. Setze den Schlüsseltyp auf RSA und die Größe auf 3072 oder größer. Um den Schlüssel auf Wrap und Unwrap zu beschränken, öffne die Schlüsselversion, scrolle zu Zulässige Operationen und deaktiviere alles außer Wrap Key und Unwrap Key.

Erstelle einen RSA-Schlüssel mit der Größe 3072 oder größer. 
Beschränke die zulässigen Operationen auf Wrap Key und Unwrap Key. Dem Anthropic-Dienstprinzipal Zugriff auf deinen Schlüssel gewähren
Weise dem Dienstprinzipal aus dem ersten Schritt die Rolle
Key Vault Crypto Userzu, beschränkt auf den einzelnen Schlüssel statt auf den gesamten 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>"Die integrierte Rolle
Key Vault Crypto Usergewährt kryptografische Schlüsseloperationen (Verschlüsseln, Entschlüsseln, Wrap, Unwrap, Signieren, Verifizieren) sowie Schlüssel-Lesezugriff in ihrem zugewiesenen Bereich. Die Einschränkung--ops wrapKey unwrapKey, die du im vorherigen Schritt auf dem Schlüssel gesetzt hast, grenzt weiter ein, welche dieser Operationen gegen diesen Schlüssel erfolgreich sein können, sodass Anthropic in der Praxis nur Wrap und Unwrap durchführen kann.Öffne im Portal den Schlüssel (nicht den Vault), wähle seinen Tab Zugriffssteuerung (IAM), klicke auf Hinzufügen > Rollenzuweisung hinzufügen, wähle Key Vault Crypto User und weise sie dem Dienstprinzipal
anthropic-cmek-client-uszu.
Weise dem Anthropic-Dienstprinzipal Key Vault Crypto User zu, beschränkt auf den Schlüssel. Deine Vault-Konfiguration überprüfen
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}"Bestätige, dass:
rbactrueist.purgetrueist. Wenn esfalseodernullist, aktiviere den Löschschutz auf dem Vault, bevor du fortfährst. Ohne ihn kann ein soft-gelöschter Schlüssel während des Aufbewahrungszeitraums dauerhaft entfernt werden, wodurch deine CMEK-geschützten Daten unwiederbringlich werden.pub"Enabled"ist. Wenn es"Disabled"ist, kann Anthropic den Vault nicht über seinen öffentlichen Data-Plane-Endpunkt erreichen und die Validierung schlägt fehl.net"Allow"ist, oder, wenn es"Deny"ist, dassipRulesAnthropics Egress-Bereiche enthalten (kontaktiere Anthropic für die aktuelle Liste).uridie Vault-URI ist, die du verwendest, wenn du den Schlüssel registrierst.tenantIdder Mandant ist, der den Vault verwaltet. Verwende diesen Wert alstenant_id, wenn du den Schlüssel registrierst, nicht den Mandanten deines aktuell aktiven Abonnements (die beiden können sich in mandantenübergreifenden Setups unterscheiden).
Den Schlüssel bei Anthropic registrieren
Wie du den Schlüssel registrierst, hängt davon ab, welches Produkt du verwendest.
Den Schlüssel bei Anthropic registrieren
Erstelle eine externe Schlüsselkonfiguration über die 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}")Die Antwort enthält die externe Schlüssel-ID:
{ "type": "external_key", "id": "ekey_<id>", "display_name": "<friendly-name>" }Den Schlüssel validieren
Löse einen Verschlüsselungs- und Entschlüsselungs-Roundtrip gegen deinen Schlüssel aus. Dies bestätigt, dass Anthropic sich bei deinem Mandanten authentifizieren und Wrap- und Unwrap-Operationen durchführen kann.
client = anthropic.Anthropic() validation = client.beta.organization.external_keys.validate("ekey_<id>") print(f"status: {validation.status}") print(f"error: {validation.error}")Eine erfolgreiche Antwort sieht so aus:
{ "type": "external_key_validation", "status": "success", "error": null }Wenn die Validierung fehlschlägt, beschreibt das Feld
errordas Problem. Häufige Ursachen sind:- RBAC-Propagierungsverzögerung: Rollenzuweisungen können einige Minuten brauchen, um wirksam zu werden. Warte und versuche es erneut.
- Netzwerk-ACLs blockieren Anthropic: Bestätige den öffentlichen Netzwerkzugriff und
ipRuleswie im Überprüfungsschritt beschrieben. - Richtlinien für bedingten Zugriff auf Workload-Identitäten: Wenn dein Mandant Richtlinien für bedingten Zugriff hat, die auf Dienstprinzipale abzielen, schließe den Anthropic-Dienstprinzipal aus oder füge Anthropics Egress-Bereiche zu den benannten Standorten der Richtlinie hinzu.
Den Schlüssel an einen Workspace anhängen
Sobald der Schlüssel validiert ist, hänge ihn an einen neuen Workspace an, bevor du Anfragen an diesen Workspace sendest. Bei einem Workspace, der bereits Anfragen empfängt, kann der Schlüssel bis zu einen Tag brauchen, um wirksam zu werden.
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
Für Infrastructure-as-Code-Bereitstellungen werden dieselben Schritte auf die Provider azurerm und azuread abgebildet.
Was this page helpful?