Chiffrer des disques managés avec des clés gérées par le client entre locataires

Cet article traite de la création d’une solution dans laquelle vous chiffrez des disques managés avec des clés gérées par le client à l’aide d’instances Azure Key Vault stockées dans un autre locataire Microsoft Entra. Cette configuration peut être idéale pour plusieurs scénarios, par exemple le support Azure aux fournisseurs de services désireux d’offrir des clés « apportez vos propres clés de chiffrement » à leurs clients où les ressources du locataire du fournisseur de services sont chiffrées avec des clés du locataire de leur client.

Un jeu de chiffrement de disque avec une identité fédérée dans un workflow CMK interlocataire couvre les ressources de locataire fournisseur de services/éditeur de logiciels indépendant (jeu de chiffrement de disque, identités managées et inscriptions d’applications) et les ressources du locataire client (applications d’entreprise, attributions de rôles d’utilisateur et coffre de clés). Dans ce cas, la ressource Azure source est le jeu de chiffrement de disque du fournisseur de services.

Si vous avez des questions sur les clés gérées par le client inter-locataires avec des disques managés, envoyez un e-mail à crosstenantcmkvteam@service.microsoft.com.

Limites

  • Les disques managés et le Key Vault du client doivent se trouver dans la même région Azure. Toutefois, ils peuvent appartenir à des abonnements différents.
  • Cette fonctionnalité ne prend pas en charge les disques Ultra ou les disques managés Azure Premium SSD v2.
  • Cette fonctionnalité n’est pas disponible dans les clouds Microsoft Azure géré par 21Vianet ou gouvernementaux.

À propos des clés gérées par le client multilocataires

De nombreux fournisseurs de services qui créent des offres SaaS (Software as a Service) sur Azure entendent offrir à leurs clients la possibilité de gérer leurs propres clés de chiffrement. Les clés gérées par le client permettent à un fournisseur de services de chiffrer les données du client à l’aide d'une clé de chiffrement gérée par le client du fournisseur de services et à laquelle le fournisseur de services n’a pas accès. Dans Azure, le client du fournisseur de services peut utiliser Azure Key Vault pour gérer ses clés de chiffrement dans son propre locataire et abonnement Microsoft Entra.

Les services et ressources de la plateforme Azure appartenant au fournisseur de services et résidant dans le locataire du fournisseur de services doivent avoir accès à la clé du locataire du client pour effectuer les opérations de chiffrement/déchiffrement.

L’image ci-dessous montre un chiffrement de données au repos avec une identité fédérée dans un flux de travail de CMK inter-client couvrant un fournisseur de services et son client.

Screenshot showing a cross-tenant CMK with a federated identity.

Dans l’exemple ci-dessus, il existe deux locataires Microsoft Entra : le locataire d’un fournisseur de services indépendant (Locataire 1) et le locataire d’un client (Locataire 2). Le locataire 1 héberge les services de la plateforme Azure et le locataire 2 héberge le coffre de clés du client.

Une inscription d’application multilocataire est créée par le fournisseur de services dans Locataire 1. Des informations d’identification d’identité fédérée sont créées sur cette application à l’aide d’une identité managée affectée par l’utilisateur. Ensuite, le nom et l’ID de l’application sont partagés avec le client.

Un utilisateur disposant des autorisations appropriées installe l'application du fournisseur de services dans le locataire client, locataire 2. Un utilisateur accorde ensuite au principal de service associé à l’application installée l’accès au coffre de clés du client. Le client stocke également la clé de chiffrement ou la clé gérée par le client dans le coffre de clés. Le client partage l’emplacement de la clé (URL de la clé) avec le fournisseur de services.

Le fournisseur de services dispose désormais des informations suivantes :

  • L’ID d’une application multilocataire installée dans le locataire du client, qui a reçu l’accès à la clé gérée par le client.
  • Une identité managée configurée en tant qu’informations d’identification sur l’application multilocataire.
  • Emplacement de la clé dans le coffre de clés du client.

