在 Microsoft Azure 中,我有一个虚拟机规模集在(比如说)西部欧盟地区的“resourceGroup1”中。我也有一个虚拟机(我们称之为“VM1”)它包含 mySql 的一个实例,也在西欧,但在(比如说)“resourceGroup2”中。
我已经能够通过在 VM1 的网络部分、端口 3306 中打开它们的 IP 地址以供访问,让 resourceGroup1 中的各个 VM 连接到 mysql 服务器。
但我想不出如何允许 VMSS 做类似的事情。虽然 VMSS 中的实例目前确实有自己的公共 IP 地址,但我无意保留它们,当然,随着实例的增加和消失,我也无法保证它们将来会变成什么样子。
我尝试过研究应用程序安全组,但不知道该如何为其分配 VMSS。我查看了专用链接,但似乎既不支持 VM,也不支持 VMSS。一些文档说,将网络防火墙中的 IP 地址设置为 0.0.0.0 通常会将其开放给 Azure,虽然这不是最理想的,但比整个互联网要好(而且似乎不管用)。
我的另一个想法是,我将关闭 VMSS 中每个实例的 IP 地址(无论如何,我计划在测试完成后执行此操作),然后让来自实例的出站流量通过负载均衡器,以便它显示为请求的来源,然后我可以将 LB IP 地址添加到防火墙。但这看起来也很复杂,我失去了活下去的意志,因为网络真的不是我的强项。
什么是最优雅、最注重安全的解决方案,可以允许 VMSS 的任何实例对在单独的资源组但相同的区域中的 Windows VM 上运行的 mysql 服务器发出读写请求?
谢谢!
答案1
资源组不属于此场景的考虑范围。它们用于将相关资源分组在一起,但本身并不限制资源的功能。
但是,您选择的网络拓扑至关重要。当您讨论使用负载平衡器时,您会看到一些这种情况,因为负载平衡器可以为其后面的机器提供 SNAT 以共享公共 IP 地址。然后可以将该 IP 地址放入网络安全组以允许“Internet”访问。带引号的“Internet”是因为它仍在 Microsoft 网络内,但通过您认为是“网络外”的路由进行传输。
这让我对答案有了第一个想法......适当地设计您的网络以适合您想要的安全模型。
具体来说,这听起来像是 VMSS 和 VM 之间不需要网络安全边界的情况。默认模板将 VMSS 部署到新网络中,但这不是必需的。如果您的网络安全模型允许,只需将 VMSS 部署到 VM 的现有虚拟网络中,反之亦然,将 VM 放入 VMSS 虚拟网络中。
删除为 VMSS 创建新的 vnet,并将其替换为对现有 vnet 的引用。 在 Azure 规模集模板中引用现有虚拟网络
您仍然需要适当地设置网络安全组以允许流量,但由于它将位于同一个虚拟网络上的机器之间,因此这很容易(且默认)。
或者,您可以使用虚拟网络对等实现非常相似的结果。对等允许兼容的虚拟网络相互路由流量。兼容通常仅意味着您必须在每个虚拟网络上具有不重叠的 IP 地址范围。如果您需要设置跨越城市/国家/大陆的更广泛网络,对等还允许流量跨订阅或区域流动。对等具有管理优势,因为您可以分离资源/计费/安全性,但是从网络角度来看,如上所述的单个虚拟网络与同一区域内的对等虚拟网络之间的功能差异很小。
虚拟网络对等互连使您可以无缝连接 Azure 中的两个或多个虚拟网络。虚拟网络作为一个整体出现,以达到连接目的。对等互连虚拟网络中的虚拟机之间的流量使用 Microsoft 主干基础结构。与同一网络中的虚拟机之间的流量一样,流量仅通过 Microsoft 的专用网络路由。
如果您的网络安全模型确实需要对 VMSS 和 VM 进行更广泛的分离,那么可以使用 Azure 构建块构建许多解决方案。最简单的方法是 VM 将使用它们所连接的负载均衡器的公共 IP 进行 SNAT。或者,如果不存在负载均衡器,则可以部署 Azure NAT 网关以达到相同目的(如果两者都存在,则优先于负载均衡器)。这使您可以控制 Azure VMSS 出站 Internet 公共 IP,然后可以使用它来保护 VM 上的网络安全组。网络保持分离,并且任何形式的 NAT 都允许您将它们视为彼此之间的信任度较低。
某些场景需要虚拟机或计算实例具有到 Internet 的出站连接。公共负载均衡器的前端 IP 可用于为后端实例提供到 Internet 的出站连接。此配置使用源网络地址转换 (SNAT) 将虚拟机的专用 IP 转换为负载均衡器的公共 IP 地址。SNAT 将后端的 IP 地址映射到负载均衡器的公共 IP 地址。SNAT 可防止外部源直接访问后端实例。
Azure NAT 网关是一种完全托管且高度弹性的网络地址转换 (NAT) 服务。您可以使用 Azure NAT 网关让专用子网中的所有实例在保持完全私密的同时向外连接到 Internet。未经请求的 Internet 入站连接不允许通过 NAT 网关。只有作为响应数据包到达出站连接的数据包才能通过 NAT 网关。