从ARM模板的customData(cloud-init)部分访问密钥库中的秘密

时间:2020-09-13 15:28:51

标签: azure arm-template cloud-init

是否可以从ARM模板中参数文件的自定义数据(cloud-init)部分内部的密钥库中获取秘密?这是我要完成的工作:

为简单起见,我需要将config.json文件注入到vm的特定位置,例如/ tmp。我正在考虑使用cloud-init。

config.json文件如下:

#other cloud-init directives here....
"user": {
        "username": "admin",
        "password": "password",
        "role": "system_administrator",
        "type": "local"
    }
 

毋庸置疑,我正在寻找一种方法,以便不对将用cloud-init创建的文件中的密码进行硬编码。是否可以从cloud-init配置内部调用机密?

如果无法完成上述操作,是否可以在我的手臂模板中创建一个变量(该变量从密钥库获取密码),然后在cloud-init配置中引用该变量?

如果这也不可能,是否有人建议如何在cloud-init中创建具有密码的配置文件?

欢迎任何想法,最终将使用azure DevOps部署arm模板,那么也许还有另一种方法吗?还是云初始化不是要走的路?

2 个答案:

答案 0 :(得分:1)

我不确定您的问题到底是什么,但是您可以使用this文章来了解如何使用模板中的密钥库机密,这很简单。

笔记夫妇:

  1. 您将不得不使用concat将机密信息插入您在问题中提到的一行
  2. 我合理地确定您需要将cloud-init文本作为以base64编码的单行提供,没有办法解决
  3. 您还可以在cloud-init中执行类似的操作,这可以减轻您的痛苦:
#include
http://somesite.com/path/to/cloud-init.txt

答案 1 :(得分:0)

我建议将托管标识包装到对 Keyvault 具有 AccessPolicy READ 的 VM。然后只需通过 Powershell 或 API(invoke-restmethod)提取值作为 CustomData 字段中的内联命令。