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

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

Prasyarat

Untuk menyelesaikan artikel ini:

  • Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
  • Pengguna harus memiliki peran bawaan Azure yang ditetapkan, peran yang disarankan kontributor. Pelajari selengkapnya di sini

Meninjau templat

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "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": "2021-11-01-preview",
      "name": "[parameters('vaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "accessPolicies": [],
        "enableRbacAuthorization": true,
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": "90",
        "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": "2021-11-01-preview",
      "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')))]"
    }
  }
}

Dua sumber daya ditentukan dalam templat:

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

Parameter dan definisi

Parameter Definisi
keyOps Menentukan operasi yang bisa dilakukan dengan menggunakan kunci tersebut. Jika Anda tidak menentukan parameter ini, semua operasi dapat dijalankan. Nilai yang dapat diterima untuk parameter ini adalah daftar operasi kunci yang dipisahkan dengan koma sebagaimana didefinisikan oleh spesifikasi JSON Web Key (JWK):
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
CurveName Nama kurva elips (EC) untuk jenis kunci EC. Lihat JsonWebKeyCurveName
Kty Jenis kunci yang akan dibuat. Untuk nilai yang valid, lihat JsonWebKeyType
Tag Metadata khusus aplikasi dalam bentuk pasangan kunci-nilai.
nbf Menentukan waktu, sebagai objek DateTime, sebelum kunci tersebut tidak dapat digunakan. Formatnya adalah berupa tanda waktu Unix (jumlah detik setelah Unix Epoch pada 1 Januari 1970 di UTC).
exp Menentukan waktu kedaluwarsa, sebagai objek TanggalWaktu. Formatnya adalah berupa tanda waktu Unix (jumlah detik setelah Unix Epoch pada 1 Januari 1970 di UTC).

Menyebarkan templat

Anda dapat menggunakan portal Microsoft Azure, Azure PowerShell, Azure CLI, atau REST API. Untuk mempelajari tentang metode penyebaran, lihat Menyebarkan templat.

Meninjau sumber daya yang disebarkan

Anda dapat menggunakan portal Azure untuk memeriksa key vault dan kuncinya. Atau, gunakan skrip Azure CLI atau Azure PowerShell berikut ini 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 dengan membuat kunci melalui data plane

Membuat kunci melalui ARM

  • Anda hanya dapat membuat kunci baru. Anda tidak dapat memperbarui kunci yang sudah ada, maupun membuat versi baru kunci yang sudah ada. Jika sudah ada, kunci yang sudah ada akan diambil dari penyimpanan dan digunakan (operasi penulisan tidak akan terjadi).

  • Agar diizinkan untuk menggunakan API ini, pemanggil tersebut harus memiliki Tindakan kontrol akses berbasis peran (RBAC) "Microsoft.KeyVault/vaults/keys/write". Peran "Kontributor Key Vault" bawaan sudah cukup, karena mengizinkan semua Tindakan RBAC yang sesuai dengan pola "Microsoft.KeyVault/*".

    Membuat kunci melalui ARM 1Membuat kunci melalui ARM 2

API yang sudah ada (membuat kunci melalui data plane)

  • Anda dapat membuat kunci baru, memperbarui kunci yang sudah ada, dan membuat versi baru dari kunci yang sudah ada.
  • Pemanggil harus memiliki wewenang untuk menggunakan API ini. Jika vault menggunakan kebijakan akses, pemanggil harus memiliki izin kunci "buat"; jika vault diaktifkan untuk RBAC, pemanggil harus memiliki DataAction RBAC "Microsoft.KeyVault/vaults/keys/create/action".

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, tindakan tersebut juga akan 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 kunci dan brankas kunci menggunakan templat ARM, dan memvalidasi penyebaran. Untuk mempelajari selengkapnya tentang Key Vault dan Azure Resource Manager, lihat artikel ini.