我想在 Azure 中设置以下基础架构。我有一种可能的解决方案,但似乎它在安全架构方面做出了妥协。在 Azure 中是否有比我妥协的解决方法更好的方法?:
- VM #1:角色:SQL Server 和 IIS。服务器应该有一个唯一的公共(public)IP地址。托管网站将通过公共(public)端口 80 访问,并连接到本地 SQL Server。
- 虚拟机#2:角色:IIS。服务器应该有一个唯一的公共(public)IP地址。托管网站将通过公共(public)端口 80 访问,并将连接到 VM #1 上的 SQL Server。
到目前为止,这是我的经验:
- 设置虚拟机 #1 没有问题。
- 对于 VM #2,我尝试在与 VM #1 相同的云服务中构建它。当我这样做时,它被分配了与 VM #1 相同的公共(public) IP 地址。因此,在这种情况下,在两台计算机上的端口 80 上托管网站不起作用。
- 接下来,我尝试在不同的云服务中构建 VM #2。这导致分配唯一的公共(public) IP 地址。但是,我无法连接到 VM #1 上的 SQL Server。
- 我为上述内容尝试过的操作:将 VM #1 SQL Server 设置为混合模式,配置命名的 SQL 帐户(并在本地确认连接),将 SQL 配置为允许传入远程 TCP 连接,为 TCP 端口上的传入连接打开防火墙规则SQL 在下面运行,但到目前为止还无法从 VM #2 连接到它。
我认为可行的一种架构是在 VM #1 上打开公共(public)端口并将其映射到专用 SQL Server 端口。然后,VM #2 可以使用 VM #1 的完全限定公共(public) DNS 名称进行连接。我相信 Azure 还允许将连接限制为 VM #2 的公共(public) IP 地址。
但是,这似乎不太理想,因为现在 SQL 通信正在通过比通常为数据中心设计的更为公共(public)的路由进行路由,并且必须在 VM #1 上打开一个额外的公共(public)端口(即使受到限制)通过 IP 地址,如果没有必要,我宁愿不要暴露该表面区域)。此外,假设通过更公共(public)的网络发送 SQL Server 数据意味着可能需要考虑传输安全性。
研究表明,使用私有(private)端口可能无法在不同云服务上的 2 个虚拟机之间建立连接,尽管我到目前为止发现的信息还不是结论性的。那么,在 Azure 中是否有更好的方法来做到这一点?
最佳答案
单个云服务是一个安全边界,进入它的唯一方法是通过该服务的唯一公共(public) VIP 上的公共(public)(输入)端点。虚拟网络 (VNET) 可用于托管多个云服务,并允许它们之间的私有(private)可见性,而无需通过公共(public)端点。
典型的模型是将 IIS 网站放置在具有公共(public) VIP 的 PaaS 云服务中,并将后端 SQL Server 放置在具有公共(public) VIP 但没有声明公共(public)端点的 IaaS 云服务中。这两种云服务都将托管在同一个 VNET 中。这允许前端 Web 角色实例通过私有(private) VNET 访问后端 SQL Server 实例。 Windows Azure Training Kit 有一个动手实验室。它准确地描述了如何实现这一点。
在这种情况下,我建议将 IIS/SQL Server 组合分开,以便 SQL Server 位于没有公共(public)端点的 IaaS 云服务中(尽管它始终具有公共(public) VIP)。我还建议使用点到站点或站点到站点 VPN,这样您就可以在不暴露公共(public) RDP 端点的情况下访问虚拟机。点到站点 VPN 以开发人员为中心,并且非常易于配置。站点到站点 VPN 更像是一种 IT 事物,因为它需要配置 VPN 路由器,例如 Cisco、Juniper 或 Windows Server。
关于azure - 如何在 Azure 中设置两个非负载平衡的 VM Web 服务器,并能够在专用端口上进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18525698/