Tutorial: Mengintegrasikan Azure Key Vault pada penyebaran templat ARM Anda

Pelajari cara mengambil rahasia dari key vault Azure dan meneruskan rahasia sebagai parameter saat Anda menerapkan templat Azure Resource Manager (templat ARM). Nilai parameter tidak pernah ditampilkan, karena Anda hanya mereferensikan ID key vault-nya. Anda dapat mereferensikan rahasia key vault dengan menggunakan ID statis atau ID dinamis. Tutorial ini menggunakan ID statis. Dengan pendekatan ID statis, Anda mereferensikan key vault dalam file parameter templat, bukan file templat. Untuk informasi selengkapnya tentang kedua pendekatan, lihat Menggunakan Azure Key Vault untuk meneruskan nilai parameter yang aman selama penyebaran.

Dalam tutorial Mengatur urutan penyebaran sumber daya, Anda membuat komputer virtual (VM). Anda perlu memberikan nama pengguna dan kata sandi administrator VM. Alih-alih memberikan kata sandi, Anda dapat melakukan prapenyimpanan kata sandi dalam key vault Azure lalu menyesuaikan templat untuk mengambil kata sandi dari key vault selama penyebaran.

Diagram yang menampilkan integrasi templat Resource Manager dengan key vault

Tutorial ini mencakup tugas-tugas berikut:

  • Menyiapkan key vault
  • Membuka templat mulai cepat
  • Mengedit file parameter
  • Menerapkan templat
  • Memvalidasi penyebaran
  • Membersihkan sumber daya

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

Untuk modul Microsoft Learn yang menggunakan nilai aman dari brankas kunci, lihat Mengelola penyebaran cloud yang kompleks dengan menggunakan fitur template ARM tingkat lanjut.

Prasyarat

Untuk menyelesaikan artikel ini, Anda perlu:

  • Visual Studio Code dengan ekstensi Alat Resource Manager. Lihat Mulai Cepat: Membuat templat ARM dengan Visual Studio Code.

  • Untuk meningkatkan keamanan, gunakan kata sandi yang dibuat untuk akun administrator VM. Anda dapat menggunakan Azure Cloud Shell untuk menjalankan perintah berikut di PowerShell atau Bash:

    openssl rand -base64 32
    

    Untuk mempelajari lebih lanjut, jalankan man openssl rand untuk membuka halaman manual.

    Verifikasi bahwa kata sandi yang dihasilkan memenuhi persyaratan kata sandi VM. Setiap layanan Azure memiliki persyaratan kata sandi khusus. Untuk persyaratan kata sandi VM, lihat Apa persyaratan kata sandi saat Anda membuat VM?.

Menyiapkan key vault

Di bagian ini, Anda membuat key vault dan menambahkan rahasia ke dalamnya, sehingga Anda dapat mengambil rahasia saat anda menyebarkan templat Anda. Ada banyak cara untuk membuat key vault. Dalam tutorial ini, Anda menggunakan Azure PowerShell untuk menyebarkan template ARM. Templat ini melakukan dua hal:

  • Membuat key vault dengan enabledForTemplateDeployment properti aktif. Properti ini harus true sebelum proses penyebaran templat dapat mengakses rahasia yang ditentukan dalam key vault.
  • Menambahkan rahasia ke key vault. Rahasia menyimpan kata sandi administrator VM.

Catatan

Sebagai pengguna yang menyebarkan templat komputer virtual, jika Anda bukan Pemilik atau Kontributor ke key vault, Pemilik atau Kontributor harus memberi Anda akses ke Microsoft.KeyVault/vaults/deploy/action izin untuk key vault. Untuk informasi selengkapnya, lihat Menggunakan Azure Key Vault untuk meneruskan nilai parameter aman selama penyebaran.

Untuk menjalankan skrip Azure PowerShell berikut, pilih Coba untuk membuka Cloud Shell. Untuk menempelkan skrip, klik panel shell, lalu pilih Tempel.

