在VM配置期间自动挂载Azure文件存储的好方法是什么?
有一个微软文档描述如何在一般情况下挂载文件共享。这要求安装Azure CLI并登录用户。
作为另一种选择,我使用terraform在本地主机上创建了一个工作设置:
首先,需要定义现有的存储帐户:
data "azurerm_storage_account" "storage-account" {
name = "storageaccount"
resource_group_name = "RG-storage-account"
}当提供VM时,该共享由远程执行提供程序挂载:
resource "azurerm_virtual_machine" "vm" {
# ...
# stuff
provisioner "remote-exec" {
inline = [
"sudo mkdir -p /mnt/${data.azurerm_storage_account.storage-accoun.name}/share",
"sudo mount -t cifs //${data.azurerm_storage_account.storage-account.name}.file.core.windows.net/share /mnt/${data.azurerm_storage_account.storage-account.name}/share -o vers=3.0,dir_mode=0755,file_mode=0755,serverino,username=${data.azurerm_storage_account.storage-account.name},password=${data.azurerm_storage_account.storage-account.primary_access_key}",
]
}
}类似地,也可以通过使用云init将挂载注入到/etc/fstab。
然而,在应用之后,密钥(作为primary_access_key访问)仍然处于terraform状态。这算安全吗?有办法从州中删除密钥吗?此外,当使用云init时,键将保留在VM的自定义数据中。
是否有另一种安全的方法可以在VM上挂载数据而不存储密钥?
发布于 2020-03-24 12:07:14
最近,我读了一本关于Terraform的好书,我认为它回答了你的问题(Terraform &运行第二版)。ISBN-13: 978-1492046905ISBN-10: 1492046906)。
它基本上说,Terraform状态文件中的所有数据都以纯文本形式存储,包括敏感数据。作者说,目前(2019年5月)对此没有真正的解决方案,但采用加密和IAM等方法来控制基于策略的用户访问(本书讨论AWS,因此您必须找到Azure等效项,并防止未经授权访问状态文件)。
你可以在第三章,第78和79页找到更多的细节。关于这一点,吉顿也有一个悬而未决的问题:https://github.com/hashicorp/terraform/issues/516。
https://devops.stackexchange.com/questions/10741
复制相似问题