Używanie interfejsu wiersza polecenia platformy Azure do włączania kompleksowego szyfrowania przy użyciu szyfrowania na hoście

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

Po włączeniu szyfrowania na hoście dane przechowywane na hoście maszyny wirtualnej są szyfrowane w spoczynku i przepływy szyfrowane w usłudze Storage. Aby uzyskać informacje koncepcyjne dotyczące szyfrowania na hoście i innych typów szyfrowania dysków zarządzanych, zobacz Szyfrowanie na hoście — kompleksowe szyfrowanie danych maszyny wirtualnej.

Ograniczenia

  • Obsługiwane w przypadku dysków Ultra Disk o rozmiarze 4k i ssd w warstwie Premium w wersji 2.
  • Obsługiwane tylko w przypadku dysków Ultra Disk o rozmiarze 512e i ssd w warstwie Premium w wersji 2, jeśli zostały utworzone po 13.05.2023.
    • W przypadku dysków utworzonych przed tą datą utwórz migawkę dysku i utwórz nowy dysk przy użyciu migawki.
  • Nie można włączyć na maszynach wirtualnych ani w zestawach skalowania maszyn wirtualnych, które obecnie lub kiedykolwiek miały włączoną usługę Azure Disk Encryption.
  • Nie można włączyć usługi Azure Disk Encryption na dyskach z włączonym szyfrowaniem na hoście.
  • Szyfrowanie można włączyć w istniejących zestawach skalowania maszyn wirtualnych. Jednak tylko nowe maszyny wirtualne utworzone po włączeniu szyfrowania są automatycznie szyfrowane.
  • Aby można było zaszyfrować istniejące maszyny wirtualne, należy cofnąć przydział i przydzielić ich przydział.

Dostępność w regionach

Szyfrowanie na hoście jest dostępne we wszystkich regionach dla wszystkich typów dysków.

Obsługiwane rozmiary maszyn wirtualnych

Pełną listę obsługiwanych rozmiarów maszyn wirtualnych można ściągnąć programowo. Aby dowiedzieć się, jak je programowo pobrać, zobacz sekcję Znajdowanie obsługiwanych rozmiarów maszyn wirtualnych . Uaktualnienie rozmiaru maszyny wirtualnej powoduje sprawdzenie poprawności, aby sprawdzić, czy nowy rozmiar maszyny wirtualnej obsługuje funkcję EncryptionAtHost.

Wymagania wstępne

Przed użyciem właściwości EncryptionAtHost dla maszyny wirtualnej/usługi VMSS należy włączyć tę funkcję dla subskrypcji. Aby włączyć funkcję dla subskrypcji, wykonaj następujące kroki:

  • Wykonaj następujące polecenie, aby zarejestrować funkcję dla subskrypcji
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
  • Przed wypróbowaniem funkcji sprawdź, czy stan rejestracji to Zarejestrowano (trwa kilka minut) przy użyciu poniższego polecenia.
az feature show --namespace Microsoft.Compute --name EncryptionAtHost

Tworzenie zasobów

Uwaga

Ta sekcja dotyczy tylko konfiguracji z kluczami zarządzanymi przez klienta. Jeśli używasz kluczy zarządzanych przez platformę, możesz przejść do sekcji Przykładowe skrypty .

Po włączeniu tej funkcji należy skonfigurować element DiskEncryptionSet i usługę Azure Key Vault lub zarządzany moduł HSM usługi Azure Key Vault.

Azure Key Vault

Podczas tworzenia usługi Key Vault należy włączyć ochronę przed przeczyszczeniem. Ochrona przed przeczyszczeniem gwarantuje, że usunięty klucz nie może zostać trwale usunięty, dopóki okres przechowywania nie wygaśnie. Te ustawienia chronią cię przed utratą danych z powodu przypadkowego usunięcia. Te ustawienia są obowiązkowe w przypadku używania usługi Key Vault do szyfrowania dysków zarządzanych.

Ważne

Jeśli to zrobisz, nie wystąpią problemy podczas przypisywania dodatkowych dysków do zasobu w witrynie Azure Portal.

subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName

az account set --subscription $subscriptionId

az group create --resource-group $rgName --location $location

az keyvault create -n $keyVaultName \
-g $rgName \
-l $location \
--enable-purge-protection true 

az keyvault key create --vault-name $keyVaultName \
-n $keyName \
--protection software
  • Utwórz element DiskEncryptionSet. Możesz ustawić wartość enable-auto-key-rotation równą true, aby włączyć automatyczną rotację klucza. Po włączeniu rotacji automatycznej system automatycznie zaktualizuje wszystkie dyski zarządzane, migawki i obrazy odwołujące się do zestawu szyfrowania dysku, aby używać nowej wersji klucza w ciągu jednej godziny.
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)

az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
  • Udziel zasobowi DiskEncryptionSet dostępu do magazynu kluczy.

Uwaga

Utworzenie tożsamości elementu DiskEncryptionSet na platformie Azure w identyfikatorze Entra firmy Microsoft może potrwać kilka minut. Jeśli podczas uruchamiania następującego polecenia wystąpi błąd, taki jak "Nie można odnaleźć obiektu usługi Active Directory", zaczekaj kilka minut i spróbuj ponownie.

desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)

az keyvault set-policy -n $keyVaultName \
-g $rgName \
--object-id $desIdentity \
--key-permissions wrapkey unwrapkey get

Zarządzany moduł HSM usługi Azure Key Vault

Alternatywnie możesz użyć zarządzanego modułu HSM do obsługi kluczy.

W tym celu należy spełnić następujące wymagania wstępne:

Konfigurowanie

Po utworzeniu zarządzanego modułu HSM i dodaniu uprawnień włącz ochronę przed przeczyszczaniem i utwórz klucz szyfrowania.

subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
    
az account set --subscription $subscriptionId
    
az keyvault update-hsm --subscription $subscriptionId -g $rgName --hsm-name $keyVaultName --enable-purge-protection true
    
az keyvault key create --hsm-name  $keyVaultName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 2048

Następnie utwórz element DiskEncryptionSet.

keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
    
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false

Na koniec przyznaj usłudze DiskEncryptionSet dostęp do zarządzanego modułu HSM.

desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
    
az keyvault role assignment create --hsm-name $keyVaultName --role "Managed HSM Crypto Service Encryption User" --assignee $desIdentity --scope /keys

Przykładowe skrypty

Tworzenie maszyny wirtualnej z szyfrowaniem na hoście z włączonymi kluczami zarządzanymi przez klienta

Utwórz maszynę wirtualną z dyskami zarządzanymi przy użyciu identyfikatora URI zasobu utworzonego wcześniej diskEncryptionSet w celu szyfrowania pamięci podręcznej dysków systemu operacyjnego i danych przy użyciu kluczy zarządzanych przez klienta. Dyski tymczasowe są szyfrowane przy użyciu kluczy zarządzanych przez platformę.

rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN
diskEncryptionSetName=yourDiskEncryptionSetName

diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)

az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 128 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId

Tworzenie maszyny wirtualnej z szyfrowaniem na hoście z włączonymi kluczami zarządzanymi przez platformę

Utwórz maszynę wirtualną z szyfrowaniem na hoście, która umożliwia szyfrowanie pamięci podręcznej dysków systemu operacyjnego/danych i dysków tymczasowych przy użyciu kluczy zarządzanych przez platformę.

rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN

az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--data-disk-sizes-gb 128 128 \

Aktualizowanie maszyny wirtualnej w celu włączenia szyfrowania na hoście

rgName=yourRGName
vmName=yourVMName

az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=true

Sprawdzanie stanu szyfrowania na hoście maszyny wirtualnej

rgName=yourRGName
vmName=yourVMName

az vm show -n $vmName \
-g $rgName \
--query [securityProfile.encryptionAtHost] -o tsv

Aktualizowanie maszyny wirtualnej w celu wyłączenia szyfrowania na hoście

Przed wyłączeniem szyfrowania na hoście należy cofnąć przydział maszyny wirtualnej.

rgName=yourRGName
vmName=yourVMName

az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=false

