Udostępnij za pomocą


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, a podczas przepływu do usługi Storage również pozostają szyfrowane. 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

  • 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 je zdealokować i ponownie przydzielić.

Następujące ograniczenia dotyczą tylko dysków Ultra Disk i SSD w warstwie Premium w wersji 2:

  • Dyski korzystające z rozmiaru sektora 512e muszą zostać utworzone po 13.05.2023 r.
    • Jeśli dysk został utworzony przed tą datą, utwórz migawkę dysku i utwórz nowy dysk przy użyciu migawki.

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 sprawdzanie, 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ć 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ć DiskEncryptionSet oraz Azure Key Vault lub Azure Key Vault Managed HSM.

Azure Key Vault

  • Zainstaluj najnowszy Azure CLI i zaloguj się na konto Azure przy użyciu az login.
  • Utwórz usługę Azure Key Vault i klucz szyfrowania.

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

Nie używaj notacji camel case dla regionu, ponieważ jeśli to zrobisz, możesz napotkać problemy podczas przypisywania dodatkowych dysków do zasobu w portalu Azure.

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 zestaw szyfrowania dysku. Możesz ustawić enable-auto-key-rotation na true, aby włączyć automatyczny obrót klucza. Po włączeniu rotacji automatycznej system automatycznie aktualizuje wszystkie dyski zarządzane, migawki i obrazy odwołujące się do zestawu szyfrowania dysków, 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

Może to potrwać kilka minut, zanim Azure utworzy tożsamość twojego DiskEncryptionSet w Microsoft Entra ID. 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 zarządzanymi dyskami przy użyciu identyfikatora URI zasobu DiskEncryptionSet utworzonego wcześniej, aby zaszyfrować pamięć podręczną dysków systemu operacyjnego i dysków danych za pomocą 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 DiskEncryptionSet utworzonego wcześniej, aby zaszyfrować pamięć podręczną dysków systemu operacyjnego i danych za pomocą 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 działań, które powinieneś podjąć, zobacz Zmiana powodująca niezgodność dla klientów PowerShell/CLI 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

Utwórz zestaw skalowania maszyn wirtualnych z szyfrowaniem włączonym na poziomie hosta, z 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 działań, które powinieneś podjąć, zobacz Zmiana powodująca niezgodność dla klientów PowerShell/CLI 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. Aby znaleźć listę obsługiwanych rozmiarów maszyn wirtualnych, można użyć albo interfejsów API SKU zasobów, albo interfejsu wiersza polecenia platformy Azure.

Podczas wywoływania API SKU zasobów sprawdź, czy EncryptionAtHostSupported możliwość jest ustawiona na True.

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

W przypadku CLI platformy Azure użyj polecenia az vm image list-skus.

location=centralus

az vm list-skus --location $location --all \
--resource-type virtualMachines \
--query "[?capabilities[?name=='EncryptionAtHostSupported' && value=='True']].{VMName:name, EncryptionAtHost:capabilities[?name=='EncryptionAtHostSupported'].value | [0]}" \
--output table

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