Kryptera hanterade diskar med kundhanterade nycklar mellan klientorganisationer

Den här artikeln beskriver hur du skapar en lösning där du krypterar hanterade diskar med kundhanterade nycklar med hjälp av Azure Key Vaults som lagras i en annan Microsoft Entra-klientorganisation. Den här konfigurationen kan vara perfekt för flera scenarier, ett exempel är Azure-stöd för tjänstleverantörer som vill erbjuda bring-your-own krypteringsnycklar till sina kunder där resurser från tjänstleverantörens klient krypteras med nycklar från kundens klientorganisation.

En diskkrypteringsuppsättning med federerad identitet i ett CMK-arbetsflöde mellan klientorganisationer omfattar tjänstprovider-/ISV-klientresurser (diskkrypteringsuppsättning, hanterade identiteter och appregistreringar) och kundklientresurser (företagsappar, användarrolltilldelningar och nyckelvalv). I det här fallet är Azure-källresursen tjänstleverantörens diskkrypteringsuppsättning.

Om du har frågor om kundhanterade nycklar mellan klientorganisationer med hanterade diskar skickar du e-post crosstenantcmkvteam@service.microsoft.comtill .

Begränsningar

  • Hanterade diskar och kundens Key Vault måste finnas i samma Azure-region, men de kan finnas i olika prenumerationer.
  • Den här funktionen stöder inte Ultra Disks eller Azure Premium SSD v2-hanterade diskar.
  • Den här funktionen är inte tillgänglig i Microsoft Azure som drivs av 21Vianet- eller Government-moln.

Om kundhanterade nycklar mellan klientorganisationer

Många tjänsteleverantörer som skapar SaaS-erbjudanden (Software as a Service) i Azure vill erbjuda sina kunder möjlighet att hantera sina egna krypteringsnycklar. Med kundhanterade nycklar kan en tjänstleverantör kryptera kundens data med hjälp av en krypteringsnyckel som hanteras av tjänsteleverantörens kund och som inte är tillgänglig för tjänstleverantören. I Azure kan tjänsteleverantörens kund använda Azure Key Vault för att hantera sina krypteringsnycklar i sin egen Microsoft Entra-klientorganisation och prenumeration.

Azure-plattformstjänster och resurser som ägs av tjänstleverantören och som finns i tjänstleverantörens klientorganisation kräver åtkomst till nyckeln från kundens klientorganisation för att utföra krypterings-/dekrypteringsåtgärderna.

Bilden nedan visar en vilande datakryptering med federerad identitet i ett CMK-arbetsflöde mellan klientorganisationer som sträcker sig över en tjänstleverantör och dess kund.

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

I exemplet ovan finns det två Microsoft Entra-klienter: en oberoende tjänstleverantörs klientorganisation (klientorganisation 1) och en kunds klientorganisation (klientorganisation 2). Klientorganisation 1 är värd för Azure-plattformstjänster och Klientorganisation 2 är värd för kundens nyckelvalv.

En programregistrering för flera klienter skapas av tjänstleverantören i klientorganisation 1. En federerad identitetsautentiseringsuppgift skapas i det här programmet med hjälp av en användartilldelad hanterad identitet. Sedan delas appens namn och program-ID med kunden.

En användare med rätt behörighet installerar tjänstleverantörens program i kundklientorganisationen, Klient 2. En användare ger sedan tjänstens huvudnamn som är associerat med det installerade programmet åtkomst till kundens nyckelvalv. Kunden lagrar även krypteringsnyckeln, eller den kundhanterade nyckeln, i nyckelvalvet. Kunden delar nyckelplatsen (nyckelns URL) med tjänstleverantören.

Tjänstleverantören har nu:

  • Ett program-ID för ett program med flera klienter installerat i kundens klientorganisation, som har beviljats åtkomst till den kundhanterade nyckeln.
  • En hanterad identitet som konfigurerats som autentiseringsuppgifter i programmet för flera klientorganisationer.
  • Platsen för nyckeln i kundens nyckelvalv.

Med dessa tre parametrar etablerar tjänstleverantören Azure-resurser i Klientorganisation 1 som kan krypteras med den kundhanterade nyckeln i klientorganisation 2.

Nu ska vi dela upp lösningen ovan från slutpunkt till slutpunkt i tre faser:

  1. Tjänstleverantören konfigurerar identiteter.
  2. Kunden ger tjänstleverantörens app med flera klientorganisationer åtkomst till en krypteringsnyckel i Azure Key Vault.
  3. Tjänstleverantören krypterar data i en Azure-resurs med hjälp av CMK.

Åtgärder i fas 1 skulle vara en engångskonfiguration för de flesta tjänstleverantörsprogram. Åtgärder i fas 2 och 3 upprepas för varje kund.

Fas 1 – Tjänstleverantören konfigurerar ett Microsoft Entra-program

Steg beskrivning Minsta roll i Azure RBAC Minsta roll i Microsoft Entra RBAC
1. Skapa en ny microsoft entra-programregistrering för flera användare eller börja med en befintlig programregistrering. Observera program-ID :t (klient-ID) för programregistreringen med hjälp av Azure-portalen, Microsoft Graph API, Azure PowerShell eller Azure CLI Ingen Programutvecklare
2. Skapa en användartilldelad hanterad identitet (som ska användas som en federerad identitetsautentisering).
Azure CLI / Azure PowerShell/ Azure Resource Manager-mallar i Azure-portalen /
Hanterad identitetsdeltagare Ingen
3. Konfigurera användartilldelad hanterad identitet som en federerad identitetsautentiseringsuppgift i programmet, så att den kan personifiera programmets identitet.
Graph API-referens för/ Azure-portalen/ Azure CLI/ Azure PowerShell
Ingen Programmets ägare
4. Dela programnamnet och program-ID:t med kunden så att de kan installera och auktorisera programmet. Ingen Ingen

Överväganden för tjänsteleverantörer

  • Azure Resource Manager-mallar (ARM) rekommenderas inte för att skapa Microsoft Entra-program.
  • Samma program för flera klienter kan användas för att komma åt nycklar i valfritt antal klienter, till exempel klientorganisation 2, klientorganisation 3, klientorganisation 4 och så vidare. I varje klientorganisation skapas en oberoende instans av programmet som har samma program-ID men ett annat objekt-ID. Varje instans av det här programmet godkänns därför oberoende av varandra. Fundera på hur programobjektet som används för den här funktionen används för att partitionera programmet mellan alla kunder.
  • I sällsynta fall kan en tjänstleverantör använda ett enda programobjekt per kund, men det kräver betydande underhållskostnader för att hantera program i stor skala för alla kunder.
  • I tjänstleverantörens klientorganisation går det inte att automatisera utgivarverifieringen.

Fas 2 – Kunden auktoriserar åtkomst till nyckelvalvet

Steg beskrivning Minst privilegierade Azure RBAC-roller Minst privilegierade Microsoft Entra-roller
1.
  • Rekommenderas: Skicka användaren för att logga in på din app. Om användaren kan logga in finns det ett huvudnamn för tjänsten för din app i klientorganisationen.
  • Använd Microsoft Graph, Microsoft Graph PowerShell, Azure PowerShell eller Azure CLI för att skapa tjänstens huvudnamn.
  • Skapa en URL för administratörsmedgivande och bevilja klientomfattande medgivande för att skapa tjänstens huvudnamn med hjälp av program-ID:t.
  • Ingen Användare med behörighet att installera program
    2. Skapa ett Azure Key Vault och en nyckel som används som kundhanterad nyckel. En användare måste tilldelas rollen Key Vault-deltagare för att kunna skapa nyckelvalvet

    En användare måste tilldelas rollen Key Vault Crypto Officer för att lägga till en nyckel i nyckelvalvet
    Ingen
    3. Ge den medgivande programidentiteten åtkomst till Azure-nyckelvalvet genom att tilldela rollen Key Vault Crypto Service Encryption User Om du vill tilldela key vault-krypteringstjänstens användarroll till programmet måste du ha tilldelats rollen Administratör för användaråtkomst. Ingen
    4. Kopiera nyckelvalvets URL och nyckelnamn till konfigurationen av kundhanterade nycklar för SaaS-erbjudandet. Ingen Ingen

    Kommentar

    Om du vill auktorisera åtkomst till Managed HSM för kryptering med hjälp av CMK kan du läsa exempel för Lagringskonto här. Mer information om hur du hanterar nycklar med Hanterad HSM finns i Hantera en hanterad HSM med Hjälp av Azure CLI

    Överväganden för kunder hos tjänsteleverantörer

    • I kundens klientorganisation, Klientorganisation 2, kan en administratör ange principer för att blockera användare som inte är administratörer från att installera program. Dessa principer kan hindra användare som inte är administratörer från att skapa tjänstens huvudnamn. Om en sådan princip har konfigurerats måste användare med behörighet att skapa tjänstens huvudnamn vara inblandade.
    • Åtkomst till Azure Key Vault kan auktoriseras med hjälp av Azure RBAC eller åtkomstprinciper. När du beviljar åtkomst till ett nyckelvalv bör du använda den aktiva mekanismen för ditt nyckelvalv.
    • En Microsoft Entra-programregistrering har ett program-ID (klient-ID). När programmet installeras i klientorganisationen skapas ett huvudnamn för tjänsten. Tjänstens huvudnamn delar samma program-ID som appregistreringen, men genererar ett eget objekt-ID. När du ger programmet åtkomst till resurser kan du behöva använda tjänstens huvudnamn Name eller ObjectID egenskap.

    Fas 3 – Tjänstleverantören krypterar data i en Azure-resurs med hjälp av den kundhanterade nyckeln

    När fas 1 och 2 har slutförts kan tjänstleverantören konfigurera kryptering på Azure-resursen med nyckel- och nyckelvalvet i kundens klientorganisation och Azure-resursen i ISV:s klientorganisation. Tjänstleverantören kan konfigurera kundhanterade nycklar mellan klientorganisationer med de klientverktyg som stöds av den Azure-resursen, med en ARM-mall eller med REST-API:et.

    Konfigurera kundhanterade nycklar mellan klientorganisationer

    I det här avsnittet beskrivs hur du konfigurerar en kundhanterad nyckel för flera klientorganisationer (CMK) och krypterar kunddata. Du lär dig hur du krypterar kunddata i en resurs i Tenant1 med hjälp av en CMK som lagras i ett nyckelvalv i Tenant2. Du kan använda Azure-portalen, Azure PowerShell eller Azure CLI.

    Logga in på Azure-portalen och följ dessa steg.

    Tjänstleverantören konfigurerar identiteter

    Följande steg utförs av tjänstleverantören i tjänstleverantörens klientorganisation 1.

    Tjänstleverantören skapar en ny appregistrering för flera klientorganisationer

    Du kan antingen skapa en ny Microsoft Entra-programregistrering för flera klientorganisationer eller börja med en befintlig programregistrering för flera klientorganisationer. Om du börjar med en befintlig programregistrering bör du notera programmets program-ID (klient-ID).

    Så här skapar du en ny registrering:

    1. Sök efter Microsoft Entra-ID i sökrutan. Leta upp och välj Microsoft Entra ID-tillägget .

    2. Välj Hantera > Appregistreringar i det vänstra fönstret.

    3. Välj + Ny registrering.

    4. Ange namnet på programregistreringen och välj Konto i valfri organisationskatalog (Alla Microsoft Entra-kataloger – Multitenant).

    5. Välj Registrera.

    6. Observera ApplicationId/ClientId för programmet.

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

    Tjänstleverantören skapar en användartilldelad hanterad identitet

    Skapa en användartilldelad hanterad identitet som ska användas som en federerad identitetsautentiseringsuppgift.

    1. Sök efter hanterade identiteter i sökrutan. Leta upp och välj tillägget Hanterade identiteter .

    2. Välj + Skapa.

    3. Ange resursgruppen, regionen och namnet för den hanterade identiteten.

    4. Välj Granska + skapa.

    5. Observera Azure ResourceId för den användartilldelade hanterade identiteten vid lyckad distribution, som är tillgängligt under Egenskaper. Till exempel:

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

    Tjänstleverantören konfigurerar den användartilldelade hanterade identiteten som en federerad autentiseringsuppgift i programmet

    Konfigurera en användartilldelad hanterad identitet som en federerad identitetsautentiseringsuppgift i programmet så att den kan personifiera programmets identitet.

    1. Gå till Microsoft Entra-ID > Appregistreringar > ditt program.

    2. Välj Certifikat och hemligheter.

    3. Välj Federerade autentiseringsuppgifter.

      Screen shot showing how to navigate to Certificate and secrets.

    4. Välj + Lägg till autentiseringsuppgifter.

    5. Under Scenario med federerade autentiseringsuppgifter väljer du Kundhanterade nycklar.

    6. Klicka på Välj en hanterad identitet. Välj prenumerationen i fönstret. Under Hanterad identitet väljer du Användartilldelad hanterad identitet. I rutan Välj söker du efter den hanterade identitet som du skapade tidigare och klickar sedan på Välj längst ned i fönstret.

      Screen shot showing how to select a managed identity.

    7. Under Information om autentiseringsuppgifter anger du ett namn och en valfri beskrivning för autentiseringsuppgifterna och väljer Lägg till.

      Screen shot showing how to add a credential.

    Tjänstleverantören delar program-ID:t med kunden

    Hitta program-ID :t (klient-ID) för programmet för flera klientorganisationer och dela det med kunden.

    Kunden ger tjänstleverantörens app åtkomst till nyckeln i nyckelvalvet

    Följande steg utförs av kunden i kundens klientorganisation 2. Kunden kan använda Azure-portalen, Azure PowerShell eller Azure CLI.

    Användaren som kör stegen måste vara en administratör med en privilegierad roll, till exempel programadministratör, molnprogramadministratör eller global administratör.

    Logga in på Azure-portalen och följ dessa steg.

    Kunden installerar tjänstproviderprogrammet i kundens klientorganisation

    Om du vill installera tjänstleverantörens registrerade program i kundens klientorganisation skapar du ett huvudnamn för tjänsten med program-ID:t från den registrerade appen. Du kan skapa tjänstens huvudnamn på något av följande sätt:

    Kunden skapar ett nyckelvalv

    Om du vill skapa nyckelvalvet måste användarens konto tilldelas rollen Key Vault-deltagare eller en annan roll som gör det möjligt att skapa ett nyckelvalv.

    1. På Menyn i Azure-portalen eller på sidan Start väljer du + Skapa en resurs. I sökrutan anger du Nyckelvalv. I resultatlistan väljer du Nyckelvalv. På sidan Nyckelvalv väljer du Skapa.

    2. På fliken Grundläggande väljer du en prenumeration. Under Resursgrupp väljer du Skapa ny och anger ett resursgruppsnamn.

    3. Ange ett unikt namn för nyckelvalvet.

    4. Välj en region och prisnivå.

    5. Aktivera rensningsskydd för det nya nyckelvalvet.

    6. På fliken Åtkomstprincip väljer du Rollbaserad åtkomstkontroll i Azure för Behörighetsmodell.

    7. Välj Granska + skapa och sedan Skapa.

      Screen shot showing how to create a key vault.

    Anteckna namnet på nyckelvalvet och URI-program som har åtkomst till ditt nyckelvalv måste använda den här URI:n.

    Mer information finns i Snabbstart – Skapa ett Azure Key Vault med Azure-portalen.

    Kunden tilldelar Key Vault Crypto Officer-rollen till ett användarkonto

    Det här steget säkerställer att du kan skapa krypteringsnycklar.

    1. Gå till nyckelvalvet och välj Åtkomstkontroll (IAM) i den vänstra rutan.
    2. Under Bevilja åtkomst till denna resurs väljer du Lägg till rolltilldelning.
    3. Sök efter och välj Key Vault Crypto Officer.
    4. Under Medlemmar väljer du Användare, grupp eller tjänstens huvudnamn.
    5. Välj Medlemmar och sök efter ditt användarkonto.
    6. Välj Granska + tilldela.

    Kunden skapar en krypteringsnyckel

    För att kunna skapa krypteringsnyckeln måste användarens konto tilldelas rollen Key Vault Crypto Officer eller en annan roll som gör det möjligt att skapa en nyckel.

    1. På sidan Key Vault-egenskaper väljer du Nycklar.
    2. Välj Generera/Importera.
    3. På skärmen Skapa en nyckel anger du ett namn för nyckeln. Lämna standardvärdena för de andra alternativen.
    4. Välj Skapa.
    5. Kopiera nyckel-URI:n.

    Kunden ger tjänstleverantörsprogrammet åtkomst till nyckelvalvet

    Tilldela Azure RBAC-rollen Key Vault Crypto Service Encryption User till tjänstleverantörens registrerade program så att det kan komma åt nyckelvalvet.

    1. Gå till nyckelvalvet och välj Åtkomstkontroll (IAM) i den vänstra rutan.
    2. Under Bevilja åtkomst till denna resurs väljer du Lägg till rolltilldelning.
    3. Sök efter och välj Key Vault Crypto Service Encryption User( Key Vault Crypto Service Encryption User).
    4. Under Medlemmar väljer du Användare, grupp eller tjänstens huvudnamn.
    5. Välj Medlemmar och sök efter programnamnet för det program som du installerade från tjänstleverantören.
    6. Välj Granska + tilldela.

    Nu kan du konfigurera kundhanterade nycklar med nyckelvalvets URI och nyckel.

    Skapa en diskkrypteringsuppsättning

    Nu när du har skapat ditt Azure Key Vault och utfört nödvändiga Microsoft Entra-konfigurationer distribuerar du en diskkrypteringsuppsättning som konfigurerats för att fungera mellan klienter och associera den med en nyckel i nyckelvalvet. Du kan göra detta med hjälp av Azure-portalen, Azure PowerShell eller Azure CLI. Du kan också använda en ARM-mall eller ETT REST-API.

    Om du vill använda Azure-portalen loggar du in på portalen och följer dessa steg.

    1. Välj + Skapa en resurs, sök efter Diskkrypteringsuppsättning och välj Skapa > diskkrypteringsuppsättning.

    2. Under Projektinformation väljer du den prenumeration och resursgrupp där diskkrypteringsuppsättningen ska skapas.

    3. Under Instansinformation anger du ett namn för diskkrypteringsuppsättningen.

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

    4. Välj den region där diskkrypteringsuppsättningen ska skapas.

    5. Som Krypteringstyp väljer du Kryptering i vila med en kundhanterad nyckel.

    6. Under Krypteringsnyckel väljer du knappen Ange nyckel från URI-alternativ och anger sedan nyckel-URI:n för nyckeln som skapades i kundens klientorganisation.

    7. Under Användartilldelad identitet väljer du Välj en identitet.

    8. Välj den användartilldelade hanterade identiteten som du skapade tidigare i ISV:ens klientorganisation och välj sedan Lägg till.

    9. Under Program för flera klientorganisationer väljer du Välj ett program.

    10. Välj det registrerade programmet för flera klientorganisationer som du skapade tidigare i ISV:s klientorganisation och klicka på Välj.

    11. Välj Granska + skapa.

    Använda en ARM-mall

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

    Använda REST-API

    Använd ägartoken som auktoriseringshuvud och program/JSON som innehållstyp i BODY. (Fliken Nätverk, filtrera till management.azure när du utför en ARM-begäran på portalen.)

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

    Nästa steg

    Se även: