次の方法で共有


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

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 アクションを承認するためです。

    ARM を使用してキーを作成する 1 ARM 2 を使用してキーを作成する

既存の 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 の詳細については、次の記事を参照してください。