2017-04-21 70 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与其他使用相同变量的地方保持同步。 –

相关问题