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

标签 shell azure passwords azure-rm-template

我正在使用 ARM 模板来部署 Azure VM。

模板.json

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

参数.json

"adminPassword": {
    "value": null
}

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

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

我怎样才能实现这个目标?

最佳答案

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

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

Key Vault 可以存储两种类型的信息: key (证书)和 secret 。在您的场景中,您需要使用 Secrets。您需要在 KeyVault 中创建一个 secret 。

##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"

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

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 .

关于shell - 如何在 ARM 模板部署期间在 shell 脚本中隐藏密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43534352/

相关文章:

linux - 如何在特定云服务中创建 azure VM?

c# - 如何从 requestTelemetry 获取 session ID?

php - 使用 crypt() 加密

batch-file - 如何在批处理文件中加密密码?

java - cloud foundry 将路由从一个应用程序复制到另一个应用程序

bash - 在 Bash 函数中更改全局位置参数

python - 需要创建一个从 CSV 创建目录结构的脚本

sql - 从 linux shell 读取带有 SQL 查询的 CSV 文件

azure - 如何使用在临时和生产中运行的 Azure 诊断来执行自动缩放?

javascript - 启用/禁用许多具有不同 ID 的单选按钮