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

Azure CLI, komut satırından veya betik içindeki Azure kaynaklarını oluşturmak ve yönetmek için kullanılır. Bu hızlı başlangıçta, Sanal Makine Ölçek Kümesi oluşturmak ve şifrelemek için Azure CLI'yi nasıl kullanacağınız 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.

Önkoşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

  • Bu makale, Azure CLI'nın 2.0.31 veya sonraki bir sürümünü gerektirir. Azure Cloud Shell kullanılıyorsa en son sürüm zaten yüklüdür.

Ölçek kümesi oluşturma

Ölçek kümesi oluşturabilmek için az group create ile bir kaynak grubu oluşturun. Aşağıdaki örnek eastus konumunda myResourceGroup adlı bir kaynak grubu oluşturur:

az group create --name myResourceGroup --location eastus

Şimdi az vmss create ile bir Sanal Makine Ölçek Kümesi oluşturun. Aşağıdaki örnek, değişiklikler uygulandıkça otomatik olarak güncelleştirilecek şekilde ayarlanmış myScaleSet adlı bir ölçek kümesi oluşturur ve ~/.ssh/id_rsa içinde yoksa SSH anahtarları oluşturur. Her VM örneğine 32 Gb veri diski eklenir ve az vmss extension setine sahip veri disklerini hazırlamak için Azure Özel Betik Uzantısı kullanılır:

Önemli

ADE ile desteklenen İşletim Sistemi'nin seçildiğinden emin olun. ADE için desteklenen işletim sistemi.

# Create a scale set with attached data disk
az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode Flexible \
  --image <SKU Linux Image> \
  --admin-username azureuser \
  --generate-ssh-keys \
  --data-disk-sizes-gb 32

# Prepare the data disk for use with the Custom Script Extension
az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings '{"fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/prepare_vm_disks.sh"],"commandToExecute":"./prepare_vm_disks.sh"}'

Tüm ölçek kümesi kaynaklarının ve VM'lerin oluşturulup yapılandırılması birkaç dakika sürer.

Disk şifrelemesi için etkinleştirilmiş bir Azure anahtar kasası 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.

Kendi benzersiz keyvault_name tanımlayın. Ardından, ölçek kümesiyle aynı abonelikte ve bölgede az keyvault create ile bir KeyVault oluşturun ve --enabled-for-disk-encryption erişim ilkesini ayarlayın.

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault create --resource-group myResourceGroup --name $keyvault_name --enabled-for-disk-encryption

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.

Kendi benzersiz keyvault_name tanımlayın. Ardından KeyVault'unuzu az keyvault update ile güncelleştirip --enabled-for-disk-encryption erişim ilkesini ayarlayın.

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault update --name $keyvault_name --enabled-for-disk-encryption

Şifrelemeyi etkinleştirme

Not

Esnek Düzenleme Modu'nda Sanal Makine Ölçek Kümeleri kullanılıyorsa, yalnızca yeni örnekler şifrelenir. Ölçek kümesindeki mevcut örneklerin ayrı ayrı şifrelenip kaldırılması ve değiştirilmesi gerekir.

Ölçek kümesindeki VM örneklerini şifrelemek için öncelikle az keyvault show ile Key Vault kaynak kimliği hakkında bazı bilgiler edinin. Bu değişkenler az vmss encryption enable ile şifreleme işlemini başlatmak için kullanılır:

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --volume-type DATA

Şifreleme işleminin başlatılması bir veya iki dakika sürebilir.

Önceki bir adımda oluşturulan ölçek kümesinde ölçek kümesi yükseltme ilkesi otomatik olarak ayarlandığından, VM örnekleri şifreleme işlemini otomatik olarak başlatır. Yükseltme ilkesinin el ile yapılacağı ölçek kümelerinde az vmss update-instances ile VM örneklerinde şifreleme ilkesini başlatı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.

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --key-encryption-key myKEK \
    --key-encryption-keyvault $vaultResourceId \
    --volume-type DATA

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 az vmss encryption show komutunu kullanın:

az vmss encryption show --resource-group myResourceGroup --name myScaleSet

VM örnekleri şifrelendiğinde, durum kodu aşağıdaki örnek çıktıda gösterildiği gibi EncryptionState/encrypted değerini bildirir:

[
  {
    "disks": [
      {
        "encryptionSettings": null,
        "name": "myScaleSet_myScaleSet_0_disk2_3f39c2019b174218b98b3dfae3424e69",
        "statuses": [
          {
            "additionalProperties": {},
            "code": "EncryptionState/encrypted",
            "displayStatus": "Encryption is enabled on disk",
            "level": "Info",
            "message": null,
            "time": null
          }
        ]
      }
    ],
    "id": "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualMachines/0",
    "resourceGroup": "MYRESOURCEGROUP"
  }
]

Şifrelemeyi devre dışı bırakma

Şifrelenmiş VM örnekleri disklerini artık kullanmak istemiyorsanız az vmss encryption disable ile şifrelemeyi aşağıdaki gibi devre dışı bırakabilirsiniz :

az vmss encryption disable --resource-group myResourceGroup --name myScaleSet

Sonraki adımlar

  • Bu makalede, Sanal Makine Ölçek Kümesini şifrelemek için Azure CLI'yi kullandınız. Azure PowerShell veya Azure Resource Manager şablonlarını da kullanabilirsiniz.
  • Başka bir uzantı sağlandıktan sonra Azure Disk Şifrelemesi uygulanmasını istiyorsanız, uzantı sıralamasını kullanabilirsiniz.
  • Linux ölçek kümesi veri diski şifrelemesi için uçtan uca toplu iş dosyası örneği burada bulunabilir. Bu örnek, Linux ölçek kümesi adlı bir kaynak grubu oluşturur, 5 GB'lık bir veri diski bağlar ve Sanal Makine Ölçek Kümesi'ni şifreler.