Szyfrowanie dysków systemu operacyjnego i dołączonych dysków danych w zestawie skalowania maszyn wirtualnych przy użyciu programu Azure PowerShell

Moduł Azure PowerShell umożliwia tworzenie zasobów platformy Azure i zarządzanie nimi za pomocą wiersza polecenia programu PowerShell lub skryptów. W tym artykule pokazano, jak używać programu Azure PowerShell do tworzenia i szyfrowania zestawu skalowania maszyn wirtualnych. Aby uzyskać więcej informacji na temat stosowania usługi Azure Disk Encryption do zestawu skalowania maszyn wirtualnych, zobacz Usługa Azure Disk Encryption dla zestawów skalowania maszyn wirtualnych.

Azure Cloud Shell

Na platforma Azure hostowane jest Azure Cloud Shell, interaktywne środowisko powłoki, z którego można korzystać w przeglądarce. Do pracy z usługami platformy Azure można używać programu Bash lub PowerShell w środowisku Cloud Shell. Aby uruchomić kod w tym artykule, możesz użyć wstępnie zainstalowanych poleceń usługi Cloud Shell bez konieczności instalowania niczego w środowisku lokalnym.

Aby uruchomić środowisko Azure Cloud Shell:

Opcja Przykład/link
Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu lub polecenia. Wybranie pozycji Wypróbuj nie powoduje automatycznego skopiowania kodu lub polecenia do usługi Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Przejdź do witryny https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć środowisko Cloud Shell w przeglądarce. Button to launch Azure Cloud Shell.
Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal. Screenshot that shows the Cloud Shell button in the Azure portal

Aby użyć usługi Azure Cloud Shell:

  1. Uruchom usługę Cloud Shell.

  2. Wybierz przycisk Kopiuj w bloku kodu (lub bloku poleceń), aby skopiować kod lub polecenie.

  3. Wklej kod lub polecenie do sesji usługi Cloud Shell, wybierając klawisze Ctrl+Shift V w systemach Windows i Linux lub wybierając pozycję Cmd+Shift++V w systemie macOS.

  4. Wybierz klawisz Enter, aby uruchomić kod lub polecenie.

Tworzenie usługi Azure Key Vault włączonej na potrzeby szyfrowania dysków

Usługa Azure Key Vault może przechowywać klucze, wpisy tajne lub hasła, które umożliwiają bezpieczne implementowanie ich w aplikacjach i usługach. Klucze kryptograficzne są przechowywane w usłudze Azure Key Vault przy użyciu ochrony oprogramowania lub można zaimportować lub wygenerować klucze w sprzętowych modułach zabezpieczeń (HSM) certyfikowanych przez standard FIPS 140. Te klucze kryptograficzne służą do szyfrowania i odszyfrowywania dysków wirtualnych dołączonych do maszyny wirtualnej. Zachowasz kontrolę nad tymi kluczami kryptograficznymi i możesz przeprowadzić inspekcję ich użycia.

Utwórz usługę Key Vault za pomocą polecenia New-AzKeyVault. Aby zezwolić usłudze Key Vault na szyfrowanie dysków, ustaw parametr EnabledForDiskEncryption . W poniższym przykładzie zdefiniowano również zmienne dla nazwy grupy zasobów, nazwy magazynu kluczy i lokalizacji. Podaj własną unikatową nazwę usługi Key Vault:

$rgName="myResourceGroup"
$vaultName="myuniquekeyvault"
$location = "EastUS"

New-AzResourceGroup -Name $rgName -Location $location
New-AzKeyVault -VaultName $vaultName -ResourceGroupName $rgName -Location $location -EnabledForDiskEncryption

Korzystanie z istniejącej usługi Key Vault

Ten krok jest wymagany tylko wtedy, gdy masz istniejącą usługę Key Vault, której chcesz używać z szyfrowaniem dysków. Pomiń ten krok, jeśli utworzono usługę Key Vault w poprzedniej sekcji.

Możesz włączyć istniejącą usługę Key Vault w tej samej subskrypcji i regionie co zestaw skalowania na potrzeby szyfrowania dysków za pomocą polecenia Set-AzKeyVaultAccessPolicy. Zdefiniuj nazwę istniejącej usługi Key Vault w zmiennej $vaultName w następujący sposób:

$vaultName="myexistingkeyvault"
Set-AzKeyVaultAccessPolicy -VaultName $vaultName -EnabledForDiskEncryption

Tworzenie zestawu skalowania

Ważne

Od listopada 2023 r. zestawy skalowania maszyn wirtualnych utworzone przy użyciu programu PowerShell i interfejsu wiersza polecenia platformy Azure będą domyślnie ustawiać tryb elastycznej orkiestracji, jeśli nie określono trybu aranżacji. Aby uzyskać więcej informacji na temat tej zmiany i akcji, które należy wykonać, zobacz Zmiana powodująca niezgodność dla klientów programu PowerShell/interfejsu wiersza polecenia usługi VMSS — Microsoft Community Hub

Najpierw ustaw nazwę użytkownika i hasło administratora wystąpień maszyn wirtualnych przy użyciu polecenia Get-Credential:

$cred = Get-Credential

Teraz utwórz zestaw skalowania maszyn wirtualnych za pomocą polecenia New-AzVmss. Musisz również utworzyć moduł równoważenia obciążenia, który umożliwia kierowanie ruchu do poszczególnych wystąpień maszyn wirtualnych. Moduł równoważenia obciążenia zawiera reguły, które pozwalają kierować ruchem na porcie TCP 80 oraz korzystać z ruchu pulpitu zdalnego na porcie TCP 3389 i komunikacji zdalnej programu PowerShell na porcie TCP 5985:

$vmssName="myScaleSet"

New-AzVmss `
    -ResourceGroupName $rgName `
    -VMScaleSetName $vmssName `
    -OrchestrationMode "flexible" `
    -Location $location `
    -VirtualNetworkName "myVnet" `
    -SubnetName "mySubnet" `
    -PublicIpAddressName "myPublicIPAddress" `
    -LoadBalancerName "myLoadBalancer" `
    -Credential $cred

Włączanie szyfrowania

Aby zaszyfrować wystąpienia maszyn wirtualnych w zestawie skalowania, najpierw uzyskaj informacje na temat identyfikatora URI usługi Key Vault i identyfikatora zasobu za pomocą polecenia Get-AzKeyVault. Te zmienne są używane do rozpoczęcia procesu szyfrowania za pomocą polecenia Set-AzVmssDiskEncryptionExtension:

$diskEncryptionKeyVaultUrl=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).VaultUri
$keyVaultResourceId=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).ResourceId

Set-AzVmssDiskEncryptionExtension -ResourceGroupName $rgName -VMScaleSetName $vmssName `
    -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $keyVaultResourceId -VolumeType "All"

Po wyświetleniu monitu wpisz y , aby kontynuować proces szyfrowania dysku w wystąpieniach maszyn wirtualnych zestawu skalowania.

Włączanie szyfrowania przy użyciu klucza KEK w celu opakowania klucza

Możesz również użyć klucza szyfrowania klucza w celu dodania zabezpieczeń podczas szyfrowania zestawu skalowania maszyn wirtualnych.

$diskEncryptionKeyVaultUrl=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).VaultUri
$keyVaultResourceId=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).ResourceId
$keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $vaultName -Name $keyEncryptionKeyName).Key.kid;

Set-AzVmssDiskEncryptionExtension -ResourceGroupName $rgName -VMScaleSetName $vmssName `
    -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $keyVaultResourceId `
    -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $keyVaultResourceId -VolumeType "All"

Uwaga

Składnia wartości parametru disk-encryption-keyvault jest pełnym ciągiem identyfikatora:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault--name]

Składnia wartości parametru key-encryption-key jest pełnym identyfikatorem URI klucza SZYFROWANIA, jak w artykule:
https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]

Sprawdzanie postępu szyfrowania

Aby sprawdzić stan szyfrowania dysków, użyj polecenia Get-AzVmssDiskEncryption:

Get-AzVmssDiskEncryption -ResourceGroupName $rgName -VMScaleSetName $vmssName

Gdy wystąpienia maszyn wirtualnych są szyfrowane, kod EncryptionSummary zgłasza wartość ProvisioningState/succeeded , jak pokazano w następujących przykładowych danych wyjściowych:

ResourceGroupName            : myResourceGroup
VmScaleSetName               : myScaleSet
EncryptionSettings           :
  KeyVaultURL                : https://myuniquekeyvault.vault.azure.net/
  KeyEncryptionKeyURL        :
  KeyVaultResourceId         : /subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/myuniquekeyvault
  KekVaultResourceId         :
  KeyEncryptionAlgorithm     :
  VolumeType                 : All
  EncryptionOperation        : EnableEncryption
EncryptionSummary[0]         :
  Code                       : ProvisioningState/succeeded
  Count                      : 2
EncryptionEnabled            : True
EncryptionExtensionInstalled : True

Wyłączanie szyfrowania

Jeśli nie chcesz już używać zaszyfrowanych dysków wystąpień maszyn wirtualnych, możesz wyłączyć szyfrowanie za pomocą polecenia Disable-AzVmssDiskEncryption w następujący sposób:

Disable-AzVmssDiskEncryption -ResourceGroupName $rgName -VMScaleSetName $vmssName

Następne kroki

  • W tym artykule użyto programu Azure PowerShell do szyfrowania zestawu skalowania maszyn wirtualnych. Możesz również użyć interfejsu wiersza polecenia platformy Azure lub szablonów usługi Azure Resource Manager.
  • Jeśli chcesz zastosować usługę Azure Disk Encryption po aprowizacji innego rozszerzenia, możesz użyć sekwencjonowania rozszerzeń.