Tworzenie zestawu skalowania maszyn wirtualnych z szyfrowaniem na hoście włączonym przy użyciu kluczy zarządzanych przez klienta

Utwórz zestaw skalowania maszyn wirtualnych z dyskami zarządzanymi przy użyciu identyfikatora URI zasobu utworzonego wcześniej diskEncryptionSet w celu szyfrowania pamięci podręcznej dysków systemu operacyjnego i danych przy użyciu kluczy zarządzanych przez klienta. Dyski tymczasowe są szyfrowane przy użyciu kluczy zarządzanych przez platformę.

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

rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204
diskEncryptionSetName=yourDiskEncryptionSetName

diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)

az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 64 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId

Tworzenie zestawu skalowania maszyn wirtualnych z szyfrowaniem na hoście z włączonymi kluczami zarządzanymi przez platformę

Utwórz zestaw skalowania maszyn wirtualnych z szyfrowaniem na hoście, który umożliwia szyfrowanie pamięci podręcznej dysków systemu operacyjnego/danych i dysków tymczasowych przy użyciu kluczy zarządzanych przez platformę.

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

rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204

az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--data-disk-sizes-gb 64 128 \

Aktualizowanie zestawu skalowania maszyn wirtualnych w celu włączenia szyfrowania na hoście

rgName=yourRGName
vmssName=yourVMName

az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=true

Sprawdzanie stanu szyfrowania na hoście dla zestawu skalowania maszyn wirtualnych

rgName=yourRGName
vmssName=yourVMName

az vmss show -n $vmssName \
-g $rgName \
--query [virtualMachineProfile.securityProfile.encryptionAtHost] -o tsv

Aktualizowanie zestawu skalowania maszyn wirtualnych w celu wyłączenia szyfrowania na hoście

Szyfrowanie można wyłączyć na hoście w zestawie skalowania maszyn wirtualnych, ale będzie to miało wpływ tylko na maszyny wirtualne utworzone po wyłączeniu szyfrowania na hoście. W przypadku istniejących maszyn wirtualnych należy cofnąć przydział maszyny wirtualnej, wyłączyć szyfrowanie na hoście na tej pojedynczej maszynie wirtualnej, a następnie ponownie przydzielić maszynę wirtualną.

rgName=yourRGName
vmssName=yourVMName

az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=false

Znajdowanie obsługiwanych rozmiarów maszyn wirtualnych

Starsze rozmiary maszyn wirtualnych nie są obsługiwane. Listę obsługiwanych rozmiarów maszyn wirtualnych można znaleźć przy użyciu interfejsów API jednostki SKU zasobów lub modułu Programu Azure PowerShell. Nie można znaleźć obsługiwanych rozmiarów przy użyciu interfejsu wiersza polecenia.

Podczas wywoływania interfejsu API jednostek SKU zasobów sprawdź, czy EncryptionAtHostSupported funkcja jest ustawiona na wartość True.

    {
        "resourceType": "virtualMachines",
        "name": "Standard_DS1_v2",
        "tier": "Standard",
        "size": "DS1_v2",
        "family": "standardDSv2Family",
        "locations": [
        "CentralUSEUAP"
        ],
        "capabilities": [
        {
            "name": "EncryptionAtHostSupported",
            "value": "True"
        }
        ]
    }

W przypadku modułu Azure PowerShell użyj polecenia cmdlet Get-AzComputeResourceSku .

$vmSizes=Get-AzComputeResourceSku | where{$_.ResourceType -eq 'virtualMachines' -and $_.Locations.Contains('CentralUSEUAP')}

foreach($vmSize in $vmSizes)
{
    foreach($capability in $vmSize.capabilities)
    {
        if($capability.Name -eq 'EncryptionAtHostSupported' -and $capability.Value -eq 'true')
        {
            $vmSize

        }

    }
}

Następne kroki

Po utworzeniu i skonfigurowaniu tych zasobów można ich użyć do zabezpieczenia dysków zarządzanych. Poniższy link zawiera przykładowe skrypty, z których każdy ma odpowiedni scenariusz, którego można użyć do zabezpieczenia dysków zarządzanych.

Przykłady szablonów usługi Azure Resource Manager