NSG 是不是适用于子网的服务端点

Posted

技术标签:

【中文标题】NSG 是不是适用于子网的服务端点【英文标题】:Do NSGs apply to Servic Endpoints of the SubnetNSG 是否适用于子网的服务端点 【发布时间】:2020-01-13 05:39:38 【问题描述】:

我创建了一个子网,并在其中连接了一个 Cosmos DB 作为服务端点。除了 Cosmos DB 的 IP 防火墙之外,我还想通过 NSG 规则控制出站。但是,如果我创建一个拒绝所有出站的规则(也使用拒绝所有入站进行测试),它似乎必须在通过 Mongo 客户端连接到数据库时生效。

这是预期的行为吗?

【问题讨论】:

【参考方案1】:

是的,这是从启用服务终结点的 VNet 访问 Cosmos DB 时的预期行为。 您的问题有两点:

NSG 可以与子网或网络接口级别相关联。在这种情况下,当 NSG 与子网关联时,规则适用于连接到子网的所有资源。如果子网 NSG 具有拒绝流量的匹配规则,则会丢弃数据包,即使 VM\NIC NSG 具有允许流量的匹配规则也是如此。阅读here1 和here2。

当您在 VNet 中启用 Cosmos DB 作为服务终结点时,它将通过直接连接将您的虚拟网络专用地址空间和 VNet 标识扩展到 Azure 服务。从您的 VNet 到 Azure 服务的流量始终保留在 Microsoft Azure 主干网络上。

今天,来自虚拟网络的 Azure 服务流量使用公共 IP 地址 作为源 IP 地址。使用服务端点,服务流量 切换到使用虚拟网络专用地址作为源 IP 从虚拟网络访问 Azure 服务时的地址。 此开关允许您访问服务,而无需 IP 防火墙中使用的保留公共 IP 地址。

因此,如果您从 VNet 访问 Cosmos DB,它将使用该 VNet 中的专用 IP 地址来访问 Azure Cosmos DB 服务。如果您在 Azure 之外访问 Cosmos DB,您将受到 Cosmos DB 的防火墙 IP 地址的限制。

【讨论】:

啊,我记得。在早期的教程中有这个图表。谢谢指点。

以上是关于NSG 是不是适用于子网的服务端点的主要内容,如果未能解决你的问题,请参考以下文章

在子网级别应用的 Azure NSG 是不是会影响该子网上的 VM 之间的通信?

默认情况下在新子网上应用 NSG/ASG (Azure)

BICEP 模块部署虚拟网络,但不是基于 if 语句的 NSG

将 NSG 添加到应用程序网关子网

VSTS 部署组的 NSG 出站规则

获取 NSG 列表和对应的子网或网卡