2017-04-21 71 views
0

我正在使用ARM模板部署Azure VM。如何在ARM模板部署中隱藏shell腳本中的密碼

template.json

"adminPassword": { 
     "type": "securestring" 
    } 

parameters.json

"adminPassword": { 
    "value": null 
} 

當我使用的參數 「空」,它會問我,在部署過程中輸入的密碼。

當我部署期間進入ADMINPASSWORD,它顯示爲明文,但我想它隱藏(如******)

我怎樣才能做到這一點?

+0

使用Azure的CLI 1.0 – karan

回答

4

正如4c74356b41所說,目前沒有辦法直接做。您可以使用Azure Key Vault避免密碼顯示爲純文本。

密鑰保管庫可以存儲兩種類型的信息:密鑰(證書)和祕密。在你的場景中,你需要使用祕密。您需要在KeyVault中創建一個祕密。

##get password don't show plaintext  
read -s password 
azure keyvault create --vault-name 'ContosoKeyVault' --resource-group 'ContosoResourceGroup' --location 'East Asia' 

azure keyvault secret set --vault-name 'ContosoKeyVault' --secret-name 'SQLPassword' --value "$password" 

之後,您就需要啓用密鑰庫模板deployment.You可以做到這一點使用下面的命令:

azure keyvault set-policy --vault-name Contoso --enabled-for-template-deployment true 

您需要修改的參數如下圖所示:

"adminPassword": { 
     "reference": { 
     "keyVault": { 
      "id": "/subscriptions/<subscription-guid>/resourceGroups/<group name>/providers/Microsoft.KeyVault/vaults/<vault name>" 
     }, 
     "secretName": "<seccret name>" 
     } 
    }, 

你可以參考這個模板:101-vm-secure-password

+0

作爲替代方案,如果您正在使用VSTS發佈管理您可以安全地存儲密碼和設置變量和使用那些在部署時從「Azure的資源組部署」步驟。我在這裏看到的優點是,您可以重用該變量,而不必使您的KeyVault與其他使用相同變量的地方保持同步。 –

相關問題