Share via


versleutel beheerde schijven met door de klant beheerde sleutels voor meerdere tenants

In dit artikel wordt beschreven hoe u een oplossing bouwt waarbij u beheerde schijven versleutelt met door de klant beheerde sleutels met behulp van Azure Key Vaults die zijn opgeslagen in een andere Microsoft Entra-tenant. Deze configuratie kan ideaal zijn voor verschillende scenario's, bijvoorbeeld ondersteuning voor Azure voor serviceproviders die bring-your-own-versleutelingssleutels willen aanbieden aan hun klanten, waarbij resources van de tenant van de serviceprovider worden versleuteld met sleutels van de tenant van hun klant.

Een schijfversleutelingsset met federatieve identiteit in een CMK-werkstroom tussen tenants omvat serviceprovider-/ISV-tenantresources (schijfversleutelingsset, beheerde identiteiten en app-registraties) en tenantresources van klanten (zakelijke apps, toewijzingen van gebruikersrollen en sleutelkluis). In dit geval is de Azure-bronresource de schijfversleutelingsset van de serviceprovider.

Als u vragen hebt over door de klant beheerde sleutels voor meerdere tenants met beheerde schijven, e-mail crosstenantcmkvteam@service.microsoft.com.

Beperkingen

  • Managed Disks en de Key Vault van de klant moeten zich in dezelfde Azure-regio bevinden, maar ze kunnen zich in verschillende abonnementen bevinden.
  • Deze functie biedt geen ondersteuning voor Ultra Disks of Azure Premium SSD v2 beheerde schijven.
  • Deze functie is niet beschikbaar in Microsoft Azure beheerd door 21Vianet- of Government-clouds.

Over door de klant beheerde sleutels voor meerdere tenants

Veel serviceproviders die SaaS-aanbiedingen (Software as a Service) bouwen in Azure willen hun klanten de mogelijkheid bieden om hun eigen versleutelingssleutels te beheren. Met door de klant beheerde sleutels kan een serviceprovider de gegevens van de klant versleutelen met behulp van een versleutelingssleutel die wordt beheerd door de klant van de serviceprovider en die niet toegankelijk is voor de serviceprovider. In Azure kan de klant van de serviceprovider Azure Key Vault gebruiken om hun versleutelingssleutels te beheren in hun eigen Microsoft Entra-tenant en -abonnement.

Azure-platformservices en -resources die eigendom zijn van de serviceprovider en die zich in de tenant van de serviceprovider bevinden, vereisen toegang tot de sleutel van de tenant van de klant om de versleutelings-/ontsleutelingsbewerkingen uit te voeren.

In de onderstaande afbeelding ziet u een data-at-rest-versleuteling met federatieve identiteit in een CMK-werkstroom voor meerdere tenants voor een serviceprovider en de klant.

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

In het bovenstaande voorbeeld zijn er twee Microsoft Entra-tenants: de tenant van een onafhankelijke serviceprovider (tenant 1) en de tenant van een klant (tenant 2). Tenant 1 fungeert als host voor Azure-platformservices en Tenant 2 als host voor de sleutelkluis van de klant.

Er wordt een registratie van meerdere tenants gemaakt door de serviceprovider in Tenant 1. Er wordt een federatieve identiteitsreferentie voor deze toepassing gemaakt met behulp van een door de gebruiker toegewezen beheerde identiteit. Vervolgens wordt de naam en toepassings-id van de app gedeeld met de klant.

Een gebruiker met de juiste machtigingen installeert de toepassing van de serviceprovider in de tenant van de klant, Tenant 2. Een gebruiker verleent vervolgens de service-principal die is gekoppeld aan de geïnstalleerde toepassing toegang tot de sleutelkluis van de klant. De klant slaat ook de versleutelingssleutel of door de klant beheerde sleutel op in de sleutelkluis. De klant deelt de sleutellocatie (de URL van de sleutel) met de serviceprovider.

De serviceprovider heeft nu:

  • Een toepassings-id voor een toepassing met meerdere tenants die is geïnstalleerd in de tenant van de klant, die toegang heeft gekregen tot de door de klant beheerde sleutel.
  • Een beheerde identiteit die is geconfigureerd als de referentie in de multitenant-toepassing.
  • De locatie van de sleutel in de sleutelkluis van de klant.

