クイック スタート: ARM テンプレートを使用してAzureキー コンテナーを作成する

Azure Key Vault は、キー、パスワード、証明書などのシークレットのセキュリティで保護されたストアを提供するクラウド サービスです。 このクイック スタートでは、Azure Resource Manager テンプレート (ARM テンプレート) をデプロイしてキー コンテナーを作成するプロセスについて説明します。

Azure Resource Manager テンプレートは、プロジェクトのインフラストラクチャと構成を定義する JavaScript Object Notation (JSON) ファイルです。 このテンプレートでは、宣言型の構文が使用されています。 デプロイを作成するための一連のプログラミング コマンドを記述しなくても、意図したデプロイを記述できます。

環境が前提条件を満たしていて、ARM テンプレートの使用に慣れている場合は、 [Azure へのデプロイ] ボタンを選択します。 テンプレートがAzure ポータルで開きます。

Resource Manager テンプレートを Azure に配置するボタン。

Prerequisites

この記事を完了するには:

  • Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

テンプレートを確認する

このクイックスタートで使用されるテンプレートは Azure クイックスタート テンプレートからのものです。

{
  "$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": "5424899472990749957"
    }
  },
  "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."
      }
    },
    "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": "2023-07-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enabledForDeployment": "[parameters('enabledForDeployment')]",
        "enabledForDiskEncryption": "[parameters('enabledForDiskEncryption')]",
        "enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
        "enableRbacAuthorization": true,
        "tenantId": "[parameters('tenantId')]",
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "enablePurgeProtection": true,
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/secrets",
      "apiVersion": "2023-07-01",
      "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretName'))]",
      "properties": {
        "value": "[parameters('secretValue')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
      ]
    }
  ],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('keyVaultName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
    }
  }
}

テンプレートには、1 つの Azure リソースが定義されています。

  • Microsoft.KeyVault/vaults: Azure キー コンテナーを作成します。 このテンプレートでは、AZURE RBAC 承認 (enableRbacAuthorization: true)、論理的な削除、および消去保護が有効になります。

その他の Azure Key Vault テンプレート サンプルについては、 Azure クイック スタート テンプレートを参照してください

テンプレートをデプロイする

  1. Azure にサインインし、テンプレートを開くには次のイメージを選択します。 このテンプレートは、キー コンテナーを作成します。

    Resource Manager テンプレートを Azure に配置するボタン。

  2. 次の値を選択または入力します。 指定されていない限り、既定値を使用します。

    • サブスクリプション: Azure サブスクリプションを選択します。
    • リソース グループ: [ 新規作成] を選択し、リソース グループの一意の名前を入力して、[ OK] を選択します
    • リージョン: 場所を選択します。 たとえば [米国中部] です。
    • コンテナー名: キー コンテナーの名前を入力します。これは、 vault.azure.net 名前空間内でグローバルに一意である必要があります。
    • SKU 名: Standard または Premium を選択します。 既定値は 標準です
  3. [ 確認と作成] を選択し、[ 作成] を選択します。 キー コンテナーが正常にデプロイされると、通知が表示されます。

Azure PowerShell、Azure CLI、または REST API を使用してテンプレートをデプロイすることもできます。 他のデプロイ方法については、「テンプレートのデプロイ」を参照してください。

Key Vault RBAC ロールを割り当てる

このテンプレートによって作成されたキー コンテナーでは、承認に Azure RBAC が使用されます。 データ プレーンを使用してキー、シークレット、または証明書を作成または読み取る場合は、自分に適切なロールを割り当てる必要があります。 たとえば、シークレットを管理するには、Key Vault Secrets Officer ロールを自分に割り当てます。

echo "Enter your key vault name:" &&
read keyVaultName &&
az role assignment create --role "Key Vault Secrets 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

その他の組み込みロールについては、Key Vaultデータ プレーン操作のAzure組み込みロールを参照してください。 ロールの割り当てが反映されるまでに 1 ~ 2 分かかる場合があります。

デプロイされているリソースを確認する

Azure ポータルを使用してキー コンテナーを確認するか、次のAzure CLIまたはAzure PowerShell スクリプトを使用できます。

echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault show --name $keyVaultName

リソースをクリーンアップする

その他の Key Vault のクイック スタートとチュートリアルは、このクイック スタートに基づいています。 後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことをお勧めします。 必要がなくなったら、リソース グループを削除します。これによって、キー コンテナーと関連リソースが削除されます。

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName

Note

リソース グループを削除すると、キー コンテナーも削除されますが、その後コンテナーは論理削除状態になり、保有期間中は回復可能なままです(既定では 90 日)。 ボールト名はその期間中グローバルで予約されたままとなり、さらに消去保護が有効になっているため、ボールトを早期に完全に削除することはできません。 標準のキー コンテナーでは、論理削除されたキー コンテナーに対して料金は発生しません。 詳細については、「Key Vault ソフト削除の概要」を参照してください。

その他の Key Vault Resource Manager テンプレート

その他のクイック スタートでは、シークレット、キー、または証明書をキー コンテナーに設定する手順を示します。

Secrets Keys 証明書

その他の Key Vault テンプレートについては、次を参照してください。Key Vault Resource Manager リファレンス

次のステップ