Avec ces trois paramètres, le fournisseur de services fournit des ressources Azure dans le locataire 1 qui peuvent être chiffrées avec la clé gérée par le client dans le locataire 2.

Nous allons diviser la solution de bout en bout ci-dessus en trois phases :

  1. Le fournisseur de services configure les identités.
  2. Le client accorde à l’application multilocataire du fournisseur de services l’accès à une clé de chiffrement dans Azure Key Vault.
  3. Le fournisseur de services chiffre les données dans une ressource Azure à l’aide de la clé gérée par le client.

Les opérations de la phase 1 correspondent à une configuration unique pour la plupart des applications de fournisseur de services. Les opérations des phases 2 et 3 se répètent pour chaque client.

Phase 1 : le fournisseur de services configure une application Microsoft Entra

Étape Description Rôle minimal dans Azure RBAC Rôle minimal dans le RBAC Microsoft Entra
1. Créez une inscription d’application Microsoft Entra multilocataire ou commencez par une inscription d’application existante. Notez l’ID d’application (ID client) de l’inscription d’application à l’aide du Portail Azure, de l’API Microsoft Graph, d’Azure PowerShell ou d’Azure CLI Aucun Développeur d’applications
2. Créez une identité managée affectée par l’utilisateur (à utiliser en tant qu’informations d’identification d’identité fédérée).
Portail Azure / Azure CLI / Azure PowerShell/ Modèles Azure Resource Manager
Contributeur d’identité managée Aucun(e)
3. Configurez l’identité managée affectée par l’utilisateur en tant qu’informations d’identification d’identité fédérée sur l’application pour lui permettre d’emprunter l’identité de l’application.
Référence de l’API Graph/ Portail Azure/ Azure CLI/ Azure PowerShell
Aucun Propriétaire de l’application
4. Partagez le nom et l’ID de l’application avec le client pour lui permettre d’installer et d’autoriser l’application. None None

Considérations relatives aux fournisseurs de services

  • Les modèles Azure Resource Manager (ARM) ne sont pas recommandés pour la création d’applications Microsoft Entra.
  • La même application multilocataire peut être utilisée pour accéder aux clés de n’importe quel nombre de locataires, comme Locataire 2, Locataire 3, Locataire 4, etc. Dans chaque locataire, une instance indépendante de l’application est créée et porte le même ID d’application mais un ID d’objet différent. Dès lors, chaque instance de cette application est autorisée indépendamment. Réfléchissez à la manière dont l’objet d’application utilisé pour cette fonctionnalité est utilisé pour partitionner votre application sur tous les clients.
    • L’application peut avoir au maximum 20 informations d’identification d’identité fédérée, ce qui oblige un fournisseur de services à partager les identités fédérées entre ses clients. Pour plus d’informations sur les considérations et restrictions de la conception d’identités fédérées, consultez Configurer une application pour approuver un fournisseur d’identité externe
  • Dans de rares scénarios, un fournisseur de services peut utiliser un seul objet Application par client, mais cela entraîne des coûts de maintenance importants pour gérer les applications à grande échelle dans l’ensemble des clients.
  • Dans le locataire du fournisseur de services, il n’est pas possible d’automatiser la vérification de l’éditeur.

Phase 2 : le client autorise l’accès au coffre de clés

Étape Description Rôles RBAC Azure avec privilèges minimum Rôles Microsoft Entra les moins privilégiés
1.
  • Recommandé : demandez à l’utilisateur de se connecter à votre application. Si l’utilisateur peut se connecter, un principal de service pour votre application existe dans son locataire.
  • Utilisez Microsoft Graph, Microsoft Graph PowerShell, Azure PowerShell ou Azure CLI pour créer le principal de service.
  • Créez une URL de consentement administrateur et accordez le consentement à l’échelle du locataire pour créer le principal de service à l’aide de l’ID d’application.
  • Aucun Utilisateurs disposant des autorisations nécessaires pour installer des applications
    2. Créez un coffre de clés Azure Key Vault et une clé utilisée en tant que clé gérée par le client. Un utilisateur doit disposer du rôle Contributeur Key Vault pour créer le coffre de clés

    Un utilisateur doit avoir le rôle Agent de chiffrement Key Vault pour ajouter une clé au coffre de clés
    Aucun
    3. Accordez à l’identité d’application autorisée l’accès au coffre de clés Azure en attribuant le rôle Utilisateur du service de chiffrement Key Vault. Pour attribuer le rôle Utilisateur du service de chiffrement Key Vault à l’application, le rôle Administrateur de l’accès utilisateur doit vous avoir été attribué. Aucun
    4. Copiez l’URL et le nom du coffre de clés dans la configuration des clés gérées par le client de l’offre SaaS. None None

    Notes

    Pour autoriser l'accès au HSM géré pour le chiffrement à l'aide de CMK, consultez l'exemple de compte de stockage ici. Pour plus d'informations sur la gestion des clés avec le HSM géré, consultez Gérer un HSM géré à l'aide d'Azure CLI

    Considérations relatives aux clients des fournisseurs de services

    • Dans le locataire client, locataire 2, un administrateur peut définir des stratégies pour empêcher les utilisateurs non administrateurs d'installer des applications. Ces stratégies peuvent empêcher les utilisateurs non administrateurs de créer des principaux de service. Si une telle stratégie est configurée, les utilisateurs disposant des autorisations nécessaires pour créer des principaux de service doivent être impliqués.
    • L’accès à Azure Key Vault peut être autorisé à l’aide d’Azure RBAC ou de stratégies d’accès. Lorsque vous accordez l’accès à un coffre de clés, veillez à utiliser le mécanisme actif pour votre coffre de clés.
    • Une inscription d’application Microsoft Entra a un ID d’application (ID client). Lorsque l’application est installée dans votre locataire, un principal de service est créé. Le principal de service partage le même ID d’application que l’inscription d’application, mais génère son propre ID d’objet. Si vous autorisez l’application à accéder aux ressources, vous devrez peut-être utiliser la propriété Name ou ObjectID du principal de service.

    Phase 3 : le fournisseur de services chiffre les données dans une ressource Azure à l’aide de la clé gérée par le client

    Une fois les phases 1 et 2 terminées, le fournisseur de services peut configurer le chiffrement sur la ressource Azure avec la clé et le coffre de clés dans le locataire du client et la ressource Azure dans le locataire de l’éditeur de logiciels indépendants. Le fournisseur de services peut configurer des clés gérées par le client multilocataires à l’aide des outils clients pris en charge par cette ressource Azure, avec un modèle ARM ou l’API REST.

    Configurer des clés gérées par le client multilocataires

    Cette section explique comment configurer une clé gérée par le client (CMK) multilocataire et chiffrer les données client. Découvrez comment chiffrer les données client dans une ressource dans Tenant1 à l’aide d’une clé gérée par le client stockée dans un coffre de clés dans Tenant2. Vous pouvez utiliser le portail Azure, Azure PowerShell ou Azure CLI.

    Connectez-vous au portail Azure et suivez les étapes ci-dessous.

    Le fournisseur de services configure les identités

    Les étapes suivantes sont effectuées par le fournisseur de services dans le locataire du fournisseur de services Tenant1.

    Le fournisseur de services crée une inscription d’application multilocataire

    Vous pouvez créer une inscription d’application Microsoft Entra multilocataire ou commencer avec une inscription d’application multilocataire existante. Si vous commencez par une inscription d’application existante, notez l’ID d’application (ID client) de l’application.

    Pour créer une inscription

    1. Recherchez Microsoft Entra ID dans la zone de recherche. Recherchez et sélectionnez l’extension Microsoft Entra ID.

    2. Sélectionnez Gérer > Inscriptions d’applications dans le volet gauche.

    3. Sélectionnez + Nouvelle inscription.

    4. Indiquez le nom de l’inscription d’application et sélectionnez Compte dans n’importe quel annuaire organisationnel (n’importe quel annuaire Microsoft Entra – multilocataire).

    5. Sélectionnez Inscrire.

    6. Notez les valeurs ApplicationId/ClientId de l’application.

      Screen shot showing how to create a new multi-tenant application registration.

    Le fournisseur de services crée une identité managée affectée par l’utilisateur

    Créez une identité managée affectée par l’utilisateur à utiliser en tant qu’informations d’identification d’identité fédérée.

    1. Recherchez Identités managées dans la zone de recherche. Recherchez et sélectionnez l’extension Identités managées.

    2. Sélectionnez + Créer.

    3. Indiquez le groupe de ressources, la région et le nom de l’identité managée.

    4. Sélectionnez Revoir + créer.

    5. Au terme du déploiement, notez l’ID de ressource Azure de l’identité managée affectée par l’utilisateur disponible sous Propriétés. Par exemple :

      /subscriptions/tttttttt-0000-tttt-0000-tttt0000tttt/resourcegroups/XTCMKDemo/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ConsotoCMKDemoUA

      Screen shot showing how to create a resource group and a user-assigned managed identity.

    Le fournisseur de services configure l’identité managée affectée par l’utilisateur en tant qu’informations d’identification fédérées sur l’application

    Configurez une identité managée affectée par l’utilisateur en tant qu’informations d’identification d’identité fédérée sur l’application pour lui permettre d’emprunter l’identité de l’application.

    1. Accédez à Microsoft Entra ID > Inscriptions d’application > votre application.

    2. Cliquez sur Certificats et secrets.

    3. Sélectionnez Informations d’identification fédérées.

      Screen shot showing how to navigate to Certificate and secrets.

    4. Sélectionnez + Ajouter des informations d’identification.

    5. Sous Scénario d’informations d’identification fédérées, sélectionnez Clés gérées par le client.

    6. Cliquez sur Sélectionner une identité managée. Dans le volet, sélectionnez l’abonnement. Sous Identité managée, sélectionnez Identité managée affectée par l’utilisateur. Dans la zone Sélectionner, recherchez l’identité managée que vous avez créée précédemment, puis cliquez sur Sélectionner en bas du volet.

      Screen shot showing how to select a managed identity.

    7. Sous Détails des informations d’identification, fournissez un nom et une description facultative pour les informations d’identification, puis sélectionnez Ajouter.

      Screen shot showing how to add a credential.

    Le fournisseur de services partage l’ID d’application avec le client

    Recherchez l’ID d’application (ID client) de l’application multilocataire et partagez-le avec le client.

    Le client accorde à l’application du fournisseur de services l’accès à la clé dans le coffre de clés

    Les étapes suivantes sont effectuées par le client dans le locataire du client Tenant2. Le client peut utiliser le portail Azure, Azure PowerShell ou Azure CLI.

    L’utilisateur qui exécute les étapes doit être un administrateur disposant d’un rôle privilégié tel que Administrateur d’application, Administrateur d’application cloud ou Administrateur général.

    Connectez-vous au portail Azure et suivez les étapes ci-dessous.

    Le client installe l’application du fournisseur de services dans le locataire du client

    Pour installer l’application inscrite du fournisseur de services dans le locataire du client, vous créez un principal de service avec l’ID de l’application inscrite. Vous pouvez créer le principal de service de l’une des manières suivantes :

    Le client crée un coffre de clés

    Pour créer le coffre de clés, le compte de l’utilisateur doit se voir attribuer le rôle Contributeur Key Vault ou un autre rôle qui autorise la création d’un coffre de clés.

    1. Dans le menu du portail Azure ou dans la page Accueil, sélectionnez + Créer une ressource. Dans la zone de recherche, entrez Coffres de clés. Dans la liste des résultats, sélectionnez Coffres de clés. Dans la page Coffres de clés, sélectionnez Créer.

    2. Sous l’onglet Informations de base, choisissez un abonnement. Sous Groupe de ressources, sélectionnez Créer nouveau, puis entrez un nom de groupe de ressources.

    3. Entrez un nom unique pour le coffre de clés.

    4. Sélectionnez une région et un niveau tarifaire.

    5. Activez la protection contre le vidage pour le nouveau coffre de clés.

    6. Sous l’onglet Stratégie d’accès, sélectionnez Contrôle d’accès en fonction du rôle Azure pour Modèle d’autorisation.

    7. Sélectionnez Vérifier + créer, puis Créer.

      Screen shot showing how to create a key vault.

    Notez le nom du coffre de clés et les applications URI qui accèdent à votre coffre de clés doivent utiliser cet URI.

    Pour plus d’informations, consultez Démarrage rapide - Créer un coffre de clés Azure Key Vault avec le portail Azure.

    Le client attribue le rôle Agent de chiffrement Key Vault à un compte d’utilisateur

    Cette étape garantit la possibilité de créer des clés de chiffrement.

    1. Accédez à votre coffre de clés et sélectionnez Access Control (IAM) dans le volet gauche.
    2. Sous Accorder l’accès à cette ressource, sélectionnez Ajouter une attribution de rôle.
    3. Recherchez et sélectionnez Agent de chiffrement Key Vault.
    4. Sous l’onglet Membres, sélectionnez Utilisateur, groupe ou principal du service.
    5. Sélectionnez Membres et recherchez votre compte d’utilisateur.
    6. Sélectionnez Vérifier + attribuer.

    Le client crée une clé de chiffrement

    Pour créer la clé de chiffrement, le compte de l’utilisateur doit se voir attribuer le rôle Agent de chiffrement Key Vault ou un autre rôle qui autorise la création d’une clé.

    1. Dans la page des propriétés Key Vault, sélectionnez Secrets.
    2. Sélectionnez Générer/Importer.
    3. Dans l’écran Créer une clé, spécifiez un nom pour la clé. Conservez les valeurs par défaut des autres options.
    4. Sélectionnez Create (Créer).
    5. Copiez l’URI de la clé.

    Le client accorde à l’application du fournisseur de services l’accès au coffre de clés

    Attribuez le rôle RBAC Azure Utilisateur du service de chiffrement Key Vault à l’application inscrite du fournisseur de services pour lui permettre d’accéder au coffre de clés.

    1. Accédez à votre coffre de clés et sélectionnez Access Control (IAM) dans le volet gauche.
    2. Sous Accorder l’accès à cette ressource, sélectionnez Ajouter une attribution de rôle.
    3. Rechercher et sélectionnez le rôle Utilisateur du service de chiffrement Key Vault.
    4. Sous l’onglet Membres, sélectionnez Utilisateur, groupe ou principal du service.
    5. Sélectionnez Membres et recherchez le nom de l’application que vous avez installée à partir du fournisseur de services.
    6. Sélectionnez Vérifier + attribuer.

    Vous pouvez maintenant configurer des clés gérées par le client avec l’URI et la clé du coffre de clés.

    Créer un jeu de chiffrement de disque

    Maintenant que vous avez créé votre Azure Key Vault et effectué les configurations Microsoft Entra requises, déployez un jeu de chiffrement de disque configuré pour fonctionner entre les locataires et associez-le à une clé dans le coffre de clés. Vous pouvez faire cela en utilisant le portail Azure, Azure CLI ou Azure PowerShell. Vous pouvez aussi utiliser un modèle ARM ou une API REST.

    Pour utiliser le portail Azure, connectez-vous au portail et suivez ces étapes.

    1. Sélectionnez + Créer une ressource, recherchez Jeu de chiffrement de disque, puis sélectionnez Créer > Jeu de chiffrement de disque.

    2. Sous Détails du projet, sélectionnez l’abonnement et le groupe de ressources où créer le jeu de chiffrement de disque.

    3. Sous Détails de l’instance, fournissez un nom pour le jeu de chiffrement de disque.

      Screenshot showing how to enter the project and instance details to create a new disk encryption set.

    4. Sélectionnez la Région dans laquelle créer le jeu de chiffrement de disque.

    5. Pour Type de chiffrement, sélectionnez Chiffrement au repos avec une clé gérée par le client.

    6. Sous Clé de chiffrement, sélectionnez le bouton radio Entrer la clé à partir de l’URI, puis entrez l’URI de la clé créée dans le locataire du client.

    7. Sous Identité affectée par l’utilisateur, sélectionnez Sélectionner une identité.

    8. Sélectionnez l’identité managée affectée par l’utilisateur que vous avez créée précédemment dans le locataire de l’éditeur de logiciels indépendant, puis sélectionnez Ajouter.

    9. Sous Application mutualisée, sélectionnez Sélectionner une application.

    10. Sélectionnez l’application multilocataire inscrite que vous avez créée précédemment dans le locataire de l’éditeur de logiciels indépendant, puis cliquez sur Sélectionner.

    11. Sélectionnez Revoir + créer.

    Utiliser un modèle ARM

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "desname": {
          "defaultValue": "<Enter ISV disk encryption set name>",
          "type": "String"
        },
        "region": {
          "defaultValue": "WestCentralUS",
          "type": "String"
        },
        "userassignedmicmk": {
          "defaultValue": "/subscriptions/<Enter ISV Subscription Id>/resourceGroups/<Enter ISV resource group name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<Enter ISV User Assigned Identity Name>",
          "type": "String"
        },
        "cmkfederatedclientId": {
          "defaultValue": "<Enter ISV Multi-Tenant App Id>",
          "type": "String"
        },
        "keyVaultURL": {
          "defaultValue": "<Enter Client Key URL>",
          "type": "String"
        },
        "encryptionType": {
          "defaultValue": "EncryptionAtRestWithCustomerKey",
          "type": "String"
        }
      },
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Compute/diskEncryptionSets",
          "apiVersion": "2021-12-01",
          "name": "[parameters('desname')]",
          "location": "[parameters('region')]",
          "identity": {
            "type": "UserAssigned",
            "userAssignedIdentities": {
              "[parameters('userassignedmicmk')]": {}
            }
          },
          "properties": {
            "activeKey": {
              "keyUrl": "[parameters('keyVaultURL')]"
            },
            "federatedClientId": "[parameters('cmkfederatedclientId')]",
            "encryptionType": "[parameters('encryptionType')]"
          }
        }
      ]
    }
    

    Avec l’API REST

    Utilisez le jeton du porteur comme en-tête d’autorisation et application/JSON comme type de contenu dans BODY. (Onglet réseau, filtrez sur management.azure lors de l’exécution d’une requête ARM sur le portail.)

    PUT https://management.azure.com/subscriptions/<Enter ISV Subscription Id>/resourceGroups/<Enter ISV Resource Group Name>/providers/Microsoft.Compute/diskEncryptionSets/<Enter ISV Disk Encryption Set Name>?api-version=2021-12-01
    Authorization: Bearer ...
    Content-Type: application/json
    
    {
      "name": "<Enter ISV disk encryption set name>",
      "id": "/subscriptions/<Enter ISV Subscription Id>/resourceGroups/<Enter ISV resource group name>/providers/Microsoft.Compute/diskEncryptionSets/<Enter ISV disk encryption set name>/",
      "type": "Microsoft.Compute/diskEncryptionSets",
      "location": "westcentralus",
      "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
    "/subscriptions/<Enter ISV Subscription Id>/resourceGroups/<Enter ISV resource group name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<Enter ISV User Assigned Identity Name>
    ": {}
        }
      },
      "properties": {
        "activeKey": {
          "keyUrl": "<Enter Client Key URL>"
        },
        "encryptionType": "EncryptionAtRestWithCustomerKey",
        "federatedClientId": "<Enter ISV Multi-Tenant App Id>"
      }
    }
    

    Étapes suivantes

    Voir aussi :