Claude Platform Docs
AdministrationClés de chiffrement

Configurer Azure Key Vault pour CMEK

Utilisez Azure Key Vault pour fournir une clé de chiffrement à votre organisation.

Configure with the /claude-api skill in Claude Code
claude "/claude-api help me configure a customer-managed encryption key with Azure Key Vault"

Ce guide explique comment configurer une clé Azure Key Vault en tant que « customer-managed encryption key » (clé de chiffrement gérée par le client), ou CMEK pour votre organisation Anthropic.

Prérequis

  • Un Azure Key Vault avec l'autorisation RBAC activée (enableRbacAuthorization: true) et l'accès réseau public autorisé. Anthropic appelle votre coffre via le point de terminaison public du plan de données ; les points de terminaison privés ne sont pas pris en charge.
  • La protection contre la purge activée (enablePurgeProtection: true) sur le coffre. Sans elle, une clé supprimée peut être purgée définitivement pendant la fenêtre de rétention de suppression réversible, entraînant une perte irréversible de vos données protégées par CMEK. La protection contre la purge ne peut pas être désactivée une fois activée.
  • Les autorisations nécessaires pour créer des clés dans le coffre et y attribuer des rôles RBAC.
  • Les autorisations nécessaires pour créer des principaux de service dans votre locataire Entra (Application Administrator, Cloud Application Administrator ou un rôle personnalisé équivalent).
  • Une clé API Admin Anthropic pour votre organisation.
  • La CLI az installée et authentifiée.
  • Des paramètres de diagnostic (Diagnostic Settings) configurés sur le coffre pour acheminer la catégorie de journaux AuditEvent vers Log Analytics, un compte de stockage ou un hub d'événements. Azure Key Vault n'émet pas par défaut de journaux d'audit du plan de données (tels que KeyWrap, KeyUnwrap et KeyGet) ; sans cela, vous ne disposez donc d'aucune piste d'audit pour les opérations de clé effectuées par Anthropic.

Informations sur l'application Anthropic

Pour qu'Anthropic utilise votre clé de chiffrement, vous devez configurer un ID d'application multilocataire Anthropic et un nom d'affichage. Ces valeurs sont les suivantes :

ChampValeur
ID client de l'application multilocataire (US)8635ae1a-3e5d-44e8-a4ed-e0f614466f87
Nom d'affichage de l'applicationanthropic-cmek-client-us

Configuration de la clé de chiffrement

  1. Donner votre consentement à l'application multilocataire Anthropic

    Cette opération crée un principal de service dans votre locataire Entra pour l'application cliente CMEK d'Anthropic. L'application ne demande aucune autorisation Microsoft Graph ; elle existe uniquement en tant que cible de fédération pour l'accès au plan de données de Key Vault.

    az ad sp create --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87

    Dans la sortie, récupérez le champ id. Il s'agit de l'ID d'objet du principal de service dans votre locataire, que vous utilisez lorsque vous attribuez le rôle RBAC.

    {
      "appId": "8635ae1a-3e5d-44e8-a4ed-e0f614466f87",
      "displayName": "anthropic-cmek-client-us",
      "id": "<sp-object-id>"
    }

    Si le principal de service existe déjà dans votre locataire (suite à une tentative précédente ou à une autre intégration), az ad sp create se termine avec une erreur « already exists ». Récupérez plutôt son ID d'objet :

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

    Cette étape n'a pas d'équivalent dans le portail. Si la CLI Azure n'est pas installée localement, ouvrez Cloud Shell depuis la barre de navigation supérieure du portail. Une fois la commande exécutée avec succès, vous pouvez trouver l'ID d'objet du principal de service dans Microsoft Entra ID > Enterprise applications en supprimant le filtre de type d'application par défaut et en recherchant anthropic-cmek-client-us.

    Présentation de l'application d'entreprise Microsoft Entra pour anthropic-cmek-client-us, affichant son Application ID et son Object ID.
    Trouvez l'« Object ID » (ID d'objet) du principal de service sur la page de présentation de son application d'entreprise Entra.
  2. Créer une clé RSA dans votre coffre

    Azure Key Vault ne prend pas en charge l'enveloppement de clé symétrique ; la clé doit donc être de type RSA (3072 bits ou plus) avec wrapKey et unwrapKey parmi ses opérations autorisées.

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

    Pour les clés adossées à un HSM, utilisez --kty RSA-HSM (nécessite un coffre de SKU Premium). Les clés RSA protégées par logiciel sont acceptables pour cette intégration.

    Depuis le portail, ouvrez votre Key Vault, sélectionnez Keys, puis Generate/Import. Définissez le type de clé sur RSA et la taille sur 3072 ou plus. Pour restreindre la clé aux seules opérations d'enveloppement et de désenveloppement, ouvrez la version de la clé, faites défiler jusqu'à Permitted operations et décochez tout sauf Wrap Key et Unwrap Key.

    Page Create a key d'Azure Key Vault avec l'option Generate, le type de clé RSA et la taille de clé RSA 3072 sélectionnés.
    Créez une clé RSA de taille 3072 ou plus.
    Version de clé Azure Key Vault avec les Permitted operations limitées à Wrap Key et Unwrap Key.
    Restreignez les « Permitted operations » (opérations autorisées) à « Wrap Key » (envelopper la clé) et « Unwrap Key » (désenvelopper la clé).
  3. Accorder au principal de service Anthropic l'accès à votre clé

    Attribuez le rôle Key Vault Crypto User au principal de service de la première étape, avec une portée limitée à la clé individuelle plutôt qu'à l'ensemble du coffre.

    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>"

    Le rôle intégré Key Vault Crypto User accorde les opérations cryptographiques sur les clés (chiffrer, déchiffrer, envelopper, désenvelopper, signer, vérifier) ainsi que la lecture des clés sur la portée qui lui est attribuée. La restriction --ops wrapKey unwrapKey que vous avez définie sur la clé à l'étape précédente limite davantage les opérations pouvant réussir sur cette clé ; en pratique, Anthropic ne peut donc qu'envelopper et désenvelopper.

    Depuis le portail, ouvrez la clé (et non le coffre), sélectionnez son onglet Access control (IAM), cliquez sur Add > Add role assignment, sélectionnez Key Vault Crypto User et attribuez-le au principal de service anthropic-cmek-client-us.

    Attributions de rôles IAM de Key Vault montrant anthropic-cmek-client-us avec le rôle Key Vault Crypto User attribué.
    Attribuez le rôle « Key Vault Crypto User » au principal de service Anthropic, avec une portée limitée à la clé.
  4. Vérifier la configuration de votre coffre

    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}"

    Vérifiez que :

    • rbac vaut true.
    • purge vaut true. S'il vaut false ou null, activez la protection contre la purge sur le coffre avant de continuer. Sans elle, une clé supprimée de manière réversible peut être purgée définitivement pendant la fenêtre de rétention, rendant vos données protégées par CMEK irrécupérables.
    • pub vaut "Enabled". S'il vaut "Disabled", Anthropic ne peut pas atteindre le coffre via son point de terminaison public du plan de données et la validation échoue.
    • net vaut "Allow" ou, s'il vaut "Deny", que les ipRules incluent les plages de sortie d'Anthropic (contactez Anthropic pour obtenir la liste actuelle).
    • uri est l'URI du coffre que vous utilisez lorsque vous enregistrez la clé.
    • tenantId est le locataire qui régit le coffre. Utilisez cette valeur comme tenant_id lorsque vous enregistrez la clé, et non le locataire de votre abonnement actuellement actif (les deux peuvent différer dans les configurations inter-locataires).

Enregistrer la clé auprès d'Anthropic

La manière d'enregistrer la clé dépend du produit que vous utilisez.

  1. Enregistrer la clé auprès d'Anthropic

    Créez une configuration de clé externe via l'API Admin.

    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 réponse contient l'ID de la clé externe :

    {
      "type": "external_key",
      "id": "ekey_<id>",
      "display_name": "<friendly-name>"
    }
  2. Valider la clé

    Déclenchez un aller-retour de chiffrement et de déchiffrement sur votre clé. Cela confirme qu'Anthropic peut s'authentifier auprès de votre locataire et effectuer des opérations d'enveloppement et de désenveloppement.

    client = anthropic.Anthropic()
    
    validation = client.beta.organization.external_keys.validate("ekey_<id>")
    
    print(f"status: {validation.status}")
    print(f"error: {validation.error}")

    Une réponse réussie ressemble à ceci :

    { "type": "external_key_validation", "status": "success", "error": null }

    Si la validation échoue, le champ error décrit le problème. Les causes courantes sont les suivantes :

    • Délai de propagation RBAC : les attributions de rôles peuvent prendre quelques minutes pour prendre effet. Patientez, puis réessayez.
    • ACL réseau bloquant Anthropic : vérifiez l'accès réseau public et les ipRules comme décrit à l'étape de vérification.
    • Stratégies d'accès conditionnel sur les identités de charge de travail : si votre locataire dispose de stratégies d'accès conditionnel ciblant les principaux de service, excluez le principal de service Anthropic ou ajoutez les plages de sortie d'Anthropic aux emplacements nommés de la stratégie.
  3. Associer la clé à un espace de travail

    Une fois la clé validée, associez-la à un nouvel espace de travail avant d'envoyer la moindre requête à cet espace de travail. Pour un espace de travail qui reçoit déjà des requêtes, la clé peut prendre jusqu'à une journée pour prendre effet.

    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

Pour les déploiements en infrastructure en tant que code, les mêmes étapes correspondent aux fournisseurs azurerm et azuread.

Was this page helpful?