Met deze drie parameters richt de serviceprovider Azure-resources in tenant 1 in die kunnen worden versleuteld met de door de klant beheerde sleutel in Tenant 2.

Laten we de bovenstaande end-to-end-oplossing in drie fasen verdelen:

  1. De serviceprovider configureert identiteiten.
  2. De klant verleent de multitenant-app van de serviceprovider toegang tot een versleutelingssleutel in Azure Key Vault.
  3. De serviceprovider versleutelt gegevens in een Azure-resource met behulp van de CMK.

Bewerkingen in fase 1 zijn een eenmalige installatie voor de meeste serviceprovidertoepassingen. Bewerkingen in fase 2 en 3 worden voor elke klant herhaald.

Fase 1: de serviceprovider configureert een Microsoft Entra-toepassing

Stap Beschrijving Minimale rol in Azure RBAC Minimale rol in Microsoft Entra RBAC
1. Maak een nieuwe multitenant Microsoft Entra-toepassingsregistratie of begin met een bestaande toepassingsregistratie. Noteer de toepassings-id (client-id) van de toepassingsregistratie met behulp van Azure Portal, Microsoft Graph API, Azure PowerShell of Azure CLI Geen Toepassingsontwikkelaar
2. Maak een door de gebruiker toegewezen beheerde identiteit (te gebruiken als federatieve identiteitsreferentie).
Azure Portal / Azure CLI / Azure PowerShell/ Azure Resource Manager-sjablonen
Inzender voor beheerde identiteit Geen
3. Configureer door de gebruiker toegewezen beheerde identiteit als federatieve identiteitsreferentie voor de toepassing, zodat deze de identiteit van de toepassing kan imiteren.
Graph API-verwijzing naar Azure Portal/ Azure CLI/ Azure PowerShell/
Geen Eigenaar van de toepassing
4. Deel de naam en toepassings-id van de toepassing met de klant, zodat ze de toepassing kunnen installeren en autoriseren. Geen Geen

Overwegingen voor serviceproviders

  • Arm-sjablonen (Azure Resource Manager) worden niet aanbevolen voor het maken van Microsoft Entra-toepassingen.
  • Dezelfde multitenant-toepassing kan worden gebruikt voor toegang tot sleutels in een willekeurig aantal tenants, zoals Tenant 2, Tenant 3, Tenant 4, enzovoort. In elke tenant wordt een onafhankelijk exemplaar van de toepassing gemaakt met dezelfde toepassings-id, maar een andere object-id. Elk exemplaar van deze toepassing wordt dus onafhankelijk geautoriseerd. Overweeg hoe het toepassingsobject dat voor deze functie wordt gebruikt om uw toepassing te partitioneren voor alle klanten.
    • De toepassing kan maximaal 20 federatieve identiteitsreferenties hebben. Hiervoor moet een serviceprovider federatieve identiteiten delen tussen de klanten. Zie Een app configureren om een externe id-provider te vertrouwen voor meer informatie over ontwerpoverwegingen en -beperkingen voor federatieve identiteiten
  • In zeldzame scenario's kan een serviceprovider één toepassingsobject per klant gebruiken, maar waarvoor aanzienlijke onderhoudskosten nodig zijn om toepassingen op schaal te beheren voor alle klanten.
  • In de tenant van de serviceprovider is het niet mogelijk om de verificatie van de uitgever te automatiseren.

Fase 2: de klant autoriseert toegang tot de sleutelkluis

