Procedura di release di una chiave sicura con VM riservate

Nell'articolo seguente si spiega come eseguire la release di una chiave sicura da Azure Key Vault quando le applicazioni vengono eseguite con una macchina virtuale riservata basata su AMD SEV-SNP. Per altre informazioni sulla procedura di release di una chiave sicura e sul confidential computing di Azure, vedere qui.

Secure Key Release (SKR) richiede che se un'applicazione esegue SKR passi attraverso un flusso di attestazione guest remoto utilizzando l'Attestazione di Microsoft Azure (MAA), come descritto qui.

Informazioni generali su flusso e architettura

Per consentire ad Azure Key Vault di rilasciare una chiave a una macchina virtuale riservata con attestazione, è necessario eseguire alcuni passaggi:

  1. Assegnare un'identità gestita alla macchina virtuale riservata. Sono supportate l'identità gestita assegnata dal sistema o l'identità gestita assegnata dall'utente.
  2. Impostare un criterio di accesso per l'insieme di credenziali delle chiavi per concedere all'identità gestita l'autorizzazione di "rilascio" chiave. Un criterio consente alla macchina virtuale riservata di accedere all'insieme di credenziali delle chiavi e di eseguire l'operazione di rilascio. Se si usa il modulo di protezione hardware gestito da Key Vault, assegnare l'appartenenza al ruolo di "Utente del rilascio del servizio di crittografia del modulo di protezione hardware gestito".
  3. Creare una chiave di Key Vault contrassegnata come esportabile e con un criterio di rilascio associato. I criteri di rilascio della chiave associano la chiave a una macchina virtuale riservata con attestazione e indicano che la chiave può essere usata solo per lo scopo desiderato.
  4. Per eseguire il rilascio, inviare una richiesta HTTP all'insieme di credenziali delle chiavi dalla macchina virtuale riservata. La richiesta HTTP deve includere il report della piattaforma con attestazione delle macchine virtuali riservate nel corpo della richiesta. Il report della piattaforma con attestazione consente di verificare l'attendibilità dello stato della piattaforma abilitata per l'ambiente di esecuzione attendibile, ad esempio la macchina virtuale riservata. Il servizio di attestazione di Microsoft Azure può essere usato per creare il report della piattaforma con attestazione e includerlo nella richiesta.

Diagramma delle operazioni sopra indicate, che verranno eseguite.

Distribuzione di un insieme di credenziali delle chiavi di Azure

Configurare AKV Premium o AKV MHSM con una chiave esportabile. Seguire le istruzioni dettagliate riportate qui Configurare chiavi esportabili SKR

Bicep

@description('Required. Specifies the Azure location where the key vault should be created.')
param location string = resourceGroup().location

@description('Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.')
param tenantId string = subscription().tenantId

resource keyVault 'Microsoft.KeyVault/vaults@2021-11-01-preview' = {
  name: 'mykeyvault'
  location: location
  properties: {
    tenantId: tenantId
    sku: {
      name: 'premium'
      family: 'A'
    }
  }
}

Modello ARM

    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2021-11-01-preview",
      "name": "mykeyvault",
      "location": "[parameters('location')]",
      "properties": {
        "tenantId": "[parameters('tenantId')]",
        "sku": {
          "name": "premium",
          "family": "A"
        }
      }
    }

Distribuire una macchina virtuale riservata

Seguire le istruzioni della guida di avvio rapido su come "distribuire una macchina virtuale riservata con un modello di ARM"

Abilita l'identità gestita assegnata dal sistema

Le identità gestite per le risorse di Azure offrono ai servizi di Azure un'identità gestita automaticamente in Microsoft Entra ID. È possibile usare questa identità per l'autenticazione in qualsiasi servizio che supporta l'autenticazione di Microsoft Entra senza dover immettere le credenziali nel codice.

Per abilitare l'identità gestita assegnata dal sistema in una macchina virtuale riservata, è necessario assegnare all'account il ruolo di Collaboratore Macchina virtuale. Non sono richieste altre assegnazioni di ruolo della directory di Microsoft Entra.

  1. Se si accede ad Azure localmente o tramite il portale di Azure, usare un account che sia associato alla sottoscrizione di Azure che contiene la VM.

  2. Per abilitare l'identità gestita assegnata dal sistema, caricare il modello in un editor, individuare la risorsa interessata Microsoft.Compute/virtualMachines e aggiungere la proprietà "identity" allo stesso livello della proprietà name: vmName. Usare la sintassi seguente:

       identity:{
         type: 'SystemAssigned'
       }
    
  3. Aggiungere i dettagli resource al modello.

     resource confidentialVm 'Microsoft.Compute/virtualMachines@2021-11-01' = {
       name: vmName
       location: location
       identity:{
         type: 'SystemAssigned'
       }
       // other resource provider properties
     }