Mulai Cepat: Atur dan ambil rahasia dari Azure Key Vault menggunakan templat ARM

Azure Key Vault adalah layanan awan yang menyediakan penyimpanan rahasia yang aman, seperti kunci, kata sandi, sertifikat, dan rahasia lainnya. Mulai cepat ini berfokus pada proses penyebaran templat Azure Resource Manager (templat ARM) untuk membuat brankas kunci dan rahasia.

Templat Azure Resource Manager adalah file JavaScript Object Notation (JSON) yang menentukan infrastruktur dan konfigurasi untuk proyek Anda. Template tersebut menggunakan sintaksis deklaratif. Anda menjelaskan penyebaran yang Dimaksudkan tanpa menulis urutan perintah pemrograman untuk membuat penyebaran.

Jika lingkungan Anda telah memenuhi prasyarat dan Anda terbiasa menggunakan templat ARM, pilih tombol Sebarkan ke Azure. Templat akan terbuka di portal Microsoft Azure.

Button to deploy the Resource Manager template to Azure.

Prasyarat

Untuk menyelesaikan artikel ini:

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

  • ID objek pengguna Microsoft Entra Anda diperlukan oleh templat untuk mengonfigurasi izin. Prosedur berikut ini mendapatkan ID objek (GUID).

    1. Jalankan perintah Azure PowerShell atau Azure CLI berikut ini dengan memilih Coba, lalu tempelkan skrip ke panel shell. Untuk menempelkan skrip, klik kanan shell, lalu pilih Tempel.

      echo "Enter your email address that is used to sign in to Azure:" &&
      read upn &&
      az ad user show --id $upn --query "Id" &&
      echo "Press [ENTER] to continue ..."
      
    2. Catat ID objek. Anda perlu itu di bagian berikutnya dari mulai cepat ini.

Meninjau templat

Templat yang digunakan di mulai cepat ini berasal dari Templat Mulai Cepat Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.16.2.56959",
      "templateHash": "3049149085309005966"
    }
  },
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the Azure location where the key vault should be created."
      }
    },
    "enabledForDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault."
      }
    },
    "enabledForDiskEncryption": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys."
      }
    },
    "enabledForTemplateDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault."
      }
    },
    "tenantId": {
      "type": "string",
      "defaultValue": "[subscription().tenantId]",
      "metadata": {
        "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet."
      }
    },
    "objectId": {
      "type": "string",
      "metadata": {
        "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets."
      }
    },
    "keysPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge."
      }
    },
    "secretsPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    },
    "secretName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the secret that you want to create."
      }
    },
    "secretValue": {
      "type": "securestring",
      "metadata": {
        "description": "Specifies the value of the secret that you want to create."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2021-11-01-preview",
      "name": "[parameters('keyVaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enabledForDeployment": "[parameters('enabledForDeployment')]",
        "enabledForDiskEncryption": "[parameters('enabledForDiskEncryption')]",
        "enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
        "tenantId": "[parameters('tenantId')]",
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "accessPolicies": [
          {
            "objectId": "[parameters('objectId')]",
            "tenantId": "[parameters('tenantId')]",
            "permissions": {
              "keys": "[parameters('keysPermissions')]",
              "secrets": "[parameters('secretsPermissions')]"
            }
          }
        ],
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/secrets",
      "apiVersion": "2021-11-01-preview",
      "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretName'))]",
      "properties": {
        "value": "[parameters('secretValue')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
      ]
    }
  ]
}

Dua sumber daya Azure yang ditentukan dalam templat:

Sampel templat Azure Key Vault lainnya dapat dilihat di Templat Mulai Cepat Azure.

Menyebarkan templat

  1. Pilih gambar berikut untuk masuk ke Azure dan buka templat. Template membuat key vault dan rahasia.

    Button to deploy the Resource Manager template to Azure.

  2. Pilih atau masukkan nilai berikut.

    ARM template, Key Vault integration, deploy portal

    Kecuali ditentukan, gunakan nilai default untuk membuat brankas kunci dan rahasia.

    • Langganan: pilih langganan Azure.
    • Grup sumber daya: pilih Buat baru, masukkan nama unik untuk grup sumber daya, lalu klik OK.
    • Lokasi: pilih lokasi. Misalnya, US Tengah.
    • Nama Key Vault: masukkan nama untuk brankas kunci, yang harus unik secara global dalam ruang nama .vault.azure.net. Anda perlu nama di bagian berikutnya saat validasi penyebaran.
    • ID Penyewa: fungsi templat secara otomatis mengambil ID penyewa Anda. Jangan mengubah nilai default.
    • Id Pengguna Iklan: masukkan ID objek pengguna Microsoft Entra yang Anda ambil dari Prasyarat.
    • Nama Rahasia: masukkan nama untuk rahasia yang Anda simpan di brankas kunci. Misalnya, adminpassword.
    • Nilai Rahasia: masukkan nilai rahasia. Jika Anda menyimpan kata sandi, disarankan untuk menggunakan kata sandi yang dihasilkan di Prasyarat.
    • Saya menyetujui syarat dan ketentuan yang dinyatakan di atas: Pilih.
  3. Pilih Beli. Setelah key vault berhasil disebarkan, Anda mendapatkan pemberitahuan:

    ARM template, Key Vault integration, deploy portal notification

Portal Microsoft Azure digunakan untuk menyebarkan template. Selain portal Microsoft Azure, Anda juga dapat menggunakan Azure PowerShell, Azure CLI, dan REST API. Untuk mempelajari metode penyebaran lainnya, lihat Menyebarkan templat.

Meninjau sumber daya yang disebarkan

Anda dapat menggunakan portal Microsoft Azure untuk memeriksa brankas kunci dan rahasia, atau menggunakan skrip Azure CLI atau Azure PowerShell berikut untuk mencantumkan kunci yang dibuat.

echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault secret list --vault-name $keyVaultName &&
echo "Press [ENTER] to continue ..."

Output terlihat mirip dengan:

Membersihkan sumber daya

Mulai cepat dan tutorial Key Vault lainnya dibuat berdasarkan mulai cepat ini. Jika berencana untuk melanjutkan bekerja dengan mulai cepat dan tutorial berikutnya, Anda mungkin ingin membiarkan sumber daya ini tetap di tempatnya. Jika sudah tidak diperlukan, hapus grup sumber daya, yang menghapus Key Vault dan sumber daya terkait. Untuk menghapus grup sumber daya menggunakan Azure CLI atau Azure PowerShell:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Langkah berikutnya

Dalam mulai cepat ini, Anda membuat brankas kunci dan rahasia menggunakan templat ARM, dan memvalidasi penyebaran. Untuk mempelajari selengkapnya tentang Key Vault dan Azure Resource Manager, lihat artikel di bawah ini.