我的 Azure 环境中有多个虚拟机,每个虚拟机都有一个关联的加密密钥。加密密钥存储在 Azure Key Vault 中。所有这些都是我的 Terraform 脚本中的资源。在 Azure Key Vault 中,我打开了防火墙,并且我的 Azure AD 用户处于访问策略中。我使用的是 Vault Policy/Firewall 与 RBAC,这样我就可以向密钥保管库添加私有端点,以建立到上述虚拟机的私有链接。
问题是:当我对 Azure 环境中的任何更改(无论是针对虚拟机还是其他完全不同的内容)运行“terraform apply”时,我的 IP 地址必须在 network_acl 中。没有它,Terraform 就“看不到”我的密钥保管库,并会破坏我的虚拟机。我不想每次想要进行更改时都必须从 ACL 中添加然后删除我的 IP 地址。我应该注意,我的 Terraform 结构非常扁平/简单。在计划/应用时会检查/更新所有内容的状态。
还有其他方法可以绕过此 IP 要求并保留我的私有端点吗?
答案1
如果您启用了 Key Vault 防火墙,则任何需要与其通信的机器都需要被允许进入该防火墙,如果不是这样,那将是一个非常糟糕的防火墙。有几种方法可以解决这个问题:
- 将你的机器 IP 永久添加到防火墙中,可能作为 Terraform 部署的一部分
- 从另一台机器(如构建代理)运行 Terraform Pipelines,并允许此 IP。转向使用 CI/CD 工具来处理 Terraform 也会在其他方面带来好处
- 如上所述,使用构建代理,但不要将其外部 IP 添加到 KV 防火墙,而是使用专用端点允许通过专用网络进行访问。这要求计算机位于 Azure 中,或通过 VPN/ExpressRoute 连接到 Azure