使用 Key Vault 中儲存的密碼部署 Azure Stack Hub VM

此文將逐步解說如何使用存放在 Azure Stack Hub Key Vault 中的密碼部署 Windows Server 虛擬機器 (VM)。 使用金鑰保存庫密碼比傳遞純文字密碼更為安全。

概觀

您可以將密碼之類的值儲存為 Azure Stack Hub 金鑰保存庫中的密碼。 建立密碼之後,您可以在 Azure Resource Manager 範本中加以參考。 透過資源管理員使用密碼有下列優點︰

  • 您不需要在每次部署資源時手動輸入密碼。
  • 您可以指定哪些使用者或服務主體可以存取密碼。

必要條件

下列步驟說明擷取存放在 Key Vault 中的密碼來建立 VM 所需的程序:

  1. 建立 Key Vault 祕密。
  2. 更新 azuredeploy.parameters.json 檔案。
  3. 部署範本。

注意

您可以從 Azure Stack 開發套件 (ASDK),或從外部用戶端 (如果是透過 VPN 連線) 來使用這些步驟。

建立 Key Vault 祕密

下列指令碼會建立金鑰保存庫,並將密碼存放為金鑰保存庫中的祕密。 建立金鑰保存庫時,請使用 -EnabledForDeployment 參數。 此參數可確保您能夠從 Azure Resource Manager 範本參考金鑰保存庫。


$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 (統一資源識別項)。 請記下此 URI。 在使用金鑰保存庫範本中的密碼部署 Windows VM 中,您必須參考該 URI。 將 101-vm-secure-passwor \(英文\) 資料夾下載至您的開發電腦上。 此資料夾中包含 azuredeploy.jsonazuredeploy.parameters.json 檔案,您在接下來的步驟中將需要這些檔案。

根據您的環境值,修改 azuredeploy.parameters.json 檔案。 要注意的參數是保存庫名稱、保存庫資源群組以及祕密 URI (產生自先前的指令碼)。 以下檔案是參數檔案的範例。

更新 azuredeploy.parameters.json 檔案

根據您的環境,以 KeyVault URI、secretName、VM 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>"

成功部署範本之後,會產生下列輸出:

部署輸出

後續步驟