Esercizio - Crittografare i dischi delle macchine virtuali esistenti

Completato

Si supponga di sviluppare un'app di gestione finanziaria per nuove startup. Poiché è necessario assicurarsi che tutti i dati dei clienti siano protetti, si è deciso di implementare Crittografia dischi di Azure in tutti i dischi del sistema operativo e di dati sui server che ospiteranno l'app. Per soddisfare i requisiti di conformità, è anche necessario essere responsabili della gestione delle chiavi di crittografia.

In questa unità si vedrà come crittografare i dischi di una macchina virtuale esistente e gestire le chiavi di crittografia usando Azure Key Vault.

Preparare l'ambiente

Per iniziare, verrà distribuita una nuova macchina virtuale Windows in una macchina virtuale di Azure.

Distribuzione di una macchina virtuale Windows

Per creare e distribuire una nuova macchina virtuale Windows, usare la finestra di Azure PowerShell a destra.

  1. Definire una variabile di PowerShell per la posizione selezionata. Verrà usata la stessa area del gruppo di risorse.

    $location = (Get-AzResourceGroup -name <rgn>[sandbox Resource Group]</rgn>).location
    

    Suggerimento

    È possibile usare il pulsante Copia per copiare i comandi negli Appunti. Per incollare, fare clic con il pulsante destro del mouse su una nuova riga nel terminale di Cloud Shell e scegliere Incolla oppure usare i tasti di scelta rapida MAIUSC+INS (⌘+V in macOS).

  2. Successivamente, definire altre comode variabili per acquisire il nome della macchina virtuale e il gruppo di risorse. Si noti che verrà usato il gruppo di risorse creato in precedenza. In genere, sarebbe necessario creare un nuovo gruppo di risorse nella sottoscrizione usando New-AzResourceGroup.

    $vmName = "fmdata-vm01"
    $rgName = "<rgn>[sandbox Resource Group]</rgn>"
    
  3. Per creare una nuova macchina virtuale, usare New-AzVm:

    New-AzVm `
        -ResourceGroupName $rgName `
        -Name $vmName `
        -Location $location `
        -OpenPorts 3389
    

    Quando richiesto da Cloud Shell, immettere un nome utente e una password per la macchina virtuale. Questo verrà utilizzato come l'account iniziale creato per la macchina virtuale.

    Nota

    Questo comando userà alcune impostazioni predefinite perché non sono state fornite molte opzioni. In particolare, verrà creata un'immagine Windows 2016 Server con dimensione Standard_DS1_v2. Tenere presente che le macchine virtuali di livello Basic non supportano AdE se si decide di specificare le dimensioni della macchina virtuale.

  4. Dopo aver completato la distribuzione della macchina virtuale, acquisire i dettagli della macchina virtuale in una variabile. È possibile usare questa variabile per esplorare gli elementi creati:

    $vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
    
  5. È possibile usare il codice seguente per confermare il disco del sistema operativo collegato alla macchina virtuale:

    $vm.StorageProfile.OSDisk
    
    OsType                  : Windows
    EncryptionSettings      :
    Name                    : fmdata-vm01_OsDisk_1_6bcf8dcd49794aa785bad45221ec4433
    Vhd                     :
    Image                   :
    Caching                 : ReadWrite
    WriteAcceleratorEnabled :
    CreateOption            : FromImage
    DiskSizeGB              : 127
    ManagedDisk             : Microsoft.Azure.Management.Compute.Models.ManagedDiskP
                              arameters
    
  6. Controllare lo stato corrente della crittografia del disco del sistema operativo e di eventuali dischi dati.

    Get-AzVmDiskEncryptionStatus  `
        -ResourceGroupName $rgName `
        -VMName $vmName
    

    Si noterà che i dischi sono attualmente non crittografati.

    OsVolumeEncrypted          : NotEncrypted
    DataVolumesEncrypted       : NotEncrypted
    OsVolumeEncryptionSettings :
    ProgressMessage            : No Encryption extension or metadata found on the VM
    

Si può cambiare.

Crittografare i dischi della macchina virtuale con Crittografia dischi di Azure

Per proteggere questi dati è necessario crittografare i dischi. Tenere presente che è necessario eseguire diverse operazioni:

  1. Creare un insieme di credenziali delle chiavi.

  2. Configurare l'insieme di credenziali delle chiavi per il supporto della crittografia dei dischi.

  3. Informare Azure di crittografare i dischi della macchina virtuale con la chiave archiviata nell'insieme di credenziali delle chiavi.

Suggerimento

Verranno illustrati i passaggi singolarmente, ma quando si esegue questa attività nella propria sottoscrizione, è possibile usare uno script pratico di PowerShell, collegato nella sezione Riepilogo di questo modulo.

Creare un insieme di credenziali delle chiavi

Per creare un Azure Key Vault, è necessario abilitare il servizio nella sottoscrizione. Si tratta di un'esigenza una tantum.

Suggerimento

A seconda della sottoscrizione, potrebbe essere necessario abilitare il provider Microsoft.KeyVault con il cmdlet Register-AzResourceProvider. Questa operazione non è necessaria nella sottoscrizione sandbox di Azure.

  1. Specificare un nome per il nuovo insieme di credenziali delle chiavi. Deve essere univoco e contenere da 3 a 24 caratteri, che possono includere numeri, lettere e trattini. Provare ad aggiungere alcuni numeri casuali fino alla fine, sostituendo la seguente stringa 1234:

    $keyVaultName = "mvmdsk-kv-1234"
    
  2. Creare un Azure Key Vault con New-AzKeyVault:

    • Assicurarsi che sia posizionato nello stesso gruppo di risorse e nella stessa posizione della macchina virtuale
    • Abilitare l'insieme di credenziali delle chiavi da usare con la crittografia del disco
    • Specificare un nome univoco dell'insieme di credenziali delle chiavi
    New-AzKeyVault -VaultName $keyVaultName `
        -Location $location `
        -ResourceGroupName $rgName `
        -EnabledForDiskEncryption
    

    Verrà visualizzato un avviso da questo comando perché nessun utente riesce ad accedere.

    WARNING: Access policy is not set. No user or app have access permission to use this vault. This can happen if the vault was created by a service principal. To set access policies, use Set-AzKeyVaultAccessPolicy.
    

    Questa situazione è corretta perché l'insieme di credenziali verrà usato solo per archiviare le chiavi di crittografia per la macchina virtuale e gli utenti non avranno bisogno di accedere a questi dati.

Crittografare il disco

Siamo quasi pronti per crittografare i dischi. Prima di farlo, considerare questo avviso relativo alla creazione di copie di backup.

Importante

Se si tratta di un sistema di produzione, è necessario eseguire un backup dei dischi gestiti usando Backup di Azure o creando uno snapshot. È possibile creare snapshot nella portale di Azure o tramite la riga di comando. In PowerShell si userà il cmdlet New-AzSnapshot. Poiché questo è un semplice esercizio i cui dati alla fine verranno eliminati, è possibile ignorare questo passaggio.

  1. Per conservare le informazioni dell'insieme di credenziali delle chiavi, definire una variabile:

    $keyVault = Get-AzKeyVault `
        -VaultName $keyVaultName `
        -ResourceGroupName $rgName
    
  2. Per crittografare i dischi della macchina virtuale, eseguire quindi il cmdlet Set-AzVmDiskEncryptionExtension"

    • Il parametro VolumeType consente di specificare quali dischi crittografare: [Tutti | SO | Dati]. Per impostazione predefinita, verrà impostato su Tutti. È possibile crittografare solo i dischi dati di alcune distribuzioni di Linux.
    • Se non è presente alcuno snapshot, è possibile specificare il flag SkipVmBackup per i dischi gestiti.
    Set-AzVmDiskEncryptionExtension `
        -ResourceGroupName $rgName `
        -VMName $vmName `
        -VolumeType All `
        -DiskEncryptionKeyVaultId $keyVault.ResourceId `
        -DiskEncryptionKeyVaultUrl $keyVault.VaultUri `
        -SkipVmBackup
    
  3. Il cmdlet avviserà l'utente che la macchina virtuale deve essere portata offline e che l'attività potrebbe richiedere alcuni minuti. Lasciar proseguire l'operazione:

    Enable AzureDiskEncryption on the VM
    This cmdlet prepares the VM and enables encryption which may reboot the machine and takes 10-15 minutes to
    finish. Please save your work on the VM before confirming. Do you want to continue?
    [Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
    
  4. Al termine dell'esecuzione del cmdlet, controllare di nuovo lo stato di crittografia:

    Get-AzVmDiskEncryptionStatus  -ResourceGroupName $rgName -VMName $vmName
    

    Il disco del sistema operativo dovrebbe ora essere crittografato. Vengono crittografati anche tutti i dischi dati collegati visibili a Windows.

    OsVolumeEncrypted          : Encrypted
    DataVolumesEncrypted       : NoDiskFound
    OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
    ProgressMessage            : Provisioning succeeded
    

Nota

I nuovi dischi aggiunti dopo la crittografia non verranno automaticamente crittografati. È possibile rieseguire il Set-AzVMDiskEncryptionExtension cmdlet per crittografare nuovi dischi. Se si aggiungono dischi a una macchina virtuale i cui dischi sono già stati crittografati, assicurarsi di specificare un nuovo numero in sequenza. Inoltre, i dischi che non sono visibili al sistema operativo non verranno crittografati. Il disco deve essere partizionato, formattato e montato correttamente per visualizzare l'estensione BitLocker.