Ćwiczenie — szyfrowanie istniejących dysków maszyny wirtualnej

Ukończone

Załóżmy, że tworzysz aplikację do zarządzania finansami dla nowych startupów biznesowych. Chcesz mieć pewność, że wszystkie dane klientów są zabezpieczone. Dlatego podjęto decyzję o zaimplementowaniu usługi Azure Disk Encryption (ADE) na wszystkich dyskach systemu operacyjnego i danych na serwerach hostujących tę aplikację. Aby spełnić wymagania dotyczące zgodności, musisz również wziąć odpowiedzialność za zarządzanie własnym kluczem szyfrowania.

W tej lekcji szyfrujesz dyski na istniejącej maszynie wirtualnej i zarządzasz kluczami szyfrowania przy użyciu własnej usługi Azure Key Vault.

Przygotowywanie środowiska

Zacznij od wdrożenia nowej maszyny wirtualnej z systemem Windows na maszynie wirtualnej platformy Azure.

Wdrażanie maszyn wirtualnych z systemem Windows

Aby utworzyć i wdrożyć nową maszynę wirtualną z systemem Windows, użyj okna programu Azure PowerShell po prawej stronie.

  1. Utwórz zmienną środowiska PowerShell do przechowywania wybranej lokalizacji. Użyj tego samego regionu co grupa zasobów.

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

    Napiwek

    Do kopiowania poleceń do schowka możesz używać przycisku Kopiuj. Aby wkleić, kliknij prawym przyciskiem myszy nowy wiersz w terminalu usługi Cloud Shell i wybierz polecenie Wklej lub użyj skrótu klawiaturowego Shift+Insert (⌘+V w systemie macOS).

  2. Następnie zdefiniuj kilka zmiennych bardziej wygodnych do przechwytywania nazwy maszyny wirtualnej i grupy zasobów. W tym miejscu używasz wstępnie utworzonej grupy zasobów. Zwykle należy utworzyć nową grupę zasobów w ramach subskrypcji przy użyciu polecenia New-AzResourceGroup.

    $vmName = "fmdata-vm01"
    $rgName = "<rgn>[sandbox Resource Group]</rgn>"
    
  3. Aby utworzyć nową maszynę wirtualną, użyj polecenia New-AzVm:

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

    Gdy usługa Cloud Shell wyświetli monit, wprowadź nazwę użytkownika i hasło dla maszyny wirtualnej. Te informacje są używane jako początkowe konto utworzone dla maszyny wirtualnej.

    Uwaga

    To polecenie będzie używać niektórych wartości domyślnych, ponieważ nie dostarczaliśmy wielu opcji. W szczególności tworzy obraz systemu Windows 2016 Server o rozmiarze ustawionym na Standard_DS1_v2. Pamiętaj, że maszyny wirtualne w warstwie Podstawowa nie obsługują usługi ADE, jeśli zdecydujesz się określić rozmiar maszyny wirtualnej.

  4. Po zakończeniu wdrażania maszyny wirtualnej należy przechwytywać do zmiennej szczegóły maszyny wirtualnej. Możesz użyć tej zmiennej do zapoznania się z utworzonymi funkcjami:

    $vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
    
  5. Możesz użyć następującego kodu, aby potwierdzić dysk systemu operacyjnego dołączony do maszyny wirtualnej:

    $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. Sprawdź bieżący stan szyfrowania dysku systemu operacyjnego (i dowolnych dysków z danymi).

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

    Zwróć uwagę, że dyski są obecnie niezaszyfrowane.

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

Zmieńmy to.

Szyfrowanie dysków maszyn wirtualnych za pomocą usługi Azure Disk Encryption

Musimy chronić te dane, więc zaszyfrujmy te dyski. Pamiętaj, że należy wykonać kilka kroków:

  1. Tworzenie magazynu kluczy.

  2. Skonfiguruj magazyn kluczy do obsługi szyfrowania dysków.

  3. Poinformuj platformę Azure o zaszyfrowaniu dysków maszyn wirtualnych przy użyciu klucza przechowywanego w magazynie kluczy.

Napiwek

Omówimy kroki indywidualnie, ale podczas wykonywania tego zadania we własnej subskrypcji możesz użyć przydatnego skryptu programu PowerShell, który został połączony w sekcji Podsumowanie tego modułu.

Tworzenie magazynu kluczy

Aby utworzyć wystąpienie usługi Azure Key Vault, musimy włączyć usługę w subskrypcji. Musisz włączyć usługę tylko raz.

Napiwek

W zależności od Twojej subskrypcji być może należy włączyć dostawcę Microsoft.KeyVault za pomocą polecenia cmdlet Register-AzResourceProvider. Nie jest to konieczne w subskrypcji piaskownicy platformy Azure.

  1. Wybierz nazwę nowego magazynu kluczy. Musi być unikatowy i może zawierać od 3 do 24 znaków, składający się z cyfr, liter i kreski. Spróbuj dodać kilka losowych liczb na końcu, zastępując następujące 1234:

    $keyVaultName = "mvmdsk-kv-1234"
    
  2. Utwórz usługę Azure Key Vault za pomocą polecenia New-AzKeyVault:

    • Upewnij się, że umieścisz ją w tej samej grupie zasobów i lokalizacji co maszyna wirtualna.
    • Włącz magazyn kluczy do użycia z szyfrowaniem dysków.
    • Określ unikatową nazwę magazynu kluczy.
    New-AzKeyVault -VaultName $keyVaultName `
        -Location $location `
        -ResourceGroupName $rgName `
        -EnabledForDiskEncryption
    

    Zostanie wyświetlone ostrzeżenie z tego polecenia o braku dostępu użytkowników.

    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.
    

    Ostrzeżenie jest poprawne, ponieważ po prostu używasz magazynu do przechowywania kluczy szyfrowania dla maszyny wirtualnej, a użytkownicy nie muszą uzyskiwać dostępu do tych danych.

Szyfrowanie dysku

Prawie wszystko jest gotowe do zaszyfrowania dysków. Przed wykonaniem tej czynności zostanie wyświetlone ostrzeżenie dotyczące tworzenia kopii zapasowych.

Ważne

Jeśli był to system produkcyjny, należy wykonać kopię zapasową dysków zarządzanych przy użyciu usługi Azure Backup lub przez utworzenie migawki. Migawki można tworzyć w witrynie Azure Portal lub za pomocą wiersza polecenia. W programie PowerShell użyjesz New-AzSnapshot polecenia cmdlet . Ponieważ jest to proste ćwiczenie i po zakończeniu tych danych zostanie pominięte.

  1. Aby przechowywać informacje o magazynie kluczy, zdefiniuj zmienną:

    $keyVault = Get-AzKeyVault `
        -VaultName $keyVaultName `
        -ResourceGroupName $rgName
    
  2. Następnie, aby zaszyfrować dyski maszyny wirtualnej, uruchom Set-AzVmDiskEncryptionExtension polecenie cmdlet "

    • Parametr VolumeType umożliwia określenie dysków do zaszyfrowania: [Wszystkie | System operacyjny | Dane]. Domyślnie ma wartość Wszystkie. Dyski danych można zaszyfrować tylko w niektórych dystrybucjach systemu Linux.
    • Jeśli nie ma migawki, możesz podać flagę SkipVmBackup dla dysków zarządzanych.
    Set-AzVmDiskEncryptionExtension `
        -ResourceGroupName $rgName `
        -VMName $vmName `
        -VolumeType All `
        -DiskEncryptionKeyVaultId $keyVault.ResourceId `
        -DiskEncryptionKeyVaultUrl $keyVault.VaultUri `
        -SkipVmBackup
    
  3. Polecenie cmdlet ostrzega, że maszyna wirtualna musi zostać przełączony w tryb offline i że wykonanie zadania może potrwać kilka minut. Przejdź dalej i pozwól, aby kontynuować:

    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. Po zakończeniu działania polecenia cmdlet sprawdź ponownie stan szyfrowania:

    Get-AzVmDiskEncryptionStatus  -ResourceGroupName $rgName -VMName $vmName
    

    Dysk systemu operacyjnego powinien być teraz zaszyfrowany. Wszystkie dołączone dyski danych widoczne dla systemu Windows również są szyfrowane.

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

Uwaga

Nowe dyski dodane po zaszyfrowaniu nie będą automatycznie szyfrowane. Możesz ponownie uruchomić polecenie cmdlet, Set-AzVMDiskEncryptionExtension aby zaszyfrować nowe dyski. Jeśli dodasz dyski do maszyny wirtualnej, która ma już zaszyfrowane dyski, pamiętaj o podaniu nowego numeru w sekwencji. Ponadto dyski, które nie są widoczne dla systemu operacyjnego, nie będą szyfrowane. Aby można było go zobaczyć, dysk musi być poprawnie podzielony na partycje, sformatowany i zainstalowany dla rozszerzenia funkcji BitLocker.