Secure Key Release with Confidential VMs How To Guide

L'articolo seguente descrive come eseguire una versione sicura della chiave da Azure Key Vault quando le applicazioni vengono eseguite con una macchina virtuale riservata basata su AMD edizione Standard V-SNP. Per altre informazioni sulla versione della chiave sicura e sul confidential computing di Azure, vedere qui.

SKR richiede che un'applicazione che esegue SKR attraversi un flusso di attestazione guest remoto usando Microsoft attestazione di Azure (MAA), come descritto qui.

Flusso e architettura generali

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

  1. Assegnare un'identità gestita alla macchina virtuale riservata. Sono supportate le identità gestite assegnate dal sistema o un'identità gestita assegnata dall'utente.
  2. Impostare un criterio di accesso di Key Vault per concedere all'identità gestita l'autorizzazione della chiave di rilascio. Un criterio consente alla macchina virtuale riservata di accedere all'insieme di credenziali delle chiavi ed eseguire l'operazione di rilascio. Se si usa il modulo di protezione hardware gestito di Key Vault, assegnare l'appartenenza al ruolo "Utente versione del servizio 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 che la chiave può essere usata solo per lo scopo desiderato.
  4. Per eseguire la versione, inviare una richiesta HTTP all'insieme di credenziali delle chiavi dalla macchina virtuale riservata. La richiesta HTTP deve includere il report della piattaforma di attestazione delle macchine virtuali riservate nel corpo della richiesta. Il report della piattaforma attestato viene usato per verificare l'attendibilità dello stato della piattaforma abilitata per l'ambiente di esecuzione attendibile, ad esempio la macchina virtuale riservata. Il servizio Microsoft attestazione di Azure può essere usato per creare il report della piattaforma attestato e includerlo nella richiesta.

Diagram of the aforementioned operations, which we'll be performing.

Distribuzione di un'istanza di Azure Key Vault

Configurare AKV Premium o MHSM AKV con una chiave esportabile. Seguire le istruzioni dettagliate riportate qui per configurare le 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 di avvio rapido su come distribuire una macchina virtuale riservata con un modello di Resource Manager

Abilita l'identità gestita assegnata dal sistema

Le identità gestite per le risorse di Azure forniscono 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 un CVM, l'account deve avere l'assegnazione di ruolo 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 Microsoft.Compute/virtualMachines risorsa di interesse e aggiungere la "identity" proprietà allo stesso livello della name: vmName proprietà . Usare la sintassi seguente:

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

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