![是否可以使用 Terraform 和 Azure Key Vault 防火墙,而不必每次想要进行更改时都指定我的 IP 地址?](https://linux22.com/image/773196/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20Terraform%20%E5%92%8C%20Azure%20Key%20Vault%20%E9%98%B2%E7%81%AB%E5%A2%99%EF%BC%8C%E8%80%8C%E4%B8%8D%E5%BF%85%E6%AF%8F%E6%AC%A1%E6%83%B3%E8%A6%81%E8%BF%9B%E8%A1%8C%E6%9B%B4%E6%94%B9%E6%97%B6%E9%83%BD%E6%8C%87%E5%AE%9A%E6%88%91%E7%9A%84%20IP%20%E5%9C%B0%E5%9D%80%EF%BC%9F.png)
我的 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