Udostępnij za pośrednictwem


Używanie interfejsu wiersza polecenia platformy Azure do włączania szyfrowania po stronie serwera przy użyciu kluczy zarządzanych przez klienta dla dysków zarządzanych

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

Usługa 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ą interfejsu wiersza polecenia platformy Azure lub modułu Azure PowerShell.
  • 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.
    • Klucze HSM wymagają warstwy Premium usługi Azure Key Vault.
  • Tylko w przypadku dysków w warstwie Ultra Disk i SSD w warstwie Premium w wersji 2:
    • Migawki utworzone na podstawie dysków zaszyfrowanych za pomocą szyfrowania po stronie serwera i kluczy zarządzanych przez klienta muszą być szyfrowane przy użyciu tych samych kluczy zarządzanych przez klienta.
    • Tożsamości zarządzane przypisane przez użytkownika nie są obsługiwane w przypadku dysków w warstwie Ultra i dysków SSD w warstwie Premium w wersji 2 zaszyfrowanych przy użyciu kluczy zarządzanych przez klienta.
    • Obecnie nieobsługiwane w usłudze Azure Government lub Azure —Chiny.
  • 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.
    • Usługi Azure Key Vault mogą być używane z innej subskrypcji, ale muszą znajdować się w tym samym regionie co zestaw szyfrowania dysków. Jako wersja zapoznawcza możesz używać usługi Azure Key Vault z różnych dzierżaw firmy Microsoft Entra.
  • Dyski zaszyfrowane za pomocą kluczy zarządzanych przez klienta mogą być przenoszone tylko do innej grupy zasobów, jeśli maszyna wirtualna, do której są dołączone, zostanie cofnięto przydział.
  • 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 zaszyfrowane przy użyciu usługi 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ć 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

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

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 zarządzane przez klienta opierają się na tożsamościach zarządzanych dla zasobów platformy Azure— funkcji identyfikatora Entra firmy Microsoft. Podczas konfigurowania kluczy zarządzanych przez klienta tożsamość zarządzana jest automatycznie przypisywana do zasobów w ramach tych elementów. Jeśli następnie przeniesiesz subskrypcję, grupę zasobów lub dysk zarządzany z jednego katalogu firmy 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 firmy Microsoft Entra.

Następne kroki