Azure PowerShell ile sanal makine ölçek kümesindeki işletim sistemini ve bağlı veri disklerini şifreleme

Önemli

Azure Disk Şifrelemesi 15 Eylül 2028'de kullanımdan kaldırılıyor. Bu tarihe kadar Azure Disk Şifrelemesi'ni kesinti olmadan kullanmaya devam edebilirsiniz. 15 Eylül 2028'de ADE özellikli iş yükleri çalışmaya devam edecek, ancak VM yeniden başlatıldıktan sonra şifrelenmiş disklerin kilidi açılamaz ve hizmet kesintisine neden olur.

Yeni VM'ler için ana makinede şifreleme kullanın veya gizli bilgi işlem iş yükleri için işletim sistemi disk şifrelemesi ile Gizli VM boyutlarını değerlendirin. Hizmet kesintisini önlemek için tüm ADE özellikli VM'lerin (yedeklemeler dahil) kullanımdan kaldırma tarihinden önce konakta şifrelemeye geçirilmesi gerekir. Ayrıntılar için bkz. Azure Disk Şifrelemesi'nden konakta şifrelemeye geçiş .

Azure PowerShell modülü, PowerShell komut satırından veya betiklerde Azure kaynakları oluşturmak ve yönetmek için kullanılır. Bu makalede, Sanal Makine Ölçek Kümesi oluşturmak ve şifrelemek için Azure PowerShell'in nasıl kullanılacağı gösterilmektedir. Sanal Makine Ölçek Kümesine Azure Disk Şifrelemesi uygulama hakkında daha fazla bilgi için bkz. Sanal Makine Ölçek Kümeleri için Azure Disk Şifrelemesi.

Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.

Azure Cloud Shell'i başlatmak için:

Seçenek Örnek/Bağlantı
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin. Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. Azure Cloud Shell için Deneyin örneğini gösteren ekran görüntüsü.
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. Azure Cloud Shell'i başlatma düğmesi.
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. Azure portalında Cloud Shell düğmesini gösteren ekran görüntüsü

Azure Cloud Shell'i kullanmak için:

  1. Cloud Shell'i başlatın.

  2. Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.

  3. Kodu veya komutu Cloud Shell oturumuna yapıştırmak için Windows ve Linux'ta Ctrl+Shift+V seçeneğini veya macOS'ta Cmd+Shift+V seçeneğini kullanın.

  4. Kodu veya komutu çalıştırmak için Enter'ı seçin.

Disk şifrelemesi için etkinleştirilmiş bir Azure Key Vault oluşturma

Azure Key Vault, uygulamalarınızda ve hizmetlerinizde güvenli bir şekilde uygulamanıza olanak sağlayan anahtarları, gizli dizileri veya parolaları depolayabilir. Şifreleme anahtarları yazılım koruması kullanılarak Azure Key Vault'ta depolanır veya anahtarlarınızı FIPS 140 onaylı standartlara sahip Donanım Güvenlik Modülleri'nde (HSM) içeri aktarabilir veya oluşturabilirsiniz. Bu şifreleme anahtarları, VM'nize bağlı sanal diskleri şifrelemek ve şifresini çözmek için kullanılır. Bu şifreleme anahtarlarının denetimini korursunuz ve bunların kullanımını denetleyebilirsiniz.

New-AzKeyVault ile bir Key Vault oluşturun. Key Vault'un disk şifrelemesi için kullanılmasına izin vermek için EnabledForDiskEncryption parametresini ayarlayın. Aşağıdaki örnek ayrıca kaynak grubu adı, Key Vault Adı ve konum için değişkenleri tanımlar. Kendi benzersiz Key Vault adınızı belirtin:

$rgName="myResourceGroup"
$vaultName="myuniquekeyvault"
$location = "EastUS"

New-AzResourceGroup -Name $rgName -Location $location
New-AzKeyVault -VaultName $vaultName -ResourceGroupName $rgName -Location $location -EnabledForDiskEncryption

Mevcut bir Key Vault kullanın

Bu adım yalnızca disk şifrelemesi ile kullanmak istediğiniz mevcut bir Key Vault'nuz varsa gereklidir. Önceki bölümde bir Key Vault oluşturduysanız bu adımı atlayın.

Set-AzKeyVaultAccessPolicy ile disk şifrelemesi için ölçek kümesiyle aynı abonelikte ve bölgede mevcut bir Key Vault'ı etkinleştirebilirsiniz. $vaultName değişkeninde mevcut Key Vault'unuzun adını aşağıdaki gibi tanımlayın:

$vaultName="myexistingkeyvault"
Set-AzKeyVaultAccessPolicy -VaultName $vaultName -EnabledForDiskEncryption

Ölçek kümesi oluşturma

Önemli

Kasım 2023'den itibaren, düzenleme modu belirtilmezse PowerShell ve Azure CLI kullanılarak oluşturulan VM ölçek kümeleri varsayılan olarak Esnek Düzenleme Modu olarak ayarlanır. Bu değişiklik ve gerçekleştirmeniz gereken eylemler hakkında daha fazla bilgi için VMSS PowerShell/CLI Müşterileri için Kritik Değişiklik - Microsoft Community Hub'a gidin.

İlk olarak, Get-Credential ile VM örnekleri için bir yönetici kullanıcı adı ve parolası ayarlayın:

$cred = Get-Credential

Şimdi New-AzVmss ile bir Sanal Makine Ölçek Kümesi oluşturun. Trafiği tek tek VM örneklerine dağıtmak için bir yük dengeleyici de oluşturulur. Yük dengeleyici, trafiği TCP bağlantı noktası 80'e dağıtmanın yanı sıra TCP bağlantı noktası 3389'da uzak masaüstü trafiğine ve TCP bağlantı noktası 5985'te PowerShell uzaktan iletişimine izin veren kurallar içerir:

$vmssName="myScaleSet"

New-AzVmss `
    -ResourceGroupName $rgName `
    -VMScaleSetName $vmssName `
    -OrchestrationMode "flexible" `
    -Location $location `
    -VirtualNetworkName "myVnet" `
    -SubnetName "mySubnet" `
    -PublicIpAddressName "myPublicIPAddress" `
    -LoadBalancerName "myLoadBalancer" `
    -Credential $cred

Şifrelemeyi etkinleştirme

Ölçek kümesindeki VM örneklerini şifrelemek için öncelikle Get-AzKeyVault ile Key Vault URI'si ve kaynak kimliği hakkında bazı bilgiler alın. Bu değişkenler daha sonra Set-AzVmssDiskEncryptionExtension ile şifreleme işlemini başlatmak için kullanılır:

$diskEncryptionKeyVaultUrl=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).VaultUri
$keyVaultResourceId=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).ResourceId

Set-AzVmssDiskEncryptionExtension -ResourceGroupName $rgName -VMScaleSetName $vmssName `
    -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $keyVaultResourceId -VolumeType "All"

İstendiğinde, ölçek kümesindeki VM örneklerinde disk şifreleme işlemine devam etmek için y yazın.

Anahtarı sarmak için KEK kullanarak şifrelemeyi etkinleştirme

Sanal Makine Ölçek Kümesini şifrelerken ek güvenlik için anahtar şifreleme anahtarı da kullanabilirsiniz.

$diskEncryptionKeyVaultUrl=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).VaultUri
$keyVaultResourceId=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).ResourceId
$keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $vaultName -Name $keyEncryptionKeyName).Key.kid;

Set-AzVmssDiskEncryptionExtension -ResourceGroupName $rgName -VMScaleSetName $vmssName `
    -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $keyVaultResourceId `
    -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $keyVaultResourceId -VolumeType "All"

Uyarı

Disk-şifreleme-keyvault parametresinin değerinin söz dizimi, tam tanımlayıcı dizedir:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]

Anahtar şifreleme anahtarı parametresinin değerinin söz dizimi, KEK'nin tam URI'sidir; örneğin:
https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]

Şifreleme ilerleme durumunu denetleme

Disk şifrelemesinin durumunu denetlemek için Get-AzVmssDiskEncryption komutunu kullanın:

Get-AzVmssDiskEncryption -ResourceGroupName $rgName -VMScaleSetName $vmssName

VM örnekleri şifrelendiğinde EncryptionSummary kodu aşağıdaki örnek çıktıda gösterildiği gibi ProvisioningState/succeeded değerini bildirir:

ResourceGroupName            : myResourceGroup
VmScaleSetName               : myScaleSet
EncryptionSettings           :
  KeyVaultURL                : https://myuniquekeyvault.vault.azure.net/
  KeyEncryptionKeyURL        :
  KeyVaultResourceId         : /subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/myuniquekeyvault
  KekVaultResourceId         :
  KeyEncryptionAlgorithm     :
  VolumeType                 : All
  EncryptionOperation        : EnableEncryption
EncryptionSummary[0]         :
  Code                       : ProvisioningState/succeeded
  Count                      : 2
EncryptionEnabled            : True
EncryptionExtensionInstalled : True

Şifrelemeyi devre dışı bırakma

Şifrelenmiş VM örnekleri disklerini artık kullanmak istemiyorsanız Disable-AzVmssDiskEncryption ile şifrelemeyi aşağıdaki gibi devre dışı bırakabilirsiniz:

Disable-AzVmssDiskEncryption -ResourceGroupName $rgName -VMScaleSetName $vmssName

Sonraki Adımlar