$projectName = Read-Host -Prompt "Enter a project name that is used for generating resource names"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"
$upn = Read-Host -Prompt "Enter your user principal name (email address) used to sign in to Azure"
$secretValue = Read-Host -Prompt "Enter the virtual machine administrator password" -AsSecureString

$resourceGroupName = "${projectName}rg"
$keyVaultName = $projectName
$adUserId = (Get-AzADUser -UserPrincipalName $upn).Id
$templateUri = "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorials-use-key-vault/CreateKeyVault.json"

New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -keyVaultName $keyVaultName -adUserId $adUserId -secretValue $secretValue

Write-Host "Press [ENTER] to continue ..."

Penting

  • Nama grup sumber daya adalah nama proyek, tetapi dengan menambahkan rg. Untuk mempermudah membersihkan sumber daya yang Anda buat dalam tutorial ini, gunakan nama proyek dan nama grup sumber daya yang sama saat Anda menyebarkan templat berikutnya.
  • Nama default untuk rahasia adalah vmAdminPassword. Ini sudah berbentuk hardcode dalam templat.
  • Guna mengaktifkan templat untuk mengambil rahasia, Anda harus mengaktifkan kebijakan akses yang disebut Aktifkan akses ke Azure Resource Manager untuk penyebaran templat untuk key vault. Kebijakan ini diaktifkan dalam templat. Untuk informasi selengkapnya tentang kebijakan akses, lihat Menyebarkan key vault dan rahasia.

Template memiliki satu nilai output yang disebut keyVaultId. Anda akan menggunakan ID ini bersama nama rahasia untuk mengambil nilai rahasia nanti dalam tutorial. Format ID sumber daya adalah:

/subscriptions/<SubscriptionID>/resourceGroups/mykeyvaultdeploymentrg/providers/Microsoft.KeyVault/vaults/<KeyVaultName>

Saat Anda menyalin dan menempelkan ID, ID mungkin dipecah menjadi beberapa baris. Gabungkan baris dan pangkas spasi ekstra.

Untuk memvalidasi penyebaran, jalankan perintah PowerShell berikut ini di panel shell yang sama untuk mengambil rahasia dalam teks yang jelas. Perintah hanya berfungsi dalam sesi shell yang sama, karena menggunakan variabel $keyVaultName yang didefinisikan dalam skrip PowerShell sebelumnya.

