Azure Key Vault は、キー、パスワード、証明書などのシークレットのセキュリティで保護されたストアを提供するクラウド サービスです。 このクイック スタートでは、Azure Resource Manager テンプレート (ARM テンプレート) をデプロイしてキー コンテナーとキーを作成するプロセスについて説明します。
[前提条件]
この記事を完了するには:
- Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
 - ユーザーには Azure の組み込みロールが割り当てられている必要があり、推奨されるロールは寄稿者です。 詳しくはこちらをご覧ください
 
テンプレートを確認する
{
  "$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 クイック スタート テンプレートを参照してください。
パラメーターと定義
| パラメーター | Definition | 
|---|---|
| keyOps | キーを使用して実行できる操作を指定します。 このパラメーターを指定しない場合は、すべての操作を実行できます。 このパラメーターに使用できる値は、 JSON Web Key (JWK) 仕様で定義されているキー操作のコンマ区切りの一覧です。 ["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"] | 
| CurveName | EC キー タイプに使用される楕円曲線 (EC) の名前。 JsonWebKeyCurveName を参照してください | 
| Kty | 作成するキーの種類。 有効な値については、JsonWebKeyType を参照してください。 | 
| タグ | キーと値のペアの形式による、アプリケーション固有のメタデータ。 | 
| nbf | キーを使用できない時刻を DateTime オブジェクトとして指定します。 形式は Unix タイム スタンプ (1970 年 1 月 1 日 (UTC) の Unix エポック後の秒数) です。 | 
| exp | DateTime オブジェクトとして有効期限を指定します。 形式は Unix タイム スタンプ (1970 年 1 月 1 日 (UTC) の 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 の使用を承認するには、呼び出し元に "Microsoft.KeyVault/vaults/keys/write" ロールベースのアクセス制御 (RBAC) アクションが必要です。 組み込みの "Key Vault 共同作成者" ロールで十分です。これは、パターン "Microsoft.KeyVault/*" に一致するすべての RBAC アクションを承認するためです。
              
              
              
              
する
既存の API (データ プレーンを使用したキーの作成)
- 新しいキーを作成し、既存のキーを更新し、既存のキーの新しいバージョンを作成することができます。
 - 呼び出し元は、この API を使用する権限を持っている必要があります。 保管庫でアクセス ポリシーが使用されている場合、呼び出し元には「作成」キーのアクセス許可が必要です。保管庫が 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 の詳細については、次の記事を参照してください。