在ARM模板部署中如何隐藏shell脚本中的密码

时间:2017-04-21 05:06:23

标签: shell azure passwords arm-template

我使用ARM模板部署Azure VM。

template.json

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

parameters.json

"adminPassword": {
    "value": null
}

当我在参数中使用“null”时,它会要求我在部署期间输入密码。

当我在部署期间输入adminPassword时,它显示为纯文本,但我希望它隐藏(例如******)

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:4)

正如4c74356b41所说,目前,没有办法直接做到这一点。

您可以使用Azure Key Vault来避免密码显示为纯文本。

密钥保管库可以存储两种类型的信息:密钥(证书)和密钥。在您的方案中,您需要使用Secrets。您需要在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"

在此之后,您需要启用密钥保管库以进行模板部署。您可以使用以下命令执行此操作:

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