Azure Key Vault は、キー、パスワード、証明書などのシークレットのセキュリティで保護されたストアを提供するクラウド サービスです。 このクイック スタートでは、Azure Resource Manager テンプレート (ARM テンプレート) をデプロイしてキー コンテナーとキーを作成するプロセスについて説明します。
Azure Resource Manager テンプレートは、プロジェクトのインフラストラクチャと構成を定義する JavaScript Object Notation (JSON) ファイルです。 このテンプレートでは、宣言型の構文が使用されています。 デプロイを作成するための一連のプログラミング コマンドを記述しなくても、意図したデプロイを記述できます。
環境が前提条件を満たしていて、ARM テンプレートの使用に慣れている場合は、 [Azure へのデプロイ] ボタンを選択します。 テンプレートがAzure ポータルで開きます。
[前提条件]
この記事を完了するには:
- Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- ユーザーには 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": "9113739717796369919"
}
},
"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": "2023-07-01",
"name": "[parameters('vaultName')]",
"location": "[parameters('location')]",
"properties": {
"enableRbacAuthorization": true,
"enableSoftDelete": true,
"softDeleteRetentionInDays": 90,
"enablePurgeProtection": true,
"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": "2023-07-01",
"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')), '2023-07-01')]"
},
"location": {
"type": "string",
"value": "[parameters('location')]"
},
"name": {
"type": "string",
"value": "[parameters('vaultName')]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
}
}
}
テンプレートには、次の 2 つのリソースが定義されています。
- Microsoft.KeyVault/vaults: Azure Key Vault を作成します。
- Microsoft.KeyVault/vaults/keys: キー コンテナーのキーを作成します。
テンプレートでは、Azure RBAC 承認が有効になっているキー コンテナーが作成されます。 つまり、このコンテナーでは、データ プレーンの認証にアクセス ポリシーではなく、Azure のロールベースのアクセス制御 (Azure RBAC) を使用しています。
その他の Azure Key Vault テンプレート サンプルについては、 Azure クイック スタート テンプレートを参照してください。
テンプレートパラメーター
| パラメーター | Description |
|---|---|
| vaultName | 新しいキー コンテナーの名前。
vault.azure.net名前空間内でグローバルに一意である必要があります。 |
| Keyname | ボールト内に作成するキーの名前。 |
| 場所 | リソースのAzureリージョン。 既定値はリソース グループの場所です。 |
| skuName | コンテナー SKU。
standard (既定) または premium。 |
| keyType | 作成するキーの種類。
RSA、RSA-HSM、EC、EC-HSMのいずれか。 既定値は RSA です。
JsonWebKeyType を参照してください。 |
| keySize | キーのビット単位のサイズ (RSA のみ)。 既定値は 2048 です。 |
| curveName | 楕円曲線名 (EC キーのみ)。
P-256、P-256K、P-384、P-521のいずれか。
JsonWebKeyCurveName を参照してください。 |
| keyOps | キーに対して許可される JSON Web キー操作 (たとえば、 ["sign","verify","encrypt","decrypt","wrapKey","unwrapKey"])。 空の配列 (既定値) では、すべての操作が許可されます。 |
テンプレートをデプロイする
Azure にサインインし、テンプレートを開くには次のイメージを選択します。 このテンプレートは、Key Vault とキーを作成します。
次の値を選択または入力します。 指定されていない限り、既定値を使用します。
- サブスクリプション: Azure サブスクリプションを選択します。
- リソース グループ: [ 新規作成] を選択し、リソース グループの一意の名前を入力して、[ OK] を選択します。
- リージョン: 場所を選択します。 たとえば [米国中部] です。
-
コンテナー名: キー コンテナーの名前を入力します。これは、
vault.azure.net名前空間内でグローバルに一意である必要があります。 - キー名: キー ヴォールトに格納するキーの名前を入力します。
- SKU 名: Standard または Premium を選択します。 既定値は 標準です。
- キーの種類: キーの種類を選択します。 既定値は RSA です。
- キー サイズ: キー サイズ (RSA キー) を入力します。 既定値は 2048 です。
- 曲線名: EC キーの場合は、曲線を選択します。 RSA キーの場合は空白のままにします。
[ 確認と作成] を選択し、[ 作成] を選択します。 キー コンテナーとキーのデプロイが正常に完了すると、通知が届きます。
Azure PowerShell、Azure CLI、または REST API を使用してテンプレートをデプロイすることもできます。 他のデプロイ方法については、「テンプレートのデプロイ」を参照してください。
Key Vault RBAC ロールを割り当てる
このテンプレートによって作成されたキー コンテナーでは、承認に Azure RBAC が使用されます。 データ プレーンを介してキーにアクセスするには (たとえば、Azure CLIまたはAzure PowerShellを使用して)、適切なロールを自分自身に割り当てる必要があります。
Microsoft Entraユーザー オブジェクト ID を取得します。
az ad signed-in-user show --query id -o tsvキー コンテナーで、ご自身に Key Vault Crypto Officer ロールを割り当ててください。
echo "Enter your key vault name:" && read keyVaultName && az role assignment create --role "Key Vault Crypto 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
ロールの割り当てが反映されるまでに 1 ~ 2 分かかる場合があります。
デプロイされているリソースを確認する
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" ロールベースのアクセス制御 (Azure RBAC) アクションが必要です。 組み込みの "Key Vault 共同作成者" ロールで十分です。これは、パターン "Microsoft.KeyVault/*" に一致するすべての Azure RBAC アクションを承認するためです。
する
既存の API (データ プレーンを使用したキーの作成)
- 新しいキーを作成し、既存のキーを更新し、既存のキーの新しいバージョンを作成することができます。
- 呼び出し元は、この API を使用する権限を持っている必要があります。 キー コンテナーで Azure RBAC が有効になっている場合、呼び出し元は「Microsoft.KeyVault/vaults/keys/create/action」という Azure 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 ..."
Note
リソース グループを削除するとキー コンテナーも削除されますが、キー コンテナーは論理削除状態となり、保持期間 (デフォルトでは 90 日間) 中は復元可能です。 ボールト名はその期間中グローバルで予約されたままとなり、さらに消去保護が有効になっているため、ボールトを早期に完全に削除することはできません。 標準のキー コンテナーの場合、論理削除されたコンテナーには料金は発生しません。 詳細については、「Key Vault ソフト削除の概要」を参照してください。
次のステップ
このクイック スタートでは、ARM テンプレートを使用してキー コンテナーとキーを作成し、デプロイを検証しました。 Key Vault と Azure Resource Manager の詳細については、次の記事を参照してください。