Użyj Azure CLI, aby włączyć szyfrowanie po stronie serwera przy użyciu kluczy zarządzanych przez klienta dla dysków zarządzanych przez klienta

Dotyczy: ✔️ maszyny wirtualne Linux ✔️ maszyny wirtualne Windows ✔️ elastyczne zestawy skalowania ✔️ jednolite zestawy skalowania

Azure Disk Storage umożliwia zarządzanie własnymi kluczami podczas korzystania z szyfrowania po stronie serwera (SSE) dla dysków zarządzanych, jeśli wybierzesz. Aby uzyskać informacje koncepcyjne dotyczące SSE z kluczami zarządzanymi przez klienta, a także inne typy szyfrowania dysków zarządzanych przez klienta, zobacz sekcję Klucze zarządzane przez klienta w artykule dotyczącym szyfrowania dysków.

Ograniczenia

Na razie klucze zarządzane przez klienta mają następujące ograniczenia:

  • Jeśli ta funkcja jest włączona dla dysku z migawkami przyrostowymi, nie można jej wyłączyć na tym dysku ani jego migawkach. Aby obejść ten problem, skopiuj wszystkie dane na zupełnie inny dysk zarządzany, który nie korzysta z kluczy zarządzanych przez klienta. Można to zrobić za pomocą modułu Azure CLI lub modułu Azure PowerShell.
  • Dysk i wszystkie skojarzone z nim migawki przyrostowe muszą mieć ten sam zestaw szyfrowania dysku.
  • Obsługiwane są tylko klucze oprogramowania i modułu HSM RSA o rozmiarach 2048-bitowych, 3072-bitowych i 4096-bitowych, bez innych kluczy ani rozmiarów.
    • HSM klucze wymagają premium warstwy Azure Key Vault.
  • Tylko w przypadku dysków Ultra Disks i dysków SSD Premium v2:
    • (Wersja zapoznawcza) Tożsamości zarządzane przypisane przez użytkownika są dostępne dla dysków Ultra i dysków SSD Premium v2 zaszyfrowanych kluczami zarządzanymi przez klienta.
  • Większość zasobów związanych z kluczami zarządzanymi przez klienta (zestawy szyfrowania dysków, maszyny wirtualne, dyski i migawki) musi znajdować się w tej samej subskrypcji i regionie.
  • Dyski zaszyfrowane za pomocą kluczy zarządzanych przez klienta mogą być przeniesione do innej grupy zasobów tylko wtedy, gdy maszyna wirtualna, do której są dołączone, zostanie zdezaktywowana.
  • Dysków, migawek i obrazów zaszyfrowanych przy użyciu kluczy zarządzanych przez klienta nie można przenosić między subskrypcjami.
  • Dyski zarządzane obecnie lub wcześniej szyfrowane przy użyciu Azure Disk Encryption nie mogą być szyfrowane przy użyciu kluczy zarządzanych przez klienta.
  • Można utworzyć maksymalnie 5000 zestawów szyfrowania dysków na region na subskrypcję.
  • Aby uzyskać informacje na temat używania kluczy zarządzanych przez klienta z galeriami obrazów udostępnionych, zobacz Wersja zapoznawcza: używanie kluczy zarządzanych przez klienta do szyfrowania obrazów.

Tworzenie zasobów

Po włączeniu tej funkcji należy skonfigurować zestaw DiskEncryptionSet oraz Azure Key Vault lub Azure Key Vault Zarządzany HSM.

Azure Key Vault

  • Zainstaluj najnowszą Azure CLI i zaloguj się do konta Azure w az login.
  • Utwórz Azure Key Vault i klucz szyfrowania.

Podczas tworzenia Key Vault należy włączyć ochronę przed usuwaniem. 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 Key Vault do szyfrowania dysków zarządzanych.

Ważne

Nie używaj zapisu camel case dla regionu. Jeśli to zrobisz, mogą wystąpić problemy z przypisywaniem 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ć automatyczną rotację 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 / Notatka

Utworzenie tożsamości DiskEncryptionSet w usłudze Microsoft Entra ID przez Azure może potrwać kilka minut. Jeśli podczas uruchamiania następującego polecenia wystąpi błąd, taki jak "Nie można odnaleźć obiektu 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

Azure Key Vault zarządzany moduł HSM

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:

Konfiguracja

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

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

Przykłady

Tworzenie maszyny wirtualnej przy użyciu obrazu witryny Marketplace, szyfrowanie dysków systemu operacyjnego i danych przy użyciu kluczy zarządzanych przez klienta

rgName=yourResourceGroupName
vmName=yourVMName
location=westcentralus
vmSize=Standard_DS3_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 --image $image --size $vmSize --generate-ssh-keys --os-disk-encryption-set $diskEncryptionSetId --data-disk-sizes-gb 128 128 --data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId

Szyfrowanie istniejących dysków zarządzanych

Istniejące dyski nie mogą być dołączone do uruchomionej maszyny wirtualnej w celu zaszyfrowania ich przy użyciu następującego skryptu:

rgName=yourResourceGroupName
diskName=yourDiskName
diskEncryptionSetName=yourDiskEncryptionSetName

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

Tworzenie zestawu skalowania maszyn wirtualnych przy użyciu obrazu witryny Marketplace, szyfrowanie dysków systemu operacyjnego i danych przy użyciu kluczy zarządzanych przez klienta

rgName=yourResourceGroupName
vmssName=yourVMSSName
location=westcentralus
vmSize=Standard_DS3_V2
image=LinuxImageURN
diskEncryptionSetName=yourDiskencryptionSetName

diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vmss create -g $rgName -n $vmssName --image $image --upgrade-policy automatic --admin-username azureuser --generate-ssh-keys --os-disk-encryption-set $diskEncryptionSetId --data-disk-sizes-gb 64 128 --data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId

Tworzenie pustego dysku zaszyfrowanego przy użyciu szyfrowania po stronie serwera z kluczami zarządzanymi przez klienta i dołączanie go do maszyny wirtualnej

vmName=yourVMName
rgName=yourResourceGroupName
diskName=yourDiskName
diskSkuName=Premium_LRS
diskSizeinGiB=30
location=westcentralus
diskLUN=2
diskEncryptionSetName=yourDiskEncryptionSetName


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

az disk create -n $diskName -g $rgName -l $location --encryption-type EncryptionAtRestWithCustomerKey --disk-encryption-set $diskEncryptionSetId --size-gb $diskSizeinGiB --sku $diskSkuName

diskId=$(az disk show -n $diskName -g $rgName --query [id] -o tsv)

az vm disk attach --vm-name $vmName --lun $diskLUN --ids $diskId

Zmień klucz elementu DiskEncryptionSet, aby obrócić klucz dla wszystkich zasobów odwołujących się do elementu DiskEncryptionSet


rgName=yourResourceGroupName
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName


keyVaultId=$(az keyvault show --name $keyVaultName--query [id] -o tsv)

keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)

az disk-encryption-set update -n keyrotationdes -g keyrotationtesting --key-url $keyVaultKeyUrl --source-vault $keyVaultId

Znajdowanie stanu szyfrowania po stronie serwera dysku

az disk show -g yourResourceGroupName -n yourDiskName --query [encryption.type] -o tsv

Ważne

Klucze, którymi zarządza klient, opierają się na tożsamościach zarządzanych dla zasobów Azure, funkcji Microsoft Entra ID. Podczas konfigurowania kluczy zarządzanych przez klienta, tożsamość zarządzana jest automatycznie przypisywana do Twoich zasobów, działa niewidocznie w tle. Jeśli następnie przeniesiesz subskrypcję, grupę zasobów lub dysk zarządzany z jednego katalogu Microsoft Entra do innego, tożsamość zarządzana skojarzona z dyskami zarządzanymi nie zostanie przeniesiona do nowej dzierżawy, więc klucze zarządzane przez klienta mogą już nie działać. Aby uzyskać więcej informacji, zobacz Przenoszenie subskrypcji między katalogami Microsoft Entra.

Dalsze kroki