0

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

这是预期的行为吗?

4

1 回答 1

2

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

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

在此处输入图像描述

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

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

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

于 2019-09-12T02:31:00.583 回答