Stap Beschrijving Minst bevoegde Azure RBAC-rollen Microsoft Entra-rollen met minimale bevoegdheden
1.
  • Aanbevolen: de gebruiker verzenden om u aan te melden bij uw app. Als de gebruiker zich kan aanmelden, bestaat er een service-principal voor uw app in de tenant.
  • Gebruik Microsoft Graph, Microsoft Graph PowerShell, Azure PowerShell of Azure CLI om de service-principal te maken.
  • Maak een URL voor beheerderstoestemming en ververleent tenantbrede toestemming om de service-principal te maken met behulp van de toepassings-id.
  • Geen Gebruikers met machtigingen voor het installeren van toepassingen
    2. Maak een Azure Key Vault en een sleutel die wordt gebruikt als de door de klant beheerde sleutel. Aan een gebruiker moet de rol Key Vault-inzender zijn toegewezen om de sleutelkluis te maken

    Aan een gebruiker moet de rol Key Vault Crypto Officer worden toegewezen om een sleutel toe te voegen aan de sleutelkluis
    Geen
    3. Versleutelingsgebruiker van Key Vault cryptoserviceversleutelingsgebruiker toewijzen aan de toepassings-id met toestemming voor de Azure-sleutelkluis Als u de key vault cryptoserviceversleutelingsgebruikersrol wilt toewijzen aan de toepassing, moet u de rol Gebruikerstoegang Beheer istrator hebben toegewezen. Geen
    4. Kopieer de URL en sleutelnaam van de sleutelkluis naar de configuratie van door de klant beheerde sleutels van de SaaS-aanbieding. Geen Geen

    Notitie

    Als u toegang tot de beheerde HSM wilt autoriseren voor versleuteling met behulp van CMK, raadpleegt u hier het voorbeeld voor het opslagaccount. Zie Een beheerde HSM beheren met de Azure CLI voor meer informatie over het beheren van sleutels met beheerde HSM

    Overwegingen voor klanten van serviceproviders

    • In de tenant van de klant, Tenant 2, kan een beheerder beleidsregels instellen om te voorkomen dat niet-beheerders toepassingen installeren. Deze beleidsregels kunnen voorkomen dat niet-beheerders service-principals maken. Als een dergelijk beleid is geconfigureerd, moeten gebruikers met machtigingen voor het maken van service-principals betrokken zijn.
    • Toegang tot Azure Key Vault kan worden geautoriseerd met behulp van Azure RBAC of toegangsbeleid. Wanneer u toegang verleent tot een sleutelkluis, moet u het actieve mechanisme voor uw sleutelkluis gebruiken.
    • Een Registratie van een Microsoft Entra-toepassing heeft een toepassings-id (client-id). Wanneer de toepassing in uw tenant is geïnstalleerd, wordt er een service-principal gemaakt. De service-principal deelt dezelfde toepassings-id als de app-registratie, maar genereert een eigen object-id. Wanneer u de toepassing machtigt om toegang te hebben tot resources, moet u mogelijk de service-principal Name of ObjectID eigenschap gebruiken.

    Fase 3: de serviceprovider versleutelt gegevens in een Azure-resource met behulp van de door de klant beheerde sleutel

    Nadat fase 1 en 2 zijn voltooid, kan de serviceprovider versleuteling voor de Azure-resource configureren met de sleutel en sleutelkluis in de tenant van de klant en de Azure-resource in de tenant van de ISV. De serviceprovider kan door de klant beheerde sleutels voor meerdere tenants configureren met de clienthulpprogramma's die door die Azure-resource worden ondersteund, met een ARM-sjabloon of met de REST API.

    Door de klant beheerde sleutels voor meerdere tenants configureren

    In deze sectie wordt beschreven hoe u een door de klant beheerde sleutel (CMK) voor meerdere tenants configureert en klantgegevens versleutelt. U leert hoe u klantgegevens in een resource in Tenant1 versleutelt met behulp van een CMK die is opgeslagen in een sleutelkluis in Tenant2. U kunt Azure Portal, Azure PowerShell of Azure CLI gebruiken.

    Meld u aan bij Azure Portal en volg deze stappen.

    De serviceprovider configureert identiteiten

    De volgende stappen worden uitgevoerd door de serviceprovider in de tenant tenant1 van de serviceprovider.

    De serviceprovider maakt een nieuwe app-registratie voor meerdere tenants

    U kunt een nieuwe Microsoft Entra-toepassingsregistratie voor meerdere tenants maken of beginnen met een bestaande toepassingsregistratie met meerdere tenants. Als u begint met een bestaande toepassingsregistratie, noteert u de toepassings-id (client-id) van de toepassing.

    Ga als volgt te werk om een nieuwe registratie te maken:

    1. Zoek in het zoekvak naar Microsoft Entra-id. Zoek en selecteer de Extensie Microsoft Entra-id .

    2. Selecteer App-registraties beheren > in het linkerdeelvenster.

    3. Selecteer + Nieuwe registratie.

    4. Geef de naam op voor de registratie van de toepassing en selecteer Account in een organisatiemap (Elke Microsoft Entra-directory – Multitenant).a0>

    5. Selecteer Registreren.

    6. Noteer de ApplicationId/ClientId van de toepassing.

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

    De serviceprovider maakt een door de gebruiker toegewezen beheerde identiteit

    Maak een door de gebruiker toegewezen beheerde identiteit die moet worden gebruikt als federatieve identiteitsreferentie.

    1. Zoek in het zoekvak naar beheerde identiteiten . Zoek en selecteer de extensie Beheerde identiteiten .

    2. Selecteer + Maken.

    3. Geef de resourcegroep, regio en naam op voor de beheerde identiteit.

    4. Selecteer Controleren + maken.

    5. Let bij een geslaagde implementatie op de Azure ResourceId van de door de gebruiker toegewezen beheerde identiteit, die beschikbaar is onder Eigenschappen. Voorbeeld:

      /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.

    De serviceprovider configureert de door de gebruiker toegewezen beheerde identiteit als federatieve referentie voor de toepassing

    Configureer een door de gebruiker toegewezen beheerde identiteit als federatieve identiteitsreferentie voor de toepassing, zodat deze de identiteit van de toepassing kan imiteren.

    1. Navigeer naar Microsoft Entra ID > App-registraties > uw toepassing.

    2. Selecteer Certificaten en geheimen.

    3. Selecteer Federatieve referenties.

      Screen shot showing how to navigate to Certificate and secrets.

    4. Selecteer + Referentie toevoegen.

    5. Selecteer onder Scenario met federatieve referenties de optie Door klant beheerde sleutels.

    6. Klik op Een beheerde identiteit selecteren. Selecteer het abonnement in het deelvenster. Selecteer onder Beheerde identiteit de door de gebruiker toegewezen beheerde identiteit. Zoek in het vak Selecteren naar de beheerde identiteit die u eerder hebt gemaakt en klik vervolgens onderaan het deelvenster op Selecteren .

      Screen shot showing how to select a managed identity.

    7. Geef onder Referentiegegevens een naam en een optionele beschrijving op voor de referentie en selecteer Toevoegen.

      Screen shot showing how to add a credential.

    De serviceprovider deelt de toepassings-id met de klant

    Zoek de toepassings-id (client-id) van de toepassing met meerdere tenants en deel deze met de klant.

    De klant verleent de app van de serviceprovider toegang tot de sleutel in de sleutelkluis

    De volgende stappen worden uitgevoerd door de klant in de tenant tenant2 van de klant. De klant kan Azure Portal, Azure PowerShell of Azure CLI gebruiken.

    De gebruiker die de stappen uitvoert, moet een beheerder zijn met een bevoorrechte rol, zoals Application Beheer istrator, Cloud Application Beheer istrator of Global Beheer istrator.

    Meld u aan bij Azure Portal en volg deze stappen.

    De klant installeert de toepassing van de serviceprovider in de tenant van de klant

    Als u de geregistreerde toepassing van de serviceprovider in de tenant van de klant wilt installeren, maakt u een service-principal met de toepassings-id van de geregistreerde app. U kunt de service-principal op een van de volgende manieren maken:

    De klant maakt een sleutelkluis

    Als u de sleutelkluis wilt maken, moet het account van de gebruiker de rol Key Vault-inzender of een andere rol hebben waarmee een sleutelkluis kan worden gemaakt.

    1. Selecteer + Een resource maken in het menu van Azure Portal of op de startpagina. Voer sleutelkluizen in het zoekvak in. Selecteer sleutelkluizen in de lijst met resultaten. Selecteer Maken op de pagina Sleutelkluizen.

    2. Kies een abonnement op het tabblad Basisbeginselen . Selecteer onder Resourcegroep Nieuwe maken en voer de naam van een resourcegroep in.

    3. Voer een unieke naam in voor de sleutelkluis.

    4. Selecteer een regio en prijscategorie.

    5. Schakel beveiliging tegen opschonen in voor de nieuwe sleutelkluis.

    6. Selecteer op het tabblad Toegangsbeleid het op rollen gebaseerde toegangsbeheer van Azure voor het machtigingsmodel.

    7. Selecteer Controleren en maken en vervolgens Maken.

      Screen shot showing how to create a key vault.

    Noteer de naam van de sleutelkluis en de URI-toepassingen die toegang hebben tot uw sleutelkluis, moeten deze URI gebruiken.

    Zie Quickstart: Een Azure Key Vault maken met Azure Portal voor meer informatie.

    De klant wijst de rol Crypto Officer van Key Vault toe aan een gebruikersaccount

    Deze stap zorgt ervoor dat u versleutelingssleutels kunt maken.

    1. Navigeer naar uw sleutelkluis en selecteer Toegangsbeheer (IAM) in het linkerdeelvenster.
    2. Onder Toegang verlenen tot deze bron, selecteert u Roltoewijzing toevoegen.
    3. Zoek en selecteer Key Vault Crypto Officer.
    4. Selecteer onder Leden de optie Gebruiker, groep of service-principal.
    5. Selecteer Leden en zoek uw gebruikersaccount.
    6. Selecteer Controleren + Toewijzen.

    De klant maakt een versleutelingssleutel

    Als u de versleutelingssleutel wilt maken, moet aan het account van de gebruiker de rol Crypto Officer van key vault of een andere rol worden toegewezen waarmee een sleutel kan worden gemaakt.

    1. Selecteer Sleutels op de eigenschappenpagina van Key Vault.
    2. Selecteer Genereren/Importeren.
    3. Geef in het scherm Een sleutel maken een naam op voor de sleutel. Houd voor de overige waarden de standaardwaarden aan.
    4. Selecteer Maken.
    5. Kopieer de sleutel-URI.

    De klant verleent de toepassing van de serviceprovider toegang tot de sleutelkluis

    Wijs de Azure RBAC-rol Key Vault Crypto Service Encryption-gebruiker toe aan de geregistreerde toepassing van de serviceprovider, zodat deze toegang heeft tot de sleutelkluis.

    1. Navigeer naar uw sleutelkluis en selecteer Toegangsbeheer (IAM) in het linkerdeelvenster.
    2. Onder Toegang verlenen tot deze bron, selecteert u Roltoewijzing toevoegen.
    3. Zoek en selecteer Key Vault Crypto Service Encryption User.
    4. Selecteer onder Leden de optie Gebruiker, groep of service-principal.
    5. Selecteer Leden en zoek de toepassingsnaam van de toepassing die u hebt geïnstalleerd bij de serviceprovider.
    6. Selecteer Controleren + Toewijzen.

    U kunt nu door de klant beheerde sleutels configureren met de sleutelkluis-URI en sleutel.

    Een schijfversleutelingsset maken

    Nu u uw Azure Key Vault hebt gemaakt en de vereiste Microsoft Entra-configuraties hebt uitgevoerd, implementeert u een schijfversleutelingsset die is geconfigureerd voor gebruik in tenants en koppelt u deze aan een sleutel in de sleutelkluis. U kunt dit doen met behulp van Azure Portal, Azure PowerShell of Azure CLI. U kunt ook een ARM-sjabloon of REST API gebruiken.

    Als u Azure Portal wilt gebruiken, meldt u zich aan bij de portal en volgt u deze stappen.

    1. Selecteer + Een resource maken, zoek naar schijfversleutelingsset en selecteer Schijfversleutelingsset maken>.

    2. Selecteer onder Projectdetails het abonnement en de resourcegroep waarin u de schijfversleutelingsset wilt maken.

    3. Geef onder Exemplaardetails een naam op voor de schijfversleutelingsset.

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

    4. Selecteer de regio waarin u de schijfversleutelingsset wilt maken.

    5. Voor het versleutelingstype selecteert u Versleuteling-at-rest met een door de klant beheerde sleutel.

    6. Selecteer onder Versleutelingssleutel het keuzerondje Enter uit de URI en voer vervolgens de sleutel-URI in van de sleutel die is gemaakt in de tenant van de klant.

    7. Selecteer een identiteit onder Door de gebruiker toegewezen identiteit.

    8. Selecteer de door de gebruiker toegewezen beheerde identiteit die u eerder in de tenant van de ISV hebt gemaakt en selecteer vervolgens Toevoegen.

    9. Selecteer een toepassing selecteren onder Toepassing met meerdere tenants.

    10. Selecteer de geregistreerde toepassing voor meerdere tenants die u eerder in de tenant van de ISV hebt gemaakt en klik op Selecteren.

    11. Selecteer Controleren + maken.

    Een ARM-sjabloon gebruiken

    {
      "$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')]"
          }
        }
      ]
    }
    

    REST API gebruiken

    Gebruik bearer-token als autorisatieheader en application/JSON als inhoudstype in BODY. (Tabblad Netwerk, filter op management.azure tijdens het uitvoeren van een ARM-aanvraag in de portal.)

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

    Volgende stappen

    Zie ook: