从 ARM 模板中的 customData (cloud-init) 部分访问 keyvault 中的秘密
access secret in keyvault from customData (cloud-init) section in ARM template
是否可以从 ARM 模板中参数文件的自定义数据 (cloud-init) 部分中的密钥保管库获取机密?这就是我想要完成的:
我需要将一个 config.json 文件注入虚拟机的特定位置,为简单起见,假设为 /tmp。我正在考虑使用 cloud-init。
config.json 文件如下所示:
#other cloud-init directives here....
"user": {
"username": "admin",
"password": "password",
"role": "system_administrator",
"type": "local"
}
不言而喻,我正在寻找一种方法来不在我将使用 cloud-init 创建的文件中对密码进行硬编码。是否可以从 cloud-init 配置中调用 secret?
如果上述方法不可行,我可以在我的 arm 模板中创建一个变量(从密钥库获取密码),然后在 cloud-init 配置中引用该变量吗?
如果这也不可能,有没有人建议如何在 cloud-init 中创建一个有密码的配置文件?
欢迎任何想法,最终将使用 azure DevOps 部署 arm 模板,所以也许还有其他方法?或者 cloud-init 不是正确的选择?
我不确定你的问题到底是什么,但你可以参考 this 文章来了解如何使用模板中的密钥保管库机密,这非常简单。
一些注意事项:
- 您将不得不使用 concat 将秘密插入到您在问题中提到的一行中
- 我有理由相信您需要以 base64 编码的单行形式提供 cloud-init 文本,没有办法解决这个问题
- 你也可以在cloud-init中做这样的事情,这可以减轻你的痛苦:
#include
http://somesite.com/path/to/cloud-init.txt
我建议将托管标识包装到具有 AccessPolicy READ 到 Keyvault 的 VM。然后只需通过 Powershell 或 API (invoke-restmethod) 提取值作为 CustomData 字段中的内联命令。
是否可以从 ARM 模板中参数文件的自定义数据 (cloud-init) 部分中的密钥保管库获取机密?这就是我想要完成的:
我需要将一个 config.json 文件注入虚拟机的特定位置,为简单起见,假设为 /tmp。我正在考虑使用 cloud-init。
config.json 文件如下所示:
#other cloud-init directives here....
"user": {
"username": "admin",
"password": "password",
"role": "system_administrator",
"type": "local"
}
不言而喻,我正在寻找一种方法来不在我将使用 cloud-init 创建的文件中对密码进行硬编码。是否可以从 cloud-init 配置中调用 secret?
如果上述方法不可行,我可以在我的 arm 模板中创建一个变量(从密钥库获取密码),然后在 cloud-init 配置中引用该变量吗?
如果这也不可能,有没有人建议如何在 cloud-init 中创建一个有密码的配置文件?
欢迎任何想法,最终将使用 azure DevOps 部署 arm 模板,所以也许还有其他方法?或者 cloud-init 不是正确的选择?
我不确定你的问题到底是什么,但你可以参考 this 文章来了解如何使用模板中的密钥保管库机密,这非常简单。
一些注意事项:
- 您将不得不使用 concat 将秘密插入到您在问题中提到的一行中
- 我有理由相信您需要以 base64 编码的单行形式提供 cloud-init 文本,没有办法解决这个问题
- 你也可以在cloud-init中做这样的事情,这可以减轻你的痛苦:
#include
http://somesite.com/path/to/cloud-init.txt
我建议将托管标识包装到具有 AccessPolicy READ 到 Keyvault 的 VM。然后只需通过 Powershell 或 API (invoke-restmethod) 提取值作为 CustomData 字段中的内联命令。