Azure sanal makinelerde özel veriler

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Windows VM'leri ✔️ Esnek ölçek kümeleri

Microsoft Azure sanal makinesine (VM) sağlama sırasında bir betik veya diğer meta verileri yerleştirmeniz gerekebilir. Azure özel veri adı verilen bir özellik aracılığıyla bu senaryoya destek vermektedir.

İlk başlatma veya kurulum sırasında, temin olarak adlandırılan süreçte özel veriler VM'nin kullanımına sunulur. Sağlama, VM oluşturma parametrelerinin (örneğin, konak adı, kullanıcı adı, parola, sertifikalar, özel veriler ve anahtarlar) VM'nin kullanımına sunulduğu işlemdir. Cloud-init gibi bir sağlama aracısı bu parametreleri işler.

Uyarı

Azure ayrıca ayrı bir kullanıcı verileri özelliği de sunar. Özel verilerden farklı olarak, kullanıcı verileri Azure Örnek Meta Veri Hizmeti'nden (IMDS) alınabilir, VM'nin ömrü boyunca kalıcıdır ve VM durdurulmadan veya yeniden canlanmadan güncelleştirilebilir. Sağlama sonrası erişime veya güncelleştirmelere ihtiyacınız olduğunda kullanıcı verilerini kullanın; ilk önyüklemede sağlama aracısı tarafından işlenen bir yüke ihtiyacınız olduğunda özel verileri kullanın.

Vm'ye özel veri geçirme

Özel verileri kullanmak için, verileri API'ye iletmeden önce içeriği Base64 olarak kodlamanız gerekir; ancak Azure CLI gibi bu dönüştürmeyi sizin için gerçekleştiren bir CLI aracı kullanıyorsanız buna gerek yoktur. Boyut 64 KB'ı aşamaz.

CLI'da, aşağıdaki örnekte gösterildiği gibi özel verilerinizi dosya olarak geçirebilirsiniz. Dosya Base64'e dönüştürülür.

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image Ubuntu2204 \
  --custom-data cloud-init.txt \
  --generate-ssh-keys

Azure Resource Manager'da bir base64 işlevi vardır:

"name": "[parameters('virtualMachineName')]",
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2019-07-01",
"location": "[parameters('location')]",
"dependsOn": [
..],
"variables": {
        "customDataBase64": "[base64(parameters('stringData'))]"
    },
"properties": {
..
    "osProfile": {
        "computerName": "[parameters('virtualMachineName')]",
        "adminUsername": "[parameters('adminUsername')]",
        "adminPassword": "[parameters('adminPassword')]",
        "customData": "[variables('customDataBase64')]"
        },

Özel verileri işleme

VM'lere yüklenen sağlama aracıları platformla iletişimi ve dosya sistemine veri yerleştirmeyi işler.

Windows

Özel veriler , \AzureData\CustomData.bin%SystemDrive% ikili dosya olarak yerleştirilir, ancak işlenmez. Bu dosyayı işlemek için özel bir görüntü oluşturun ve CustomData.bin okuyan bir kod yazın.

\AzureData klasörünün%SystemDrive% sağlama sırasında güvenli hale getirildiğinden, yalnızca NT AUTHORITY\SYSTEM ve BUILTIN\Administrators tam denetime sahip olur ve CustomData.bin bu izinleri devralır. CustomData.bin dosyasını işlemek için başka bir yere kopyalarsanız, dosyanın izinleri dosyayla birlikte aktarılmadığından hedefteki izinleri açıkça ayarlayın.

Linux

Linux işletim sistemlerinde, özel veriler ovf-env.xml dosyası aracılığıyla VM'ye geçirilir. Bu dosya sağlama sırasında /var/lib/waagent dizinine kopyalanır. Linux Aracısı'nın daha yeni sürümleri, kolaylık sağlamak için Base64 ile kodlanmış verileri /var/lib/waagent/CustomData dosyasına kopyalar.

Azure şu anda iki sağlama aracısını destekler:

  • Linux Aracısı. Aracı varsayılan olarak özel verileri işlemez. Verilerin etkin olduğu özel bir görüntü oluşturmanız gerekir. İlgili ayarlar şunlardır:

    • Provisioning.DecodeCustomData
    • Provisioning.ExecuteCustomData

    Özel verileri etkinleştirip bir betik çalıştırdığınızda, betiğin yürütülmesi tamamlanana kadar sanal makine başarılı bir VM sağlama raporu vermez. Betik toplam VM sağlama süresi sınırı olan 40 dakikayı aşarsa, VM oluşturma başarısız olur.

    Betik çalışmazsa veya çalıştırma sırasında hatalar oluşursa, bu ölümcül bir sağlama hatası değildir. Betiğin tamamlanma durumu hakkında sizi uyarmak için bir bildirim yolu oluşturmanız gerekir.

    Özel veri yürütme sorunlarını gidermek için /var/log/waagent.log gözden geçirin.

  • cloud-init. Varsayılan olarak, bu aracı özel verileri işler. cloud-init yapılandırması ve betikler gibi özel verilerin birden çok formatını kabul eder.

    Linux Aracısı'na benzer şekilde, cloud-init özel verileri işlerken yapılandırma işleminin veya betiklerin yürütülmesi sırasında hatalar oluşursa bu önemli bir sağlama hatası değildir. Betiğin tamamlanma durumu hakkında sizi uyarmak için bir bildirim yolu oluşturmanız gerekir.

    Ancak, Linux Aracısı'ndan farklı olarak cloud-init, vm'nin hazır olduğunu platforma raporlamadan önce kullanıcıdan gelen özel veri yapılandırmalarının tamamlanmasını beklemez. Azure'da cloud-init hakkında, sorun giderme de dahil olmak üzere, daha fazla bilgi için bkz. Azure'daki sanal makineler için cloud-init desteği.

SSS

VM oluşturulduktan sonra özel verileri güncelleştirebilir miyim?

Tek VM'ler için VM modelindeki özel verileri güncelleştiremezsiniz. Ancak Sanal Makine Ölçek Kümeleri için özel verileri güncelleştirebilirsiniz. Daha fazla bilgi için bkz . Ölçek Kümesini Değiştirme. Sanal Makine Ölçek Kümesi için modeldeki özel verileri güncelleştirdiğinizde:

  • Ölçek kümesindeki mevcut örnekler, en son modele güncellenene ve yeniden imajlanana kadar güncelleştirilmiş özel verileri almaz.
  • Yeni örnekler yeni özel verileri alır.

Hassas değerleri özel verilere yerleştirebilir miyim?

Hassas verileri özel verilerde depolamamamızı öneririz. Daha fazla bilgi için bkz . Azure veri güvenliği ve şifreleme en iyi yöntemleri.

Özel veriler IMDS'de kullanılabilir hale getirildi mi?

Hayır. Özel veriler Azure Örnek Meta Veri Hizmeti (IMDS) aracılığıyla ortaya çıkarılamaz. Sağlamadan sonra VM'nin içinden bir yük almanız veya vm'yi durdurmadan veya yeniden boyutlandırmadan güncelleştirmeniz gerekiyorsa, bunun yerine kullanıcı verileri özelliğini kullanın. IMDS'den kullanıcı verilerini okuma hakkında ayrıntılı bilgi için bkz. Kullanıcı verilerini alma.