我创建了一个子网,将 Cosmos DB 连接为服务端点。除了 Cosmos DB 的 IP 防火墙外,我还想通过 NSG 规则控制出站。但是,如果我创建一个规则,该规则拒绝所有出站(也使用拒绝所有入站进行测试),当通过 Mongo 客户端连接到数据库时,它似乎必须生效。
这是预期的行为吗?
我创建了一个子网,将 Cosmos DB 连接为服务端点。除了 Cosmos DB 的 IP 防火墙外,我还想通过 NSG 规则控制出站。但是,如果我创建一个规则,该规则拒绝所有出站(也使用拒绝所有入站进行测试),当通过 Mongo 客户端连接到数据库时,它似乎必须生效。
这是预期的行为吗?
是的,这是从启用服务终结点的 VNet 访问 Cosmos DB 时的预期行为。你的问题有两点:
今天,来自虚拟网络的 Azure 服务流量使用公共 IP 地址作为源 IP 地址。使用服务终结点时,服务流量会在从虚拟网络访问 Azure 服务时切换为使用虚拟网络专用地址作为源 IP 地址。此开关允许您访问服务,而无需在 IP 防火墙中使用保留的公共 IP 地址。
因此,如果您从 VNet 访问 Cosmos DB,它将使用该 VNet 中的专用 IP 地址来访问 Azure Cosmos DB 服务。如果您在 Azure 之外访问 Cosmos DB,您将受到 Cosmos DB 的防火墙 IP 地址的限制。