チュートリアル: Resource Manager Template deployment で Azure Key Vault を統合するTutorial: Integrate Azure Key Vault in Resource Manager Template deployment

Azure Key Vault からシークレットを取得し、Resource Manager デプロイ時にシークレットをパラメーターとして渡す方法を説明します。Learn how to retrieve secrets from Azure Key Vault and pass the secrets as parameters during Resource Manager deployment. 参照するのは Key Vault ID だけであるため、値が公開されることはありません。The value is never exposed because you only reference its key vault ID. 詳しくは、「デプロイ時に Azure Key Vault を使用して、セキュリティで保護されたパラメーター値を渡す」を参照してくださいFor more information, see Use Azure Key Vault to pass secure parameter value during deployment

リソースのデプロイ順序の設定に関するチュートリアルでは、仮想マシン、仮想ネットワーク、およびその他の依存リソースを作成します。In the Set resource deployment order tutorial, you create a virtual machine, a virtual network, and some other dependent resources. このチュートリアルでは、キー コンテナーから仮想マシン管理者パスワードを取得するようテンプレートをカスタマイズします。In this tutorial, you customize the template to retrieve the virtual machine administrator password from a key vault.

Resource Manager テンプレートの Key Vault 統合の図

このチュートリアルに含まれるタスクは次のとおりです。This tutorial covers the following tasks:

  • キー コンテナーを準備するPrepare a key vault
  • クイック スタート テンプレートを開くOpen a QuickStart template
  • パラメーター ファイルを編集するEdit the parameters file
  • テンプレートのデプロイDeploy the template
  • デプロイの検証Validate the deployment
  • リソースのクリーンアップClean up resources

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. インストール手順については、Azure PowerShell のインストール を参照してください。For installation instructions, see Install Azure PowerShell.

前提条件Prerequisites

この記事を完了するには、以下が必要です。To complete this article, you need:

キー コンテナーを準備するPrepare a key vault

このセクションでは、Resource Manager テンプレートを使用して、キー コンテナーとシークレットを作成します。In this section, you use a Resource Manager template to create a key vault and a secret. このテンプレートを使用すると:This template does:

  • enabledForTemplateDeployment プロパティを有効にしてキー コンテナーを作成する。Create a key vault with the enabledForTemplateDeployment property enables. テンプレートのデプロイ プロセスがこのキー コンテナーで定義されているシークレットにアクセスできるようにするには、事前にこのプロパティを true にする必要があります。This property must be true before the template deployment process can access the secrets defined in this key vault.
  • キー コンテナーにシークレットを追加します。Add a secret to the key vault. シークレットは、仮想マシンの管理者パスワードを格納します。The secret stores the virtual machine administrator password.

仮想マシンのテンプレートをデプロイするユーザーがキー コンテナーの所有者または共同作成者でない場合、キー コンテナーの所有者または共同作成者によって Microsoft.KeyVault/vaults/deploy/action アクセス許可へのアクセス権を与えられる必要があります。If you (as the user to deploy the virtual machine template) are not the owner or the contributor of the key vault, the Owner or a Contributor of the key vault must grant you the access to the Microsoft.KeyVault/vaults/deploy/action permission for the key vault. 詳しくは、「デプロイ時に Azure Key Vault を使用して、セキュリティで保護されたパラメーター値を渡す」を参照してくださいFor more information, see Use Azure Key Vault to pass secure parameter value during deployment

Azure AD ユーザーオブジェクト ID は、 テンプレートによるアクセス許可の設定で必要です。Your Azure AD user object ID is needed by the template to configure permissions. 次の手順を使用してオブジェクト ID (GUID) を取得します。The following procedure gets the object ID (GUID).

  1. 次の Azure PowerShell または Azure CLI コマンドを実行します。Run the following Azure PowerShell or Azure CLI command.

    echo "Enter your email address that is associated with your Azure subscription):" &&
    read upn &&
    az ad user show --upn-or-object-id $upn --query "objectId" &&
    
  2. オブジェクト ID を書き留めます。Write down the object ID. これは、このチュートリアルで後ほど必要になります。You need it later in the tutorial.