$secret = Get-AzKeyVaultSecret -VaultName $keyVaultName -Name "vmAdminPassword"
$ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secret.SecretValue)
try {
   $secretValueText = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)
} finally {
   [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
}
Write-Output $secretValueText

Saat ini Anda telah menyiapkan key vault dan rahasia. Bagian berikut ini memperlihatkan kepada Anda cara menyesuaikan templat yang sudah ada untuk mengambil rahasia selama penyebaran.

Membuka templat mulai cepat

Templat Mulai Cepat Azure adalah repositori untuk templat ARM. Daripada membuat templat dari awal, Anda dapat menemukan contoh templat dan menyesuaikannya. Templat yang digunakan dalam tutorial ini disebut Penerapan VM Windows simpel.

  1. Di Visual Studio Code, pilih File>Buka File.

  2. Dalam kotak Nama file, tempelkan URL berikut ini:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Pilih Buka untuk membuka file. Skenarionya sama dengan yang digunakan dalam Tutorial: Membuat templat ARM dengan sumber daya dependen. Templat menentukan enam sumber daya:

    Sangat membantu untuk mendapatkan pemahaman mendasar tentang templat sebelum Anda menyesuaikannya.

  4. Pilih File>Simpan Sebagai, lalu simpan salinan file ke komputer lokal Anda dengan nama azuredeploy.json.

  5. Ulangi langkah 1-3 untuk membuka URL berikut, lalu simpan file sebagaiazuredeploy.parameters.jspada.

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.parameters.json
    

Mengedit file parameter

Dengan menggunakan metode ID statis, Anda tidak perlu membuat perubahan apa pun pada file templat. Mengambil nilai rahasia dilakukan dengan mengonfigurasi file parameter templat.

  1. Di Visual Studio Code, buka azuredeploy.parameters.js jika belum dibuka.

  2. Perbarui parameter adminPassword ke:

    "adminPassword": {
      "reference": {
        "keyVault": {
          "id": "/subscriptions/<SubscriptionID>/resourceGroups/mykeyvaultdeploymentrg/providers/Microsoft.KeyVault/vaults/<KeyVaultName>"
        },
        "secretName": "vmAdminPassword"
      }
    },
    

    Penting

    Ganti nilai dengan id ID sumber daya key vault yang Anda buat di prosedur sebelumnya. secretName sudah dalam bentuk hardcode vmAdminPassword. Lihat Menyiapkan key vault.

    Mengintegrasikan key vault dan file parameter penyebaran komputer virtual templat Resource Manager

  3. Perbarui nilai berikut ini:

    • adminUsername: Nama akun administrator komputer virtual.
    • dnsLabelPrefix: Beri nama nilai dnsLabelPrefix.

    Untuk contoh nama, lihat citra sebelumnya.

  4. Simpan perubahan.

Menerapkan templat

  1. Masuk ke Cloud Shell.

  2. Pilih lingkungan pilihan Anda dengan memilih PowerShell atau Bash (untuk CLI) di sudut kiri atas. Menghidupkan ulang shell diperlukan saat Anda beralih.

    File unggahan portal Azure Cloud Shell

  3. Pilih Unggah/unduh file, lalu pilih Unggah. Unggah azuredeploy.json dan azuredeploy.parameters.json ke Cloud Shell. Setelah mengunggah file, Anda dapat menggunakan perintah ls dan perintah cat untuk memverifikasi file berhasil diunggah.

  4. Jalankan skrip PowerShell berikut untuk menerapkan topologi.

    $projectName = Read-Host -Prompt "Enter the same project name that is used for creating the key vault"
    $location = Read-Host -Prompt "Enter the same location that is used for creating the key vault (i.e. centralus)"
    $resourceGroupName = "${projectName}rg"
    
    New-AzResourceGroupDeployment `
        -ResourceGroupName $resourceGroupName `
        -TemplateFile "$HOME/azuredeploy.json" `
        -TemplateParameterFile "$HOME/azuredeploy.parameters.json"
    
    Write-Host "Press [ENTER] to continue ..."
    

    Saat Anda menggunakan templat, gunakan grup sumber daya yang sama dengan yang Anda gunakan di key vault. Pendekatan ini memudahkan Anda untuk membersihkan sumber daya, karena Anda hanya perlu menghapus satu grup sumber daya, bukan dua.

Memvalidasi penyebaran

Setelah Anda berhasil menyebarkan mesin virtual, uji kredensial masuk dengan menggunakan kata sandi yang disimpan di key vault.

  1. Buka portal Microsoft Azure.

  2. Pilih Grup sumber daya><YourResourceGroupName>>simpleWinVM.

  3. Pilih Sambungkan di bagian atas.

  4. Pilih Unduh File RDP, lalu ikuti instruksi untuk masuk ke komputer virtual dengan menggunakan kata sandi yang disimpan di key vault.

Membersihkan sumber daya

Saat Anda tidak lagi memerlukan sumber daya Azure Anda, bersihkan sumber daya yang Anda sebarkan dengan menghapus grup sumber daya.

$projectName = Read-Host -Prompt "Enter the same project name that is used for creating the key vault"
$resourceGroupName = "${projectName}rg"

Remove-AzResourceGroup -Name $resourceGroupName

Write-Host "Press [ENTER] to continue ..."

Langkah berikutnya

Dalam tutorial ini, Anda mengambil rahasia dari key vault Azure Anda. Anda kemudian menggunakan rahasia dalam penyebaran templat Anda. Untuk mempelajari cara menggunakan ekstensi komputer virtual untuk melakukan tugas pascapenyebaran, lihat: