次の方法で共有


Key Vault に格納されたパスワードを使用して Azure Stack Hub VM をデプロイする

この記事では、Azure Stack Hub Key Vault に格納されたパスワードを使用して、Windows Server 仮想マシン (VM) をデプロイする手順を説明します。 Key Vault パスワードを使用する方が、プレーンテキスト パスワードを渡すよりも安全性が高くなります。

概要

Azure Stack Hub Key Vault にはパスワードなどの値をシークレットとして格納できます。 シークレットの作成後、そのシークレットは Azure Resource Manager テンプレートで参照できます。 Resource Manager でシークレットを使用する利点は次のとおりです。

  • リソースをデプロイするたびにシークレットを手動で入力する必要がありません。
  • シークレットにアクセスできるユーザーまたはサービス プリンシパルを指定できます。

前提条件

次の手順では、キー コンテナーに格納されているパスワードを取得することによって VM を作成するために必要なプロセスについて説明します。

  1. Key Vault シークレットを作成します。
  2. azuredeploy.parameters.json ファイルを更新します。
  3. テンプレートをデプロイします。

Note

この手順は、Azure Stack Development Kit (ASDK) から、または VPN 経由で接続している場合は外部クライアントから実行できます。

Key Vault シークレットを作成する

次のスクリプトは、キー コンテナーを作成し、パスワードをシークレットとしてキー コンテナーに格納します。 Key Vault を作成するときは、-EnabledForDeployment パラメーターを使います。 このパラメーターを指定すると、Azure Resource Manager テンプレートから Key Vault を参照できるようになります。


$vaultName = "contosovault"
$resourceGroup = "contosovaultrg"
$location = "local"
$secretName = "MySecret"

New-AzResourceGroup `
  -Name $resourceGroup `
  -Location $location

New-AzKeyVault `
  -VaultName $vaultName `
  -ResourceGroupName $resourceGroup `
  -Location $location
  -EnabledForTemplateDeployment

$secretValue = ConvertTo-SecureString -String '<Password for your virtual machine>' -AsPlainText -Force

Set-AzureKeyVaultSecret `
  -VaultName $vaultName `
  -Name $secretName `
  -SecretValue $secretValue

前のスクリプトを実行すると、出力にはシークレットの URI (Uniform Resource Identifier) が含まれます。 この URI を書き留めておきます。 それを、Key Vault のパスワードでの Windows VM のデプロイ テンプレートで参照する必要があります。 開発用コンピューターに 101-vm-secure-password フォルダーをダウンロードします。 このフォルダーには、次の手順で必要な azuredeploy.json ファイルと azuredeploy.parameters.json ファイルが含まれます。

環境の値に従って azuredeploy.parameters.json ファイルを変更します。 特に重要なパラメーターは、コンテナー名、コンテナー リソース グループ、およびシークレットの URI (前のスクリプトによって生成されたもの) です。 パラメーター ファイルの例を次に示します。

azuredeploy.parameters.json ファイルを更新する

環境に応じて、VM 値の KeyVault URI、secretName、adminUsername を使用して azuredeploy.parameters.json ファイルを更新します。 テンプレート パラメーター ファイルの JSON ファイルの例を次に示します。

{
    "$schema":  "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion":  "1.0.0.0",
    "parameters":  {
       "adminUsername":  {
         "value":  "demouser"
          },
       "adminPassword":  {
         "reference":  {
            "keyVault":  {
              "id":  "/subscriptions/xxxxxx/resourceGroups/RgKvPwd/providers/Microsoft.KeyVault/vaults/KvPwd"
              },
            "secretName":  "MySecret"
         }
       },
       "dnsLabelPrefix":  {
          "value":  "mydns123456"
        },
        "windowsOSVersion":  {
          "value":  "2016-Datacenter"
        }
    }
}

テンプレートのデプロイ

次の PowerShell スクリプトを使用して、テンプレートをデプロイします。

New-AzResourceGroupDeployment `
  -Name KVPwdDeployment `
  -ResourceGroupName $resourceGroup `
  -TemplateFile "<Fully qualified path to the azuredeploy.json file>" `
  -TemplateParameterFile "<Fully qualified path to the azuredeploy.parameters.json file>"

テンプレートが正常にデプロイされると、次の出力が表示されます。

デプロイの出力

次のステップ