Esercizio - Crittografare i dischi delle macchine virtuali esistenti

Completato

Si supponga di sviluppare un'app di gestione finanziaria per nuove startup. Si vuole assicurarsi che tutti i dati dei clienti siano protetti. Si è quindi deciso di implementare Crittografia dischi di Azure (ADE) in tutti i dischi del sistema operativo e dei dati nei server che ospitano questa app. Per soddisfare i requisiti di conformità, è anche necessario essere responsabili della gestione delle chiavi di crittografia.

In questa unità vengono crittografati i dischi di una macchina virtuale esistente, gestendo 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. Usare 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. In questo caso viene 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 Cloud Shell lo richiede, immettere un nome utente e una password per la macchina virtuale. Queste informazioni verranno usate come account iniziale creato per la macchina virtuale.

    Nota

    Questo comando userà alcune impostazioni predefinite perché non sono state fornite molte opzioni. In particolare, crea un'immagine Windows 2016 Server con dimensione impostata suStandard_DS1_v2. Tenere presente che le macchine virtuali di livello Basic non supportano Crittografia dischi di Azure 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 esaminare ciò che è stato creato:

    $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 noti 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

Ora ogni passaggio verrà spiegato singolarmente, ma quando si esegue questa operazione nella propria sottoscrizione, è possibile usare un comodo script di PowerShell, disponibile come collegamento 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. È necessario abilitare il servizio una sola volta.

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 di posizionarlo nella stessa posizione dei gruppi di risorse e della macchina virtuale.
    • Abilitare l'insieme di credenziali delle chiavi per l'uso con la crittografia del disco.
    • Specificare un nome univoco per l'insieme di credenziali delle chiavi.
    New-AzKeyVault -VaultName $keyVaultName `
        -Location $location `
        -ResourceGroupName $rgName `
        -EnabledForDiskEncryption
    

    Verrà visualizzato un avviso da questo comando che indica che nessun utente riesce ad accedere.

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

    Questo avviso è corretto perché l'insieme di credenziali viene usato solo per archiviare le chiavi di crittografia per la macchina virtuale e gli utenti non hanno 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 questo fosse un sistema di produzione, sarebbe necessario eseguire una copia di backup dei dischi gestiti usando Backup di Azure o creando uno snapshot. È possibile creare gli snapshot nel portale di Azure o tramite la riga di comando. In PowerShell viene usato il cmdlet New-AzSnapshot. Poiché questo è un semplice esercizio i cui dati alla fine vengono 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]. L'impostazione predefinita è All. È 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 avvisa 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
    

    Ora il disco del sistema operativo è crittografato. Anche eventuali dischi dati collegati visibili in Windows saranno crittografati.

    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. Eseguire nuovamente il cmdlet Set-AzVMDiskEncryptionExtension per crittografare i 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.