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 でシークレットを使用する利点は次のとおりです。
- リソースをデプロイするたびにシークレットを手動で入力する必要がありません。
- シークレットにアクセスできるユーザーまたはサービス プリンシパルを指定できます。
前提条件
- ユーザーは、Key Vault サービスを含むプランをサブスクライブする必要があります。
- PowerShell for Azure Stack Hub をインストールする。
- PowerShell 環境の構成。
次の手順では、キー コンテナーに格納されているパスワードを取得することによって VM を作成するために必要なプロセスについて説明します。
- Key Vault シークレットを作成します。
-
azuredeploy.parameters.json
ファイルを更新します。 - テンプレートをデプロイします。
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>"
テンプレートが正常にデプロイされると、次の出力が表示されます。