Oefening: Bestaande VM-schijven versleutelen

Voltooid

Stel dat u een app voor financieel beheer ontwikkelt voor nieuwe zakelijke start-ups. U wilt ervoor zorgen dat alle gegevens van uw klanten zijn beveiligd, dus u hebt besloten Om Azure Disk Encryption (ADE) te implementeren op alle besturingssysteem- en gegevensschijven op de servers waarop deze app wordt gehost. Als onderdeel van uw nalevingsvereisten bent u ook verantwoordelijk voor uw eigen versleutelingssleutelbeheer.

In deze les gaat u schijven op een virtuele machine (VM) versleutelen en de versleutelingssleutels beheren met behulp van uw eigen Azure Key Vault.

De omgeving voorbereiden

U begint met het implementeren van een nieuwe Windows-VM in een Azure-VM.

Een Windows-VM implementeren

Als u een nieuwe Windows-VM wilt maken en implementeren, gebruikt u het Azure PowerShell-venster aan de rechterkant.

  1. Definieer een PowerShell-variabele die gebruikt wordt voor de geselecteerde locatie. U gebruikt dezelfde regio als voor de resourcegroep.

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

    Tip

    U kunt de knop Kopiëren gebruiken om opdrachten te kopiëren naar het klembord. Als u wilt plakken, klikt u met de rechtermuisknop op een nieuwe regel in de Cloud Shell-terminal en selecteert u Plakken of gebruikt u de sneltoets Shift+Insert (⌘+V in macOS).

  2. Vervolgens definieert u nog een aantal handige variabelen voor de naam van de virtuele machine en de resourcegroep. Houd er rekening mee dat u hier de vooraf gemaakte resourcegroep gebruikt. Normaal gesproken maakt u een nieuwe resourcegroep in uw abonnement met behulp van New-AzResourceGroup.

    $vmName = "fmdata-vm01"
    $rgName = "<rgn>[sandbox Resource Group]</rgn>"
    
  3. Als u een nieuwe VIRTUELE machine wilt maken, gebruikt u New-AzVm:

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

    Wanneer u wordt gevraagd door Cloud Shell, voert u een gebruikersnaam en wachtwoord in voor de virtuele machine. Deze worden gebruikt als het eerste account voor de virtuele machine.

    Notitie

    Met deze opdracht worden enkele standaardinstellingen gebruikt omdat er niet veel opties zijn opgegeven. Hiermee wordt specifiek een installatiekopie van een Windows 2016-server gemaakt, met een grootte die is ingesteld op Standard_DS1_v2. Houd er rekening mee dat vm's in de Basic-laag geen ondersteuning bieden voor ADE als u besluit de VM-grootte op te geven.

  4. Nadat de virtuele machine is geïmplementeerd, legt u de details van de virtuele machine vast in een variabele. U kunt deze variabele gebruiken om te verkennen wat u hebt gemaakt:

    $vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
    
  5. U kunt de onderstaande code gebruiken om te bevestigen dat de besturingssysteemschijf is gekoppeld aan de virtuele machine:

    $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. Controleer de huidige status van versleuteling op de besturingssysteemschijf (en eventuele gegevensschijven).

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

    U ziet dat de schijven momenteel niet zijn versleuteld.

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

Laten we die waarde wijzigen.

De VM-schijven versleutelen met Azure Disk Encryption

We moeten deze gegevens beschermen, dus laten we de schijven versleutelen. Denk eraan dat we verschillende stappen moeten uitvoeren:

  1. Een sleutelkluis maken.

  2. Stel de sleutelkluis in ter ondersteuning van schijfversleuteling.

  3. Informeer Azure om de VM-schijven te versleutelen met behulp van de sleutel die is opgeslagen in de sleutelkluis.

Tip

We gaan de stappen afzonderlijk doorlopen, maar wanneer u deze taak uitvoert in uw eigen abonnement, kunt u een handig PowerShell-script gebruiken dat we hebben gekoppeld in de sectie Samenvatting van deze module.

Maak een sleutelkluis.

Voor het maken van een Azure Key Vault moeten we de service in ons abonnement inschakelen. Dit hoeven we maar één keer te doen.

Tip

Afhankelijk van uw abonnement, moet u mogelijk de Microsoft.KeyVault-provider inschakelen met de cmdlet Register-AzResourceProvider. Dit is niet nodig in het Azure-sandboxabonnement.

  1. Kies een naam voor uw nieuwe sleutelkluis. Het moet uniek zijn en mag tussen 3 en 24 tekens zijn, bestaande uit cijfers, letters en streepjes. Voeg enkele willekeurige getallen toe aan het einde, waarbij u de volgende 1234 vervangt:

    $keyVaultName = "mvmdsk-kv-1234"
    
  2. Een Azure Key Vault maken met New-AzKeyVault:

    • Zorg ervoor dat deze zich in dezelfde resourcegroep en locatie bevindt als uw VIRTUELE machine
    • De sleutelkluis inschakelen voor gebruik met schijfversleuteling
    • Geef een unieke sleutelkluisnaam op
    New-AzKeyVault -VaultName $keyVaultName `
        -Location $location `
        -ResourceGroupName $rgName `
        -EnabledForDiskEncryption
    

    U krijgt een waarschuwing van deze opdracht over geen gebruikers die toegang hebben.

    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.
    

    Dit is prima, omdat u alleen de kluis gebruikt om de versleutelingssleutels voor de virtuele machine op te slaan en gebruikers geen toegang nodig hebben tot deze gegevens.

De schijf versleutelen

U bent bijna klaar om de schijven te versleutelen. Voordat u dit doet, wordt hier een waarschuwing weergegeven over het maken van back-ups.

Belangrijk

Als dit een productiesysteem was, moet u een back-up van de beheerde schijven uitvoeren, hetzij met behulp van Azure Backup of door een momentopname te maken. U kunt momentopnamen maken in Azure Portal of via de opdrachtregel. In PowerShell gebruikt u de New-AzSnapshot cmdlet. Omdat dit een eenvoudige oefening is en u deze gegevens disponeert wanneer u klaar bent, gaat u deze stap overslaan.

  1. Als u de sleutelkluisgegevens wilt bewaren, definieert u een variabele:

    $keyVault = Get-AzKeyVault `
        -VaultName $keyVaultName `
        -ResourceGroupName $rgName
    
  2. Voer vervolgens de Set-AzVmDiskEncryptionExtension cmdlet uit om de VM-schijven te versleutelen"

    • Met de parameter VolumeType kunt u opgeven welke schijven u wilt versleutelen: [Alle | OS | Gegevens]. Deze wordt standaard ingesteld op Alles. Voor bepaalde Linux-distributies kunt u alleen gegevensschijven versleutelen.
    • U kunt de SkipVmBackup vlag voor beheerde schijven opgeven als er geen momentopname is.
    Set-AzVmDiskEncryptionExtension `
        -ResourceGroupName $rgName `
        -VMName $vmName `
        -VolumeType All `
        -DiskEncryptionKeyVaultId $keyVault.ResourceId `
        -DiskEncryptionKeyVaultUrl $keyVault.VaultUri `
        -SkipVmBackup
    
  3. U ziet een waarschuwing van de cmdlet dat de virtuele machine offline gaat, en dat dit enkele minuten kan duren. Ga verder en laat het doorgaan:

    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. Zodra de cmdlet is uitgevoerd, controleert u de versleutelingsstatus opnieuw:

    Get-AzVmDiskEncryptionStatus  -ResourceGroupName $rgName -VMName $vmName
    

    De besturingssysteemschijf moet nu worden versleuteld. Gekoppelde gegevensschijven die zichtbaar zijn voor Windows, worden ook versleuteld.

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

Notitie

Nieuwe schijven die zijn toegevoegd nadat versleuteling is toegevoegd, worden niet automatisch versleuteld. U kunt de Set-AzVMDiskEncryptionExtension cmdlet opnieuw uitvoeren om nieuwe schijven te versleutelen. Als u schijven toevoegt aan een virtuele machine waarop al schijven zijn versleuteld, moet u een nieuw nummer op volgorde opgeven. Bovendien worden schijven die niet zichtbaar zijn voor het besturingssysteem niet versleuteld. De schijf moet correct zijn gepartitioneerd, geformatteerd en gekoppeld voor de BitLocker-extensie om deze te kunnen zien.