Szyfrowanie dysków systemu operacyjnego i dołączonych dysków danych w zestawie skalowania maszyn wirtualnych przy użyciu interfejsu wiersza polecenia platformy Azure

Interfejs wiersza polecenia platformy Azure umożliwia tworzenie zasobów Azure i zarządzanie nimi z poziomu wiersza polecenia lub skryptów. W tym przewodniku Szybki start pokazano, jak za pomocą interfejsu wiersza polecenia platformy Azure utworzyć i zaszyfrować zestaw skalowania maszyn wirtualnych. Aby uzyskać więcej informacji na temat stosowania szyfrowania dysków platformy Azure do zestawu skalowania maszyn wirtualnych, zobacz Usługa Azure Disk Encryption dla zestawów skalowania maszyn wirtualnych.

Wymagania wstępne

  • Ten artykuł wymaga wersji 2.0.31 lub nowszej interfejsu wiersza polecenia platformy Azure. W przypadku korzystania z usługi Azure Cloud Shell najnowsza wersja jest już zainstalowana.

Tworzenie zestawu skalowania

Zanim będzie można utworzyć zestaw skalowania, utwórz grupę zasobów za pomocą polecenia az group create. W poniższym przykładzie pokazano tworzenie grupy zasobów o nazwie myResourceGroup w lokalizacji eastus:

az group create --name myResourceGroup --location eastus

Teraz utwórz zestaw skalowania maszyn wirtualnych za pomocą polecenia az vmss create. Poniższy przykład tworzy zestaw skalowania o nazwie myScaleSet , który jest ustawiony na automatyczne aktualizowanie w miarę stosowania zmian, i generuje klucze SSH, jeśli nie istnieją w pliku ~/.ssh/id_rsa. Do każdego wystąpienia maszyny wirtualnej jest dołączony dysk danych o rozmiarze 32 Gb, a rozszerzenie niestandardowego skryptu platformy Azure służy do przygotowywania dysków danych za pomocą zestawu rozszerzeń az vmss:

Ważne

Upewnij się, że wybrano obsługiwany system operacyjny z usługą ADE. Obsługiwany system operacyjny dla usługi ADE.

# Create a scale set with attached data disk
az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode Flexible \
  --image <SKU Linux Image> \
  --admin-username azureuser \
  --generate-ssh-keys \
  --data-disk-sizes-gb 32

# Prepare the data disk for use with the Custom Script Extension
az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings '{"fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/prepare_vm_disks.sh"],"commandToExecute":"./prepare_vm_disks.sh"}'

Utworzenie i skonfigurowanie wszystkich zasobów zestawu skalowania i maszyn wirtualnych trwa kilka minut.

Tworzenie magazynu kluczy platformy Azure włączonego 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.

Zdefiniuj własne unikatowe keyvault_name. Następnie utwórz usługę KeyVault za pomocą polecenia az keyvault create w tej samej subskrypcji i regionie co zestaw skalowania, a następnie ustaw zasady dostępu --enabled-for-disk-encryption .

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault create --resource-group myResourceGroup --name $keyvault_name --enabled-for-disk-encryption

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.

Zdefiniuj własne unikatowe keyvault_name. Następnie zaktualizuj usługę KeyVault za pomocą polecenia az keyvault update i ustaw zasady dostępu --enabled-for-disk-encryption .

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault update --name $keyvault_name --enabled-for-disk-encryption

Włączanie szyfrowania

Uwaga

W przypadku korzystania z zestawów skalowania maszyn wirtualnych w trybie elastycznej orkiestracji tylko nowe wystąpienia będą szyfrowane. Istniejące wystąpienia w zestawie skalowania muszą być szyfrowane pojedynczo lub usuwane i zastępowane.

Aby zaszyfrować wystąpienia maszyn wirtualnych w zestawie skalowania, najpierw uzyskaj informacje na temat identyfikatora zasobu usługi Key Vault za pomocą polecenia az keyvault show. Te zmienne są używane do rozpoczęcia procesu szyfrowania za pomocą polecenia az vmss encryption enable:

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --volume-type DATA

Rozpoczęcie procesu szyfrowania może potrwać minutę lub dwie.

Ponieważ zestaw skalowania to zasady uaktualniania w zestawie skalowania utworzonym we wcześniejszym kroku są ustawione na automatyczne, wystąpienia maszyn wirtualnych automatycznie uruchamiają proces szyfrowania. W zestawach skalowania, w których zasady uaktualniania mają być wykonywane ręcznie, uruchom zasady szyfrowania w wystąpieniach maszyn wirtualnych za pomocą polecenia az vmss update-instances.

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.

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --key-encryption-key myKEK \
    --key-encryption-keyvault $vaultResourceId \
    --volume-type DATA

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 az vmss encryption show:

az vmss encryption show --resource-group myResourceGroup --name myScaleSet

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

[
  {
    "disks": [
      {
        "encryptionSettings": null,
        "name": "myScaleSet_myScaleSet_0_disk2_3f39c2019b174218b98b3dfae3424e69",
        "statuses": [
          {
            "additionalProperties": {},
            "code": "EncryptionState/encrypted",
            "displayStatus": "Encryption is enabled on disk",
            "level": "Info",
            "message": null,
            "time": null
          }
        ]
      }
    ],
    "id": "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualMachines/0",
    "resourceGroup": "MYRESOURCEGROUP"
  }
]

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 az vmss encryption w następujący sposób:

az vmss encryption disable --resource-group myResourceGroup --name myScaleSet

Następne kroki

  • W tym artykule użyto interfejsu wiersza polecenia platformy Azure do zaszyfrowania zestawu skalowania maszyn wirtualnych. Możesz również użyć programu Azure PowerShell 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ń.
  • W tym miejscu można znaleźć przykład kompleksowego pliku wsadowego dla szyfrowania dysków danych zestawu skalowania systemu Linux. W tym przykładzie tworzona jest grupa zasobów, zestaw skalowania systemu Linux, instalacja dysku danych o rozmiarze 5 GB i szyfrowanie zestawu skalowania maszyn wirtualnych.