Mulai cepat: Membuat brankas kunci Azure dan kunci dengan menggunakan templat ARM

Azure Key Vault adalah layanan cloud yang menyediakan penyimpanan aman untuk rahasia, seperti kunci, kata sandi, dan sertifikat. Panduan Cepat ini berfokus pada proses penerapan templat Azure Resource Manager (templat ARM) untuk membuat brankas kunci dan kunci.

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

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

Tombol untuk menyebarkan templat Resource Manager ke Azure.

Prasyarat

Untuk menyelesaikan artikel ini:

  • Jika Anda tidak memiliki langganan Azure, buatlah akun gratis sebelum Anda memulai.
  • Pengguna perlu memiliki peran bawaan Azure yang ditetapkan, dengan peran yang direkomendasikan adalah kontributor. Pelajari selengkapnya di sini

Meninjau templat

Template yang digunakan dalam quickstart ini berasal dari Azure Quickstart Templates.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.42.1.51946",
      "templateHash": "9113739717796369919"
    }
  },
  "parameters": {
    "vaultName": {
      "type": "string",
      "metadata": {
        "description": "The name of the key vault to be created."
      }
    },
    "keyName": {
      "type": "string",
      "metadata": {
        "description": "The name of the key to be created."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The location of the resources."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "The SKU of the vault to be created."
      }
    },
    "keyType": {
      "type": "string",
      "defaultValue": "RSA",
      "allowedValues": [
        "EC",
        "EC-HSM",
        "RSA",
        "RSA-HSM"
      ],
      "metadata": {
        "description": "The JsonWebKeyType of the key to be created."
      }
    },
    "keyOps": {
      "type": "array",
      "defaultValue": [],
      "metadata": {
        "description": "The permitted JSON web key operations of the key to be created."
      }
    },
    "keySize": {
      "type": "int",
      "defaultValue": 2048,
      "metadata": {
        "description": "The size in bits of the key to be created."
      }
    },
    "curveName": {
      "type": "string",
      "defaultValue": "",
      "allowedValues": [
        "",
        "P-256",
        "P-256K",
        "P-384",
        "P-521"
      ],
      "metadata": {
        "description": "The JsonWebKeyCurveName of the key to be created."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2023-07-01",
      "name": "[parameters('vaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enableRbacAuthorization": true,
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "enablePurgeProtection": true,
        "enabledForDeployment": false,
        "enabledForDiskEncryption": false,
        "enabledForTemplateDeployment": false,
        "tenantId": "[subscription().tenantId]",
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/keys",
      "apiVersion": "2023-07-01",
      "name": "[format('{0}/{1}', parameters('vaultName'), parameters('keyName'))]",
      "properties": {
        "kty": "[parameters('keyType')]",
        "keyOps": "[parameters('keyOps')]",
        "keySize": "[parameters('keySize')]",
        "curveName": "[parameters('curveName')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
      ]
    }
  ],
  "outputs": {
    "proxyKey": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')), '2023-07-01')]"
    },
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('vaultName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
    }
  }
}

Dua sumber daya didefinisikan dalam templat:

Templat ini membuat Key Vault dengan otorisasi Azure RBAC yang diaktifkan. Ini berarti brankas menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk otorisasi bidang data, alih-alih kebijakan akses.

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

Parameter templat

Pengaturan Description
vaultName Nama brankas kunci baru. Harus unik secara global dalam ruang nama vault.azure.net.
keyName Nama kunci yang akan dibuat di vault.
Lokasi Wilayah Azure untuk sumber daya. Diatur ke lokasi grup sumber daya.
skuName SKU Vault standard (default) atau premium.
keyType Jenis kunci yang akan dibuat. Salah satu dari RSA, RSA-HSM, EC, EC-HSM. Defaultnya adalah RSA. Lihat JsonWebKeyType.
keySize Ukuran kunci dalam bit (khusus RSA). Defaultnya adalah 2048.
curveName Nama kurva elips (hanya kunci EC). Salah satu dari P-256, P-256K, P-384, P-521. Lihat JsonWebKeyCurveName.
keyOps Operasi JSON Web Key yang diizinkan untuk kunci (misalnya, ["sign","verify","encrypt","decrypt","wrapKey","unwrapKey"]). Array kosong (default) memungkinkan semua operasi.

Menyebarkan templat

  1. Pilih gambar berikut untuk masuk ke Azure dan buka templat. Template tersebut membuat Key Vault dan sebuah kunci.

    Tombol untuk menyebarkan templat Resource Manager ke Azure.

  2. Pilih atau masukkan nilai berikut. Kecuali ditentukan, gunakan nilai default.

    • Langganan: pilih langganan Azure.
    • Grup sumber daya: pilih Buat baru, masukkan nama unik untuk grup sumber daya, lalu pilih OK.
    • Wilayah: pilih lokasi. Misalnya, US Tengah.
    • Nama Vault: masukkan nama untuk Key Vault, yang harus unik secara global dalam ruang nama vault.azure.net.
    • Nama Kunci: masukkan nama untuk kunci yang Anda simpan di brankas kunci.
    • Nama Sku: pilih standar atau premium. Defaultnya adalah standar.
    • Jenis Kunci: pilih jenis kunci. Defaultnya adalah RSA.
    • Ukuran Kunci: masukkan ukuran kunci (kunci RSA). Defaultnya adalah 2048.
    • Nama Kurva: untuk kunci EC, pilih kurva. Biarkan kosong untuk kunci RSA.
  3. Pilih Tinjau + buat, lalu pilih Buat. Setelah Key Vault dan kunci berhasil diterapkan, Anda akan menerima pemberitahuan.

Anda juga dapat menggunakan Azure PowerShell, Azure CLI, atau REST API untuk menyebarkan templat. Untuk mempelajari metode penyebaran lainnya, lihat Menyebarkan templat.

Menetapkan peran RBAC Key Vault

Brankas kunci yang dibuat oleh templat ini menggunakan Azure RBAC untuk otorisasi. Untuk mengakses kunci melalui bidang data (misalnya, menggunakan Azure CLI atau Azure PowerShell), Anda perlu menetapkan peran yang sesuai untuk diri Anda sendiri.

  1. Dapatkan ID objek pengguna Microsoft Entra Anda:

    az ad signed-in-user show --query id -o tsv
    
  2. Tetapkan peran Key Vault Crypto Officer untuk diri Anda sendiri di key vault:

    echo "Enter your key vault name:" &&
    read keyVaultName &&
    az role assignment create --role "Key Vault Crypto Officer" \
        --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \
        --scope $(az keyvault show --name $keyVaultName --query id -o tsv)
    

    Note

    Penetapan peran mungkin memerlukan waktu satu atau dua menit untuk disebarluaskan.

Meninjau sumber daya yang disebarkan

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

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

Membuat kunci menggunakan templat ARM berbeda dari membuat kunci melalui bidang data

Membuat kunci melalui ARM

  • Anda hanya dapat membuat kunci baru . Tidak dimungkinkan untuk memperbarui kunci yang ada, atau membuat versi baru dari kunci yang ada. Jika kunci sudah ada, maka kunci yang ada diambil dari penyimpanan dan digunakan (tidak ada operasi tulis yang akan terjadi).

  • Untuk diotorisasi menggunakan API ini, pemanggil perlu memiliki Tindakan Kontrol Akses Berbasis Peran (Azure RBAC) pada "Microsoft.KeyVault/vaults/keys/write". Peran "Kontributor Key Vault" bawaan sudah cukup, karena mengotorisasi semua Tindakan RBAC Azure yang cocok dengan pola "Microsoft.KeyVault/*".

    Membuat kunci melalui ARM 1 Membuat kunci melalui ARM 2

API yang ada (membuat kunci melalui lintasan data)

  • Anda dapat membuat kunci baru, memperbarui kunci yang ada, dan membuat versi baru kunci yang ada.
  • Pemanggil harus berwenang untuk menggunakan API ini. Jika vault diaktifkan untuk RBAC Azure, pemanggil harus memiliki "Microsoft. KeyVault/vaults/keys/create/action" Azure RBAC DataAction.

Membersihkan sumber daya

Panduan awal dan tutorial Key Vault lainnya mengembangkan materi dari panduan awal ini. Jika Anda berencana untuk terus menggunakan panduan memulai cepat dan tutorial selanjutnya, Anda mungkin ingin membiarkan sumber daya ini tetap ada. Jika tidak lagi 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 ..."

Note

Menghapus grup sumber daya juga akan menghapus Key Vault, tetapi vault tersebut kemudian masuk ke status hapus sementara dan tetap dapat dipulihkan selama periode retensi (90 hari secara bawaan). Nama brankas tetap dicadangkan secara global selama periode tersebut, dan karena proteksi penghapusan permanen diaktifkan, brankas tidak dapat dihapus secara permanen lebih awal. Untuk Key Vault standar, Key Vault yang dihapus sementara tidak dikenakan biaya. Untuk informasi selengkapnya, lihat gambaran umum penghapusan sementara Key Vault.

Langkah selanjutnya

Dalam quickstart ini, Anda membuat key vault dan kunci menggunakan templat ARM, serta memvalidasi penerapan. Untuk mempelajari selengkapnya tentang Key Vault dan Azure Resource Manager, lihat artikel ini.