Condividi tramite


crittografa i dischi gestiti con chiavi gestite dal cliente tra tenant

Questo articolo illustra la creazione di una soluzione in cui vengono crittografati i dischi gestiti con chiavi gestite dal cliente che usano Azure Key Vault archiviati in un tenant Microsoft Entra diverso. Questa configurazione può essere ideale per diversi scenari, ad esempio il supporto di Azure per i provider di servizi che vogliono offrire chiavi di crittografia bring your own ai propri clienti, dove le risorse del tenant del provider di servizi vengono crittografate con chiavi dal tenant del cliente.

Un set di crittografia dischi con identità federata in un flusso di lavoro con chiave gestita dal cliente multi-tenant si estende su risorse del provider di servizi/ISV (set di crittografia dischi, identità gestite e registrazioni app) e su risorse del tenant del cliente (app aziendali, assegnazioni di ruolo utente e insieme di credenziali delle chiavi). In questo caso, la risorsa Azure di origine è il set di crittografia dischi del provider di servizi.

In caso di domande sulle chiavi gestite dal cliente multi-tenant con dischi gestiti, inviare un messaggio di posta elettronica a crosstenantcmkvteam@service.microsoft.com.

Limiti

  • I dischi gestiti e l'insieme di credenziali delle chiavi del cliente devono trovarsi nella stessa area di Azure, ma possono trovarsi in sottoscrizioni diverse.
  • Questa funzionalità non supporta dischi Ultra o dischi gestiti SSD Premium v2 di Azure.
  • Questa funzionalità non è disponibile in Microsoft Azure gestito da cloud di enti pubblici o 21Vianet.

Informazioni sulle chiavi gestite dal cliente tra tenant

Molti provider di servizi che creano offerte SaaS (Software as a Service) in Azure vogliono offrire ai clienti la possibilità di gestire le proprie chiavi di crittografia. Le chiavi gestite dal cliente consentono a un provider di servizi di crittografare i dati del cliente usando una chiave di crittografia gestita dal cliente del provider e non accessibile al provider stesso. In Azure, il cliente del provider di servizi può usare Azure Key Vault per gestire le chiavi di crittografia nel proprio tenant e nella propria sottoscrizione di Microsoft Entra.

I servizi e le risorse della piattaforma Azure di proprietà del provider di servizi e che risiedono nel suo tenant richiedono l'accesso alla chiave dal tenant del cliente per eseguire le operazioni di crittografia/decrittografia.

L'immagine seguente mostra la crittografia dei dati inattivi con identità federata in un flusso di lavoro CMK tra tenant che interessa un provider di servizi e il relativo cliente.

Screenshot che mostra una chiave gestita dal cliente tra tenant con un'identità federata.

Nell'esempio precedente sono presenti due tenant di Microsoft Entra: il tenant di un provider di servizi indipendenti (Tenant 1) e il tenant di un cliente (Tenant 2). Tenant 1 ospita i servizi della piattaforma Azure e Tenant 2 ospita l'insieme di credenziali delle chiavi del cliente.

La registrazione di un'applicazione multi-tenant viene creata dal provider di servizi in Tenant 1. In questa applicazione viene creata una credenziale di identità federata usando un'identità gestita assegnata dall'utente. Il nome e l'ID applicazione dell'app vengono quindi condivisi con il cliente.

Un utente con le autorizzazioni appropriate installa l'applicazione del provider di servizi nel tenant del cliente, ovvero in Tenant 2. Un utente concede quindi all'entità servizio associato all'applicazione installata l'accesso all'insieme di credenziali delle chiavi del cliente. Il cliente archivia anche la chiave di crittografia o la chiave gestita dal cliente nell'insieme di credenziali delle chiavi. Il cliente condivide il percorso della chiave (l'URL della chiave) con il provider di servizi.

Il provider di servizi dispone ora di:

  • Un ID applicazione per un'applicazione multi-tenant installata nel tenant del cliente, a cui è stato concesso l'accesso alla chiave gestita dal cliente.
  • Un'identità gestita configurata come credenziale nell'applicazione multi-tenant.
  • La posizione della chiave nell'insieme di credenziali delle chiavi del cliente.

Con questi tre parametri, il provider di servizi effettua il provisioning delle risorse di Azure in Tenant 1 che possono essere crittografate con la chiave gestita dal cliente in Tenant 2.

A questo punto, è possibile suddividere la soluzione end-to-end precedente in tre fasi:

  1. Il provider di servizi configura le identità.
  2. Il cliente concede all'app multi-tenant del provider di servizi l'accesso a una chiave di crittografia in Azure Key Vault.
  3. Il provider di servizi crittografa i dati in una risorsa di Azure usando la chiave gestita dal cliente.

Le operazioni nella fase 1 sono una configurazione una tantum per la maggior parte delle applicazioni del provider di servizi. Le operazioni nelle fasi 2 e 3 si ripetono invece per ogni cliente.

Fase 1: il provider di servizi configura un'applicazione Microsoft Entra

Procedi Descrizione Ruolo minimo a livello di controllo degli accessi in base al ruolo di Azure Ruolo minimo a livello di controllo degli accessi in base al ruolo di Microsoft Entra
1. Creare una nuova registrazione dell'applicazione Microsoft Entra multi-tenant o iniziare con una registrazione dell'applicazione esistente. Prendere nota dell'ID applicazione (ID client) della registrazione dell'applicazione tramite il portale di Azure, l'API Microsoft Graph, Azure PowerShell o l'interfaccia della riga di comando di Azure None Sviluppatore di applicazioni
2. Creare un'identità gestita assegnata dall'utente (da usare come credenziale di identità federata).
Portale di Azure / Interfaccia della riga di comando di Azure / Azure PowerShell/ Modelli di Azure Resource Manager
Collaboratore di identità gestita None
3. Configurare l'identità gestita assegnata dall'utente come credenziale di identità federata nell'applicazione, in modo che possa rappresentare l'identità dell'applicazione.
Informazioni di riferimento sulle API Graph/ Portale di Azure/ Interfaccia della riga di comando di Azure/ Azure PowerShell
None Proprietario dell'applicazione
4. Condividere il nome dell'applicazione e l'ID applicazione con il cliente, in modo che possano installare e autorizzare l'applicazione. None None

Considerazioni per i provider di servizi

  • I modelli di Azure Resource Manager (ARM) non sono consigliati per la creazione di applicazioni Microsoft Entra.
  • La stessa applicazione multi-tenant può essere usata per accedere alle chiavi in un numero qualsiasi di tenant, ad esempio Tenant 2, Tenant 3, Tenant 4 e così via. In ogni tenant viene creata un'istanza indipendente dell'applicazione con lo stesso ID applicazione ma un ID oggetto diverso. Ogni istanza di questa applicazione viene quindi autorizzata in modo indipendente. Si consideri il modo in cui l'oggetto applicazione usato per questa funzionalità viene impiegato per partizionare l'applicazione in tutti i clienti.
  • In rari scenari, un provider di servizi potrebbe usare un singolo oggetto Application per ogni cliente, ma richiede costi di manutenzione significativi per gestire le applicazioni su larga scala in tutti i clienti.
  • Nel tenant del provider di servizi non è possibile automatizzare la verifica del server di pubblicazione.

Fase 2: il cliente autorizza l'accesso all'insieme di credenziali delle chiavi

Procedi Descrizione Ruoli Controllo degli accessi in base al ruolo di Azure con privilegi minimi Ruoli di Microsoft Entra con privilegi minimi
1.
  • Consigliato: invitare l'utente ad accedere all'app. Se l'utente può accedere, nel tenant esiste un'entità servizio per l'app.
  • Usare Microsoft Graph, Microsoft Graph PowerShell, Azure PowerShell o l'interfaccia della riga di comando di Azure per creare l'entità servizio.
  • Creare un URL di consenso amministratore e concedere il consenso a livello di tenant per creare l'entità servizio usando l'ID applicazione.
  • None Utenti con autorizzazioni per installare le applicazioni
    2. Creare un'istanza di Azure Key Vault e una chiave usata come chiave gestita dal cliente. A un utente deve essere assegnato il ruolo Collaboratore di Key Vault per creare l'insieme di credenziali delle chiavi

    A un utente deve essere assegnato il ruolo Responsabile della crittografia di Key Vault per aggiungere una chiave all'insieme di credenziali delle chiavi
    None
    3. Concedere all'identità dell'applicazione concessa l'accesso all'insieme di credenziali delle chiavi di Azure assegnando il ruolo Utente di crittografia del servizio di crittografia di Key Vault Per assegnare il ruolo Utente di crittografia del servizio di crittografia di Key Vault all'applicazione, è necessario aver assegnato il ruolo Amministratore accessi utente. None
    4. Copiare l'URL dell'insieme di credenziali delle chiavi e il nome della chiave nella configurazione delle chiavi gestite dal cliente dell'offerta SaaS. None None

    Nota

    Per autorizzare l'accesso al modulo di protezione hardware gestito per la crittografia tramite la chiave gestita dal cliente, vedere l'esempio relativo all'account di archiviazione qui. Per altre informazioni sulla gestione delle chiavi mediante il modulo di protezione hardware gestito, vedere Gestire un modulo di protezione hardware gestito con l'interfaccia della riga di comando di Azure

    Considerazioni per i clienti dei provider di servizi

    • Nel tenant del cliente, Tenant 2, un amministratore può impostare criteri per impedire agli utenti non amministratori di installare le applicazioni. Questi criteri possono impedire agli utenti non amministratori di creare entità servizio. Se questi criteri sono configurati, è necessario coinvolgere gli utenti con autorizzazioni per creare entità servizio.
    • L'accesso ad Azure Key Vault può essere autorizzato usando il controllo degli accessi in base al ruolo di Azure o i criteri di accesso. Quando si concede l'accesso a un insieme di credenziali delle chiavi, assicurarsi di usare il meccanismo attivo per l'insieme di credenziali delle chiavi in uso.
    • Una registrazione dell'applicazione Microsoft Entra ha un ID applicazione (ID client). Quando l'applicazione viene installata nel tenant, viene creata un'entità servizio. L'entità servizio condivide lo stesso ID applicazione della registrazione dell'app, ma genera il proprio ID oggetto. Quando si autorizza l'applicazione ad avere accesso alle risorse, potrebbe essere necessario usare l'entità servizio Name o la proprietà ObjectID.

    Fase 3: il provider di servizi crittografa i dati in una risorsa di Azure usando la chiave gestita dal cliente

    Al termine delle fasi 1 e 2, il provider di servizi può configurare la crittografia nella risorsa di Azure con la chiave e l'insieme di credenziali delle chiavi nel tenant del cliente e la risorsa di Azure nel tenant del fornitore di software indipendente. Il provider di servizi può configurare chiavi gestite dal cliente tra tenant con gli strumenti client supportati da tale risorsa di Azure, con un modello di Resource Manager o con l'API REST.

    Configurare chiavi gestite dal cliente tra tenant

    Questa sezione descrive come configurare una chiave gestita dal cliente multi-tenant e crittografare i dati dei clienti. Si apprenderà come crittografare i dati dei clienti in una risorsa in Tenant1 usando una chiave gestita dal cliente archiviata in un insieme di credenziali delle chiavi in Tenant2. È possibile usare il portale di Azure, Azure PowerShell o l'interfaccia della riga di comando di Azure.

    Accedere al portale di Azure e seguire questi passaggi.

    Il provider di servizi configura le identità

    I passaggi seguenti vengono eseguiti dal provider di servizi nel proprio tenant, ovvero Tenant1.

    Il provider di servizi crea una nuova registrazione dell'app multi-tenant

    È possibile creare una nuova registrazione dell'applicazione Microsoft Entra multi-tenant o iniziare con una registrazione dell'applicazione multi-tenant esistente. Se si inizia con una registrazione dell'applicazione esistente, prendere nota dell'ID applicazione (ID client) dell'applicazione.

    Per creare una nuova registrazione:

    1. Cercare Microsoft Entra ID nella casella di ricerca. Individuare e selezionare l'estensione Microsoft Entra ID.

    2. Selezionare Gestisci > Registrazioni app nel riquadro sinistro.

    3. Seleziona + Nuova registrazione.

    4. Specificare il nome della registrazione dell'applicazione e selezionare Account in qualsiasi directory organizzativa (qualsiasi directory Microsoft Entra - Multi-tenant).

    5. Selezionare Registra.

    6. Prendere nota dell'ID applicazione/ID client dell'applicazione.

      Screenshot che mostra come creare una nuova registrazione dell'applicazione multi-tenant.

    Il provider di servizi crea un'identità gestita assegnata dall'utente

    Creare un'identità gestita assegnata dall'utente (da usare come credenziale di identità federata).

    1. Cercare Identità gestite nella casella di ricerca. Individuare e selezionare l'estensione Identità gestite.

    2. Seleziona + Crea.

    3. Specificare il gruppo di risorse, l'area e il nome per l'identità gestita.

    4. Selezionare Rivedi e crea.

    5. Al termine della distribuzione, prendere nota dell'ID risorsa di Azure dell'identità gestita assegnata dall'utente, disponibile in Proprietà. Ad esempio:

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

      Screenshot che mostra come creare un gruppo di risorse e un'identità gestita assegnata dall'utente.

    Il provider di servizi configura l'identità gestita assegnata dall'utente come credenziale federata nell'applicazione

    Configurare un'identità gestita assegnata dall'utente come credenziale di identità federata nell'applicazione, in modo che possa rappresentare l'identità dell'applicazione.

    1. Passare a Microsoft Entra ID > Registrazioni app > applicazione desiderata.

    2. Selezionare Certificati e segreti.

    3. Selezionare Credenziali federate.

      Screenshot che mostra come passare a Certificati e segreti.

    4. Selezionare + Aggiungi credenziali.

    5. In Scenario credenziali federate selezionare Chiavi gestite dal cliente.

    6. Fare clic su Selezionare un'identità gestita. Nel riquadro selezionare la sottoscrizione. In Identità gestita selezionare Identità gestita assegnata dall'utente. Nella casella Seleziona cercare l'identità gestita creata in precedenza, quindi fare clic su Seleziona nella parte inferiore del riquadro.

      Screenshot che mostra come selezionare un'identità gestita.

    7. In Dettagli credenziali specificare un nome e una descrizione facoltativa per le credenziali e selezionare Aggiungi.

      Screenshot che mostra come aggiungere credenziali.

    Il provider di servizi condivide l'ID applicazione con il cliente

    Trovare l'ID applicazione (ID client) dell'applicazione multi-tenant e condividerlo con il cliente.

    Il cliente concede all'app del provider di servizi l'accesso alla chiave nell'insieme di credenziali delle chiavi

    I passaggi seguenti vengono eseguiti dal cliente nel tenant del cliente Tenant2. Il cliente può usare il portale di Azure, Azure PowerShell o l'interfaccia della riga di comando di Azure.

    L'utente che esegue i passaggi deve essere un amministratore con un ruolo con privilegi, ad esempio Amministratore applicazione, Amministratore applicazione cloud o Amministratore globale.

    Accedere al portale di Azure e seguire questi passaggi.

    Il cliente installa l'applicazione del provider di servizi nel tenant del cliente

    Per installare l'applicazione registrata del provider di servizi nel tenant del cliente, creare un'entità servizio con l'ID applicazione dall'app registrata. È possibile creare l'entità servizio in uno dei modi seguenti:

    Il cliente crea un insieme di credenziali delle chiavi

    Per creare l'insieme di credenziali delle chiavi, all'account dell'utente deve essere assegnato il ruolo Collaboratore di Key Vault o un altro ruolo che consenta la creazione di un insieme di credenziali delle chiavi.

    1. Nel menu del portale di Azure o dalla pagina Home selezionare + Crea una risorsa. Nella casella Cerca immettere Insiemi di credenziali delle chiavi. Nell'elenco dei risultati scegliere Insiemi di credenziali delle chiavi . Nella pagina Insiemi di credenziali delle chiavi selezionare Crea.

    2. Nella scheda Informazioni di base scegliere una sottoscrizione. In Gruppo di risorse selezionare Crea nuovo e immettere un nome per il gruppo di risorse.

    3. Immettere un nome univoco per l'insieme di credenziali delle chiavi.

    4. Selezionare un'area e un piano tariffario.

    5. Abilitare la protezione dalla rimozione definitiva per il nuovo insieme di credenziali delle chiavi.

    6. Nella scheda Criteri di accesso selezionare Controllo degli accessi in base al ruolo di Azure per Modello di autorizzazione.

    7. Selezionare Rivedi e crea e quindi Crea.

      Screenshot che mostra come creare un insieme di credenziali delle chiavi.

    Prendere nota del nome dell'insieme di credenziali delle chiavi e dell'URI. Le applicazioni che accedono all'insieme di credenziali delle chiavi devono usare questo URI.

    Per altre informazioni, vedere Avvio rapido: Creare un'istanza di Azure Key Vault tramite il portale di Azure.

    Il cliente assegna il ruolo Responsabile della crittografia di Key Vault a un account utente

    Questo passaggio garantisce che sia possibile creare chiavi di crittografia.

    1. Passare all'insieme di credenziali delle chiavi e selezionare Controllo di accesso (IAM) nel riquadro sinistro.
    2. Sotto Concedi l'accesso a questa risorsa, seleziona Aggiungi assegnazione ruolo.
    3. Cercare e selezionare Responsabile della crittografia di Key Vault.
    4. In Membri selezionare Utente, gruppo o entità servizio.
    5. Selezionare Membri e cercare l'account utente.
    6. Selezionare Rivedi + Assegna.

    Il cliente crea una chiave di crittografia

    Per creare la chiave di crittografia, all'account dell'utente deve essere assegnato il ruolo Responsabile della crittografia di Key Vault o un altro ruolo che consenta la creazione di una chiave.

    1. Nella pagina delle proprietà dell'istanza di Key Vault selezionare Chiavi.
    2. Seleziona Genera/Importa.
    3. Nella schermata Crea una chiave specificare un nome per la chiave. Lasciare invariati gli altri valori predefiniti.
    4. Seleziona Crea.
    5. Copiare l'URI della chiave.

    Il cliente concede all'applicazione del provider di servizi l'accesso alla chiave nell'insieme di credenziali delle chiavi

    Assegnare il ruolo Controllo degli accessi in base al ruolo di Azure Utente di crittografia del servizio di crittografia di Key Vault all'applicazione registrata del provider di servizi in modo che possa accedere all'insieme di credenziali delle chiavi.

    1. Passare all'insieme di credenziali delle chiavi e selezionare Controllo di accesso (IAM) nel riquadro sinistro.
    2. Sotto Concedi l'accesso a questa risorsa, seleziona Aggiungi assegnazione ruolo.
    3. Cercare e selezionare Utente di crittografia del servizio di crittografia di Key Vault.
    4. In Membri selezionare Utente, gruppo o entità servizio.
    5. Selezionare Membri e cercare il nome dell'applicazione installata dal provider di servizi.
    6. Selezionare Rivedi + Assegna.

    È ora possibile configurare le chiavi gestite dal cliente con l'URI e la chiave dell'insieme di credenziali delle chiavi.

    Crea un set di crittografia dischi

    Dopo aver creato l'insieme di credenziali delle chiavi di Azure e aver settato le configurazioni necessarie di Microsoft Entra, distribuire un set di crittografia dischi configurato per il funzionamento multi-tenant e associarlo a una chiave dell'insieme di credenziali delle chiavi. A tale scopo, è possibile usare il portale di Azure, Azure PowerShell o l'interfaccia della riga di comando di Azure. È possibile usare anche un modello di Resource Manager o l'API REST.

    Per usare il portale di Azure, accedervi e seguire questa procedura.

    1. Selezionare + Crea una risorsa, cercare Set di crittografia dischi e selezionare Crea > Set di crittografia dischi.

    2. In Dettagli progetto selezionare la sottoscrizione e il gruppo di risorse in cui creare il set di crittografia dischi.

    3. In Dettagli istanza specificare un nome per il set di crittografia dischi.

      Screenshot che mostra come immettere i dettagli del progetto e dell'istanza per creare un nuovo set di crittografia dischi.

    4. Selezionare l'area in cui creare il set di crittografia dischi.

    5. In Tipo di crittografia selezionare Crittografia dati inattivi con chiave gestita dal cliente.

    6. In Chiave di crittografia selezionare il pulsante di opzione Immetti chiave dell'URI, quindi immettere l'URI chiave della chiave creata nel tenant del cliente.

    7. In Identità assegnata dall'utente selezionare Seleziona un'identità.

    8. Selezionare l'identità gestita assegnata dall'utente creata in precedenza nel tenant dell'ISV, quindi selezionare Aggiungi.

    9. In Applicazione multi-tenant selezionare Seleziona un'applicazione.

    10. Selezionare l'applicazione registrata multi-tenant creata in precedenza nel tenant dell'ISV e cliccare su Seleziona.

    11. Selezionare Rivedi e crea.

    Usare un modello di Azure Resource Manager

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

    Usare l'API REST

    Usare il token di connessione come intestazione dell’autorizzazione e application/JSON come tipo di contenuto in BODY. (scheda Rete, filtrare in management.azure durante l'esecuzione di qualsiasi richiesta ARM nel portale).

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

    Passaggi successivi

    Vedere anche: