1

我想在 Azure 中设置以下基础结构。我有一种可能的解决方案,但它似乎在安全架构上做出了妥协。在 Azure 中是否有比我妥协的解决方法更好的方法来做到这一点?:

  • VM #1:角色:SQL Server 和 IIS。服务器应该有一个唯一的公共 IP 地址。托管网站将通过公共端口 80 访问,并连接到本地 SQL Server。
  • VM #2:角色:IIS。服务器应该有一个唯一的公共 IP 地址。托管网站将通过公共端口 80 访问,并将连接到 VM #1 上的 SQL Server。

到目前为止,这是我的经验:

  • 设置 VM #1 没有问题。
  • 对于 VM #2,我尝试在与 VM #1 相同的云服务中构建它。当我这样做时,它被分配了与 VM #1 相同的公共 IP 地址。因此,在这种情况下,在两台机器上的端口 80 上托管网站都不起作用。
  • 接下来,我尝试在不同的云服务中构建 VM #2。这导致分配了唯一的公共 IP 地址。但是,我无法连接到 VM #1 上的 SQL Server。
    • 我为上述尝试过的事情:VM #1 SQL Server 设置为混合模式,指定的 SQL 帐户已配置(并在本地确认连接),SQL 配置为允许传入的远程 TCP 连接,为 SQL 运行的 TCP 端口上的传入连接打开防火墙规则,但到目前为止还无法从 VM #2 连接到它。

我认为可行的一种架构是在 VM #1 上打开一个公共端口并将其映射到私有 SQL Server 端口。然后 VM #2 可以使用 VM #1 的完全限定公共 DNS 名称进行连接。我相信 Azure 也会允许将连接限制到 VM #2 的公共 IP 地址。

然而,这似乎不太理想,因为现在 SQL 通信正在通过比通常为数据中心设计的更多的公共路由进行路由,并且必须在 VM #1 上打开一个额外的公共端口(即使受 IP 地址限制) ,如果没有必要,我宁愿不暴露该表面积)。此外,假设通过更公共的网络发送 SQL Server 数据意味着可能需要考虑传输安全性。

研究表明,使用私有端口可能无法在不同云服务上的 2 个虚拟机之间建立连接,尽管我目前发现的信息尚无定论。再说一次,在 Azure 中有没有更好的方法来做到这一点?

4

1 回答 1

1

单个云服务是一个安全边界,进入它的唯一方法是通过服务的唯一公共 VIP 上的公共(输入)端点。虚拟网络 (VNET) 可用于托管多个云服务并允许它们之间的私有可见性,而无需通过公共端点。

一个典型的模型是将 IIS 网站放在具有公共 VIP 的 PaaS 云服务中,将后端 SQL Server 放在具有公共 VIP 但没有声明公共端点的 IaaS 云服务中。这两种云服务都将托管在同一个 VNET 中。这允许前端 Web 角色实例通过私有 VNET 访问后端 SQL Server 实例。Windows Azure 培训工具包中有一个动手实验室,它准确地描述了如何实现这一点。

在这种情况下,我建议分离 IIS/SQL Server 组合,以便 SQL Server 框位于没有公共端点的 IaaS 云服务中(尽管它总是有一个公共 VIP)。我还建议使用点到站点或站点到站点 VPN,这将允许您访问虚拟机而不暴露公共 RDP 端点。点对点 VPN 以开发人员为中心,并且非常易于配置。站点到站点 VPN 更多的是 IT 事物,因为它需要配置 VPN 路由器,例如 Cisco、Juniper 或 Windows Server。

于 2013-08-30T07:15:05.207 回答