Übung: Verschlüsseln vorhandener VM-Datenträger

Abgeschlossen

Nehmen Sie an, dass Sie eine Anwendung zur Finanzverwaltung für neue Startupunternehmen entwickeln. Sie möchten sicherstellen, dass alle Daten Ihrer Kunden geschützt sind. Daher haben Sie sich entschieden, Azure Disk Encryption (ADE) durchgängig für alle (Betriebssystem-)Datenträger auf den Servern einzusetzen, auf denen diese App gehostet wird. Im Rahmen Ihrer Complianceanforderungen müssen Sie zudem selbst die Verantwortung für die Verwaltung Ihrer eigenen Verschlüsselungsschlüssel tragen.

In dieser Lerneinheit verschlüsseln Sie Datenträger auf vorhandenen VMs und verwalten die Verschlüsselungsschlüssel mithilfe Ihrer eigenen Azure Key Vault-Instanz.

Vorbereiten der Umgebung

Zunächst wird eine neue Windows-VM auf eine Azure-VM bereitgestellt.

Bereitstellen eines virtuellen Windows-Computers

Verwenden Sie das Azure PowerShell-Fenster auf der rechten Seite, um die neue Windows-VM zu erstellen und bereitzustellen.

  1. Definieren Sie eine PowerShell-Variable, die den ausgewählten Standort enthalten soll. Sie verwenden die gleiche Region wie für die Ressourcengruppe.

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

    Tipp

    Mit der Schaltfläche Kopieren können Sie Befehle in die Zwischenablage kopieren. Klicken Sie zum Einfügen im Cloud Shell-Terminal mit der rechten Maustaste auf eine neue Zeile, und wählen Sie dann Einfügen aus, oder verwenden Sie die Tastenkombination UMSCHALT+EINFG (⌘+V unter macOS).

  2. Definieren Sie als Nächstes einige zweckdienlichere Variablen zum Erfassen des Namens des virtuellen Computers sowie der Ressourcengruppe. Sie verwenden hier die vorab erstellte Ressourcengruppe. Normalerweise würden Sie mithilfe von New-AzResourceGroup eine neue Ressourcengruppe in Ihrem Abonnement erstellen.

    $vmName = "fmdata-vm01"
    $rgName = "<rgn>[sandbox Resource Group]</rgn>"
    
  3. Verwenden Sie New-AzVm, um einen neuen virtuellen Computer zu erstellen:

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

    Wenn Sie von Cloud Shell dazu aufgefordert werden, geben Sie einen Benutzernamen und ein Kennwort für die VM ein. Diese Informationen werden für das erste Konto verwendet, das für die VM erstellt wird.

    Hinweis

    Dieser Befehl verwendet einige Standardeinstellungen, da Sie viele Optionen nicht übergeben haben. Dadurch wird insbesondere ein Windows 2016 Server-Image mit der Größe Standard_DS1_v2 erstellt. Beachten Sie, dass die VMs im Basic-Tarif ADE nicht unterstützen, wenn Sie die VM-Größe angeben möchten.

  4. Sobald die Bereitstellung der VM abgeschlossen ist, können Sie die Details zur VM in einer Variablen erfassen. Sie können mithilfe dieser Variable die erstellten Komponenten untersuchen:

    $vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
    
  5. Sie können den folgenden Code verwenden, um den Datenträger des Betriebssystems zu bestätigen, der an die VM angefügt ist:

    $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. Überprüfen Sie den aktuellen Status der Verschlüsselung auf dem Betriebssystem-Datenträger (und auf allen anderen Datenträgern).

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

    Beachten Sie, dass die Datenträger derzeit nicht verschlüsselt sind.

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

Ändern wir das.

Verschlüsseln der Datenträger des virtuellen Computers mithilfe von Azure Disk Encryption

Da wir diese Daten schützen müssen, sollten wir die Datenträger verschlüsseln. Denken Sie daran, dass hierzu mehrere Schritte erforderlich sind:

  1. Erstellen Sie einen Schlüsseltresor.

  2. Richten Sie den Schlüsseltresor so ein, dass er die Datenträgerverschlüsselung unterstützt.

  3. Erteilen Sie Azure den Befehl, die Datenträger der VM mithilfe des im Schlüsseltresor gespeicherten Schlüssels zu verschlüsseln.

Tipp

Sie werden sich die Schritte noch im Detail ansehen. Wenn Sie diese Aufgabe jedoch in Ihrem eigenen Abonnement ausführen, können Sie ein praktisches PowerShell-Skript verwenden, das im Abschnitt Zusammenfassung dieses Moduls verlinkt ist.

Erstellen eines Schlüsseltresors

Zum Erstellen einer Azure Key Vault-Instanz müssen wir den Dienst in unserem Abonnement aktivieren. Sie müssen den Dienst nur einmal aktivieren.

Tipp

Je nach Abonnement müssen Sie möglicherweise den Microsoft.KeyVault-Anbieter mit dem Register-AzResourceProvider-Cmdlet aktivieren. Dies ist beim Azure-Sandboxabonnement nicht erforderlich.

  1. Geben Sie Ihrem neuen Schlüsseltresor einen Namen. Der Name muss eindeutig, zwischen 3 und 24 Zeichen lang sein und sich aus Zahlen, Buchstaben und Bindestrichen zusammensetzen. Versuchen Sie, einige Zufallszahlen am Ende hinzuzufügen um die angefügte Zahl 1234 zu ersetzen:

    $keyVaultName = "mvmdsk-kv-1234"
    
  2. Erstellen Sie mit New-AzKeyVault eine Azure Schlüsseltresor-Instanz:

    • Stellen Sie sicher, dass sich diese in derselben Ressourcengruppe und am selben Ort wie Ihre VM befindet.
    • Aktivieren Sie die Schlüsseltresor-Instanz für die Verwendung mit der Datenträgerverschlüsselung.
    • Geben Sie einen eindeutigen Namen für die Schlüsseltresor-Instanz an.
    New-AzKeyVault -VaultName $keyVaultName `
        -Location $location `
        -ResourceGroupName $rgName `
        -EnabledForDiskEncryption
    

    Nach der Ausführung dieses Befehls wird eine Warnung angezeigt, in der darauf hingewiesen wird, dass kein Benutzer Zugriff hat.

    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.
    

    Diese Warnung stellt kein Problem dar, da der Tresor nur verwendet wird, um die Verschlüsselungsschlüssel für die VM zu speichern, und die Benutzer nicht auf diese Daten zugreifen müssen.

Verschlüsseln des Datenträgers

Sie können gleich mit der Verschlüsselung der Datenträger beginnen. Zuvor jedoch ein Wort der Warnung hinsichtlich der Erstellung von Sicherungen.

Wichtig

Wenn es sich hierbei um ein Produktionssystem handeln würde, müssten Sie eine Sicherung der verwalteten Datenträger vornehmen – entweder mit Azure Backup oder durch das Erstellen einer Momentaufnahme. Sie können Momentaufnahmen im Azure-Portal oder über die Befehlszeile erstellen. In PowerShell verwenden Sie das Cmdlet New-AzSnapshot. Da dies ein einfaches Beispiel ist und diese Daten gelöscht werden, wenn Sie fertig sind, können Sie diesen Schritt überspringen.

  1. Definieren Sie eine Variable, in der die Schlüsseltresor-Informationen gespeichert werden:

    $keyVault = Get-AzKeyVault `
        -VaultName $keyVaultName `
        -ResourceGroupName $rgName
    
  2. Verwenden Sie dann das Cmdlet Set-AzVmDiskEncryptionExtension, um die VM-Datenträger zu verschlüsseln.

    • Mithilfe des Parameters VolumeType können Sie angeben, welche Datenträger verschlüsselt werden sollen: [All (Alle) | OS (Betriebssystem) | Data (Daten)]. Der Standardwert lautet Alle. Datenträger können nicht unter allen Linux-Distributionen verschlüsselt werden.
    • Sie können das SkipVmBackup-Flag für die verwalteten Datenträger bereitstellen, wenn keine Momentaufnahme vorhanden ist.
    Set-AzVmDiskEncryptionExtension `
        -ResourceGroupName $rgName `
        -VMName $vmName `
        -VolumeType All `
        -DiskEncryptionKeyVaultId $keyVault.ResourceId `
        -DiskEncryptionKeyVaultUrl $keyVault.VaultUri `
        -SkipVmBackup
    
  3. Dieses Cmdlet gibt als Warnung aus, dass die VM offline geschaltet werden muss und der Vorgang einige Minuten dauern kann. Setzen Sie den Vorgang fort:

    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. Überprüfen Sie nach Abschluss des Cmdlets erneut den Verschlüsselungsstatus:

    Get-AzVmDiskEncryptionStatus  -ResourceGroupName $rgName -VMName $vmName
    

    Der Betriebssystemdatenträger sollte jetzt verschlüsselt sein. Sämtliche angefügten Datenträger, die für Windows sichtbar sind, werden ebenfalls verschlüsselt.

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

Hinweis

Werden nach der Verschlüsselung neue Datenträger hinzugefügt, werden diese nicht automatisch verschlüsselt. Sie können das Cmdlet Set-AzVMDiskEncryptionExtension erneut ausführen, um neue Datenträger zu verschlüsseln. Geben Sie eine neue Sequenznummer an, wenn Sie einem virtuellen Computer Datenträger hinzufügen, auf dem bereits Datenträger verschlüsselt wurden. Darüber hinaus werden Datenträger, die für das Betriebssystem nicht sichtbar sind, nicht verschlüsselt. Der Datenträger muss ordnungsgemäß partitioniert, formatiert und eingebunden sein, damit die BitLocker-Erweiterung ihn erkennen kann.