クイックスタート: 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 クイックスタート テンプレートのページから入手できます。
パラメーターと定義
パラメーター | 定義 |
---|---|
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 アクションが承認されるため、このロールで十分です。
既存の 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 の詳細を確認するには、以下の記事を参照してください。
- Azure Key Vault の概要を確認する
- Azure Resource Manager の詳細を確認する
- Key Vault のセキュリティの概要を確認する