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

Azure PowerShell modülü, PowerShell komut satırından veya betik içinden 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. Windows ve Linux'ta Ctrl+Shift V'yi seçerek veya macOS üzerinde Cmd+Shift++V'yi seçerek kodu veya komutu Cloud Shell oturumuna yapıştırı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 kullanma

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 BKZ. VMSS PowerShell/CLI Müşterileri için Yeni Değişiklik - Microsoft Community Hub

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

$cred = Get-Credential

Şimdi New-AzVmss ile bir Sanal Makine Ölçek Kümesi oluşturun. Her bir sanal makine örneklerine trafiği dağıtmak için bir yük dengeleyici de oluşturulur. Yük dengeleyici hem TCP bağlantı noktası 80 üzerinden trafiği dağıtmak hem de TCP bağlantı noktası 3389 üzerinden uzak masaüstü trafiğine hem de TCP bağlantı noktası 5985 üzerinden PowerShell uzaktan iletişimine olanak tanımak için 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ümesi 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"

Not

Disk-encryption-keyvault parametresinin değerinin söz dizimi tam tanımlayıcı dizesidir:
/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