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

Azure Key Vault は、キー、パスワード、証明書などのシークレットのために安全なストアを提供するクラウド サービスです。 このクイックスタートでは、Azure Resource Manager テンプレート (ARM テンプレート) をデプロイしてキー コンテナーとキーを作成する過程を中心に取り上げます。

前提条件

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

テンプレートを確認する

{
  "$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')))]"
    }
  }
}

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

その他の Azure Key Vault テンプレートのサンプルは、Azure クイックスタート テンプレートのページから入手できます。

パラメーターと定義

パラメーター 定義
keyOps 実行できる操作をキーを使用して指定します。 このパラメーターを指定しない場合は、すべての操作を実行できます。 このパラメーターの値には、JSON Web Key (JWK) 仕様で定義されたキー操作のリストをコンマ区切りで指定できます。
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
CurveName EC キー タイプに使用される楕円曲線 (EC) の名前。 「JsonWebKeyCurveName」を参照してください
Kty 作成するキーの種類。 有効な値については、「JsonWebKeyType」を参照してください。
タグ キーと値のペアの形式による、アプリケーション固有のメタデータ。
nbf キーが使用できるようになる日時を DateTime オブジェクトとして指定します。 形式は Unix タイム スタンプになります (UTC の 1970 年 1 月 1 日の Unix エポックを起点とする秒数)。
exp 有効期限を DateTime オブジェクトとして指定します。 形式は Unix タイム スタンプになります (UTC の 1970 年 1 月 1 日の Unix エポックを起点とする秒数)。

テンプレートのデプロイ

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

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

Azure Portal を使用して、キー コンテナーとキーを確認できます。 または、次の Azure CLI を使用するか、Azure PowerShell スクリプトを使用して、作成されたキーを一覧表示します。

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

ARM テンプレートを使用したキーの作成はデータ プレーンによるキーの作成とは異なる

ARM によってキーを作成する

  • これが可能なのは新しいキーを作成する場合だけです。 既存のキーを更新することも、既存のキーの新しいバージョンを作成することもできません。 キーが既に存在する場合は、既存のキーがストレージから取得されて使用されます (書き込み操作は発生しません)。

  • この API の使用を承認するには、呼び出し元に、ロールベースのアクセス制御 (RBAC) アクション "Microsoft.KeyVault/vaults/keys/write" が必要です。 組み込みの "キー コンテナー共同作成者" ロールでは、"Microsoft.KeyVault/*" というパターンに一致するすべての RBAC アクションが承認されるため、このロールで十分です。

    ARM 1 経由でキーを作成するARM 2 経由でキーを作成する

既存の API (データ プレーンによってキーを作成する)

  • 新しいキーの作成、既存のキーの更新、既存のキーの新しいバージョンの作成が可能です。
  • 呼び出し元は、この API を使用するために承認される必要があります。 コンテナーでアクセス ポリシーを使用している場合、呼び出し元には "create" キーのアクセス許可が必要です。コンテナーが RBAC に対して有効になっている場合、呼び出し元には "Microsoft.KeyVault/vaults/keys/create/action" RBAC DataAction が必要です。

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

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

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

次のステップ

このクイックスタートでは、ARM テンプレートを使用してキー コンテナーとキーを作成し、デプロイを検証しました。 Key Vault と Azure Resource Manager の詳細を確認するには、以下の記事を参照してください。