Claude Platform Docs
AdminVerschlüsselungsschlüssel

Azure Key Vault für CMEK konfigurieren

Verwende Azure Key Vault, um einen Verschlüsselungsschlüssel für deine Organisation bereitzustellen.

Configure with the /claude-api skill in Claude Code
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 Administrator oder 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 AuditEvent an Log Analytics, ein Speicherkonto oder einen Event Hub weiterzuleiten. Azure Key Vault gibt standardmäßig keine Data-Plane-Audit-Protokolle (wie KeyWrap, KeyUnwrap und KeyGet) 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:

FeldWert
Multitenant-App-Client-ID (US)8635ae1a-3e5d-44e8-a4ed-e0f614466f87
App-Anzeigenameanthropic-cmek-client-us

Einrichtung des Verschlüsselungsschlüssels

  1. 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-e0f614466f87

    Erfasse 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 create mit einem „already exists“-Fehler. Rufe stattdessen seine Objekt-ID ab:

    az ad sp show --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 --query id -o tsv

    Dieser 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-us suchst.

    Microsoft Entra enterprise application overview for anthropic-cmek-client-us, showing its Application ID and Object ID.
    Finde die Object ID des Dienstprinzipals in der Übersicht seiner Entra-Unternehmensanwendung.
  2. 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 wrapKey und unwrapKey in seinen erlaubten Operationen sein.

    az keyvault key create \
      --vault-name <your-vault-name> \
      --name <your-key-name> \
      --kty RSA --size 3072 \
      --ops wrapKey unwrapKey

    Fü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.

    Azure Key Vault Create a key page with the Generate option, RSA key type, and 3072 RSA key size selected.
    Erstelle einen RSA-Schlüssel mit der Größe 3072 oder größer.
    Azure Key Vault key version with Permitted operations limited to Wrap Key and Unwrap Key.
    Beschränke die zulässigen Operationen auf Wrap Key und Unwrap Key.
  3. Dem Anthropic-Dienstprinzipal Zugriff auf deinen Schlüssel gewähren

    Weise dem Dienstprinzipal aus dem ersten Schritt die Rolle Key Vault Crypto User zu, 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 User gewä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-us zu.

    Key Vault IAM role assignments showing anthropic-cmek-client-us assigned the Key Vault Crypto User role.
    Weise dem Anthropic-Dienstprinzipal Key Vault Crypto User zu, beschränkt auf den Schlüssel.
  4. 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:

    • rbac true ist.
    • purge true ist. Wenn es false oder null ist, 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, dass ipRules Anthropics Egress-Bereiche enthalten (kontaktiere Anthropic für die aktuelle Liste).
    • uri die Vault-URI ist, die du verwendest, wenn du den Schlüssel registrierst.
    • tenantId der Mandant ist, der den Vault verwaltet. Verwende diesen Wert als tenant_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.

  1. 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>"
    }
  2. 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 error das 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 ipRules wie 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.
  3. 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?