Resource Manager テンプレートを使用して Azure キー コンテナーとコンテナーのアクセス ポリシーを作成する方法

Azure Key Vault は、キー、パスワード、証明書などのシークレット向けに Secure Store を提供するクラウド サービスです。 この記事では、Azure Resource Manager テンプレート (ARM テンプレート) をデプロイしてキー コンテナーを作成するプロセスを説明します。

Azure Resource Manager テンプレートは JavaScript Object Notation (JSON) ファイルであり、プロジェクトのインフラストラクチャと構成が定義されています。 このテンプレートでは、宣言型の構文が使用されています。 デプロイしようとしているものを、デプロイを作成する一連のプログラミング コマンドを記述しなくても記述できます。

前提条件

この記事の手順を完了するには、次のことが条件となります。

Key Vault Resource Manager テンプレートを作成する

次のテンプレートは、キー コンテナーを作成する基本的な方法を示したものです。 一部の値は、テンプレート内で指定されます。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "Standard",
      "allowedValues": [
        "Standard",
        "Premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    }
   },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2019-09-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "enabledForDeployment": "false",
        "enabledForDiskEncryption": "false",
        "enabledForTemplateDeployment": "false",
        "tenantId": "[subscription().tenantId]",
        "accessPolicies": [],
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    }
  ]
}

Key Vault テンプレート設定の詳細については、Key Vault ARM テンプレート リファレンスに関するページを参照してください。

重要

テンプレートが再デプロイされると、キー コンテナー内の既存のアクセス ポリシーがオーバーライドされます。 キー コンテナーへのアクセスが失われないように、accessPolicies プロパティに既存のアクセス ポリシーを設定することをお勧めします。

Key Vault Resource Manager テンプレートにアクセス ポリシーを追加する

キー コンテナー テンプレート全体を再デプロイすることなく、既存のキー コンテナーにアクセス ポリシーをデプロイできます。 次のテンプレートは、アクセス ポリシーを作成する基本的な方法を示したものです。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "objectId": {
      "type": "string",
      "metadata": {
        "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets."
      }
    },
    "keysPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge."
      }
    },
    "secretsPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge."
      }
    },
    "certificatePermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to certificates in the vault. Valid values are: all,  create, delete, update, deleteissuers, get, getissuers, import, list, listissuers, managecontacts, manageissuers,  recover, backup, restore, setissuers, and purge."
      }
    }
  },
  "resources": [
     {
      "type": "Microsoft.KeyVault/vaults/accessPolicies",
      "name": "[concat(parameters('keyVaultName'), '/add')]",
      "apiVersion": "2019-09-01",
      "properties": {
        "accessPolicies": [
          {
            "tenantId": "[subscription().tenantId]",
            "objectId": "[parameters('objectId')]",
            "permissions": {
              "keys": "[parameters('keysPermissions')]",
              "secrets": "[parameters('secretsPermissions')]",
              "certificates": "[parameters('certificatePermissions')]"
            }
          }
        ]
      }
    }
  ]
}

Key Vault テンプレート設定の詳細については、Key Vault ARM テンプレート リファレンスに関するページを参照してください。

その他の Key Vault Resource Manager テンプレート

Key Vault オブジェクトで使用できる Resource Manager テンプレートが他にもあります。

シークレット [キー] 証明書
該当なし 該当なし

その他の Key Vault テンプレートについては、次を参照してください。Key Vault Resource Manager リファレンス

テンプレートの配備

Azure portal を使うと、次に示すように、 [エディターで独自のテンプレートを作成する] オプションを使って上記のテンプレートをデプロイできます。次のページに説明があります:「カスタム テンプレートからリソースをデプロイする」。

また、上記のテンプレートをファイルに保存し、次のコマンドを使用することもできます: New-AzResourceGroupDeployment および az deployment group create:

New-AzResourceGroupDeployment -ResourceGroupName ExampleGroup -TemplateFile key-vault-template.json
az deployment group create --resource-group ExampleGroup --template-file key-vault-template.json

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

後続のクイックスタートおよびチュートリアルで引き続き作業する予定がある場合は、これらのリソースをそのまま残しておくことができます。 リソースが不要になった場合は、リソース グループを削除します。 グループを削除すると、キー コンテナーと関連リソースも削除されます。 Azure CLI または Azure PowerShell を使ってリソース グループを削除するには、次の手順を実行します。

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

リソース

次の手順