キー コンテナーを作成するには:To create a key vault:

  1. Azure にサインインし、テンプレートを開くには次のイメージを選択します。Select the following image to sign in to Azure and open a template. このテンプレートを使用すると、キー コンテナーとシークレットが作成されます。The template creates a key vault and a secret.

    deploy to azure

  2. 次の値を選択または入力します。Select or enter the following values. 値を入力した後に購入を選択しないでください。Don't select Purchase after you enter the values.

    Resource Manager テンプレートの Key Vault 統合がポータルをデプロイする

    • サブスクリプション: Azure サブスクリプションを選択します。Subscription: select an Azure subscription.
    • リソース グループ: 一意の名前を割り当てます。Resource group: assign a unique name. 同じリソース グループを使用して次のセッションで仮想マシンをデプロイするので、この名前を書き留めます。Write down this name, you use the same resource group to deploy the virtual machine in the next session. キー コンテナーと仮想マシンの両方を同じリソース グループに配置すると、チュートリアルの最後にリソースをクリーンアップしやすくなります。Placing both the key vault and the virtual machine in the same resource group makes it easier to clean up the resource at the end of the tutorial.
    • 場所: 場所を選択します。Location: select a location. 既定の場所は米国中部です。The default location is Central US.
    • Key Vault 名: 一意の名前を割り当てます。Key Vault Name: assign a unique name.
    • テナントID: テンプレート関数は、自動的にテナントID を取得します。既定値を変更しないでくださいTenant Id: the template function automatically retrieve your tenant id. Don't change the default value
    • Ad ユーザー ID: 最後の手順から取得した、 Azure AD ユーザーオブジェクトIDを入力します。Ad User Id: enter your Azure AD user object ID that you retrieved from the last procedure.
    • シークレット名: 既定の名前は vmAdminPassword です。Secret Name: The default name is vmAdminPassword. ここでシークレットの名前を変更する場合は、仮想マシンを展開するときに、シークレット名を更新する必要があります。If you change the secret name here, you need to update the secret name when you deploy the virtual machine.
    • シークレット値: シークレットを入力します。Secret Value: Enter your secret. シークレットは、仮想マシンへのサインインに使用されるパスワードです。The secret is the password used to sign in to the virtual machine. 最後の手順で作成した生成されるパスワードを使用することをお勧めします。It is recommended to use the generated password you created in the last procedure.
    • 上記の使用条件に同意する: 選択。I agree to the terms and conditions state above: Select.
  3. 上からパラメーターの編集を選択してテンプレートを確認します。Select Edit parameters from the top to take a look of the template.

  4. テンプレートの JSON ファイルの28行目を参照します。Browse to line 28 of the template JSON file. これは、キー コンテナー リソースの定義です。This is the key vault resource definition.

  5. 35行目を参照:Browse to line 35:

    "enabledForTemplateDeployment": true,
    

    enabledForTemplateDeploymentは Key Vault プロパティです。enabledForTemplateDeployment is a Key Vault property. デプロイ時にこのキー コンテナーからシークレットを取得できるようにするには、事前にこのプロパティを true にする必要があります。This property must be true before you can retrieve the secrets from this key vault during deployment.

  6. 89行目を参照。Browse to line 89. これは、Key Vault シークレットの定義です。This is the Key Vault secret definition.

  7. ページの下部にある破棄するを選択します。Select Discard from the bottom of the page. 何も変更を加えませんでした。You didn't make any changes.

  8. 前のスクリーン ショットに示されるすべての値を指定したことを確認し、ページの下部にある購入をクリックします。Verify you have provided all the values as shown in the previous screenshot, and then click Purchase at the bottom of the page.

  9. ページの上部からベルのアイコン(通知)を選択して、通知ウィンドウを開きます。Select the bell icon (notification) from the top of the page to open the Notifications pane. リソースが正常にデプロイされるまで待機します。Wait until the resource is deployed successfully.

  10. 通知ウィンドウで リソース グループに移動 を選択します。Select Go to resource group from the Notifications pane.

  11. キー コンテナー名を選択して開きます。Select the key vault name to open it.

  12. 左側のウィンドウで、[シークレット] を選択します。Select Secrets from the left pane. vmAdminPassword が表示されています。vmAdminPassword shall be listed there.

  13. 左側のウィンドウで アクセスポリシーを選択します。Select Access policies from the left pane. 自分の名前(アクティブディレクトリ)を一覧表示、それ以外の場合 Key Vault にアクセスするアクセス許可がありません。Your name (Active Directory) shall be listed, otherwise you don't have the permission to access the key vault.

  14. [クリックして高度なアクセス ポリシーを表示する] を選択します。Select Click to show advanced access policies. 通知テンプレートの展開のため Azure Resource Manager へのアクセスを有効にするが選択されています。Notice Enable access to Azure Resource Manager for template deployment is selected. この設定は、Key Vault の統合が機能するための別の条件です。This setting is another condition to make the Key Vault integration to work.

    Resource Manager テンプレートの Key Vault 統合アクセスポリシー

  15. 左側のウィンドウでプロパティを選択します。Select Properties from the left pane.

  16. リソース IDのコピーを作成します。Make a copy of Resource ID. 仮想マシンをデプロイする時に、この ID が必要です。You need this ID when you deploy the virtual machine. リソース ID の形式は:The Resource ID format is:

    /subscriptions/<SubscriptionID>/resourceGroups/mykeyvaultdeploymentrg/providers/Microsoft.KeyVault/vaults/<KeyVaultName>
    

クイック スタート テンプレートを開くOpen a Quickstart template

Azure クイック スタート テンプレートは、Resource Manager テンプレートのリポジトリです。Azure QuickStart Templates is a repository for Resource Manager templates. テンプレートを最初から作成しなくても、サンプル テンプレートを探してカスタマイズすることができます。Instead of creating a template from scratch, you can find a sample template and customize it. このチュートリアルで使用するテンプレートは、「Deploy a simple Windows VM」(単純な Windows VM をデプロイする) と呼ばれます。The template used in this tutorial is called Deploy a simple Windows VM.

  1. Visual Studio Code から、[ファイル]>[ファイルを開く] を選択します。From Visual Studio Code, select File>Open File.

  2. [ファイル名] に以下の URL を貼り付けます。In File name, paste the following URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-windows/azuredeploy.json
    
  3. [開く] を選択して、ファイルを開きます。Select Open to open the file. これは、チュートリアル: Azure Resource Manager テンプレートを依存リソースで作成するで使用されたものと同じシナリオです。It is the same scenario used in Tutorial: create Azure Resource Manager templates with dependent resources.

  4. テンプレートによって定義されたリソースは、5 つあります。There are five resources defined by the template:

  5. [ファイル]>[Save As](名前を付けて保存) を選択し、このファイルのコピーを azuredeploy.json という名前でローカル コンピューターに保存します。Select File>Save As to save a copy of the file to your local computer with the name azuredeploy.json.

  6. 次の URL を開くには手順1~4を繰り返して、ファイルをazuredeploy.parameters.jsonとして保存します。Repeat steps 1-4 to open the following URL, and then save the file as azuredeploy.parameters.json.

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-windows/azuredeploy.parameters.json
    

パラメーター ファイルを編集するEdit the parameters file

テンプレートファイルに変更を加える必要はありません。You don't need to make any changes to the template file.

  1. azuredeploy.parameters.jsonが開いていない場合、Visual Studio Code で開きます。Open azuredeploy.parameters.json in Visual Studio Code if it is not opened.

  2. adminPassword パラメーターを次のように更新します。Update the adminPassword parameter to:

    "adminPassword": {
        "reference": {
            "keyVault": {
            "id": "/subscriptions/<SubscriptionID>/resourceGroups/mykeyvaultdeploymentrg/providers/Microsoft.KeyVault/vaults/<KeyVaultName>"
            },
            "secretName": "vmAdminPassword"
        }
    },
    

    id を、最後の手順で作成したキー コンテナーのリソース ID に置き換えます。Replace the id with the resource ID of your key vault created in the last procedure.

    Key Vault と Resource Manager テンプレートの仮想マシンのデプロイ パラメーター ファイルを統合する

  3. 次のように値を指定します。Give the values to:

    • adminUsername: 仮想マシンの管理者アカウントに名前を付けます。adminUsername: name the virtual machine administrator account.
    • dnsLabelPrefix: dnsLabelPrefix に名前を付けます。dnsLabelPrefix: name the dnsLabelPrefix.
  4. 変更を保存します。Save the changes.

テンプレートのデプロイDeploy the template

テンプレートをデプロイするの指示に従って、テンプレートをデプロイします。Follow the instructions in Deploy the template to deploy the template. テンプレートをデプロイするにはazuredeploy.jsonazuredeploy.parameters.jsonの両方をクラウドシェルにアップロードし、次の PowerShell スクリプトを使用する必要があります:You need to upload both azuredeploy.json and azuredeploy.parameters.json to the Cloud shell, and then use the following PowerShell script to deploy the template:

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"

New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile "$HOME/azuredeploy.json" `
    -TemplateParameterFile "$HOME/azuredeploy.parameters.json"

テンプレートをデプロイするときに、キー コンテナーと同じリソース グループを使用します。When you deploy the template, use the same resource group as the key vault. そうすると、リソースをクリーンアップしやすくなります。It makes easier when you clean up the resources. 削除する必要があるのは2 つではなく 1 つのリソース グループのみです。You only need to delete one resource group instead of two.

デプロイを有効化するValid the deployment

仮想マシンを正常にデプロイした後は、キー コンテナーに格納されているパスワードを使用してログインをテストします。After you have successfully deployed the virtual machine, test the login using the password stored in the key vault.

  1. Azure Portalを開きます。Open the Azure portal.
  2. リソース grouips/YourResourceGroupName >/simpleWinVMを選択しますSelect Resource grouips/YourResourceGroupName>/simpleWinVM
  3. 上部から接続を選択します。Select connect from the top.
  4. [RDP ファイルのダウンロード] を選択します。その後、指示に従って、キー コンテナーに格納されているパスワードを使用して仮想マシンにサインインします。Select Download RDP File and then follow the instructions to sign in into the virtual machine using the password stored in the key vault.

リソースのクリーンアップClean up resources

Azure リソースが不要になったら、リソース グループを削除して、デプロイしたリソースをクリーンアップします。When the Azure resources are no longer needed, clean up the resources you deployed by deleting the resource group.

  1. Azure portal で、左側のメニューから [リソース グループ] を選択します。From the Azure portal, select Resource group from the left menu.
  2. [名前でフィルター] フィールドに、リソース グループ名を入力します。Enter the resource group name in the Filter by name field.
  3. リソース グループ名を選択します。Select the resource group name. リソース グループ内の合計 6 つのリソースが表示されます。You shall see a total of six resources in the resource group.
  4. トップ メニューから [リソース グループの削除] を選択します。Select Delete resource group from the top menu.

次の手順Next steps

このチュートリアルでは、Azure Key Vault からシークレットを取得し、そのシークレットをテンプレートのデプロイで使用しました。In this tutorial, you retrieved a secret from Azure Key Vault, and used the secret in your template deployment. リンク済みテンプレートを作成する方法についての説明は、次を参照してください:To learn how to create linked templates, see: