你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用网络安全组保护 Azure 容器应用中的自定义 VNET

配置虚拟网络所需的网络安全组 (NSG) 与 Kubernetes 所需的设置非常相似。

可以通过具有比默认 NSG 规则更严格的规则的 NSG 锁定网络,以在订阅级别控制容器应用环境的所有入站和出站流量。

在工作负载配置文件环境中,支持用户定义路由 (UDR),并支持使用防火墙保护出站流量。 使用外部工作负载配置文件环境时,Azure 容器应用的入站流量通过受管理资源组中存在的公共 IP(而不是通过子网)进行路由。 这意味着不支持在外部工作负载配置文件环境中通过 NSG 或防火墙锁定入站流量。 有关详细信息,请参阅 Azure 容器应用环境中的网络

在仅消耗环境中,不支持快速路由,自定义用户定义路由(UDR)的支持有限。 有关仅消耗环境中可用的 UDR 支持的级别的详细信息,请参阅 常见问题解答

NSG 允许规则

下表介绍了如何配置一组 NSG 允许规则。 所需的特定规则取决于环境类型

入站

注意

使用工作负载配置文件时,入站 NSG 规则仅适用于通过虚拟网络传递的流量。 如果容器应用设置为接受来自公共 Internet 的流量,则传入的流量通过公共终结点而不是虚拟网络来传递。

协议 Source 源端口 目标 目标端口 说明
TCP 客户端 IP * 容器应用的子网1 80, 31080 使用 HTTP 时,允许客户端 IP 访问 Azure 容器应用。 31080 是容器应用环境边缘代理响应 HTTP 流量的端口。 它位于内部负载均衡器之后。
TCP 客户端 IP * 容器应用的子网1 443, 31443 使用 HTTPS 时,允许客户端 IP 访问 Azure 容器应用。 31443 是容器应用环境边缘代理响应 HTTPS 流量的端口。 它位于内部负载均衡器之后。
TCP AzureLoadBalancer * 容器应用的子网 30000-327672 允许 Azure 负载均衡器探测后端池。

1 创建环境时,此地址会作为参数传递。 例如 10.0.0.0/21
2 创建 Azure 容器应用程序时需要完整范围,因为该范围内的端口是动态分配的。 创建之后,所需的端口是两个不可变的静态值,你可以更新 NSG 规则。

出站

协议 Source 源端口 目标 目标端口 说明
TCP 容器应用的子网 * MicrosoftContainerRegistry 443 这是系统容器Microsoft容器注册表的服务标记。
TCP 容器应用的子网 * AzureFrontDoor.FirstParty 443 这是 MicrosoftContainerRegistry 服务标记的依赖项。
任意 容器应用的子网 * 容器应用的子网 * 允许容器应用子网中的 IP 之间通信。
TCP 容器应用的子网 * AzureActiveDirectory 443 如果使用的是托管标识,则需要此项。
TCP 容器应用的子网 * AzureMonitor 443 仅在使用 Azure Monitor 时需要此项。 允许对 Azure Monitor 的出站调用。
TCP 和 UDP 容器应用的子网 * 168.63.129.16 53 使环境能够使用 Azure DNS 解析主机名。
TCP 容器应用的子网1 * 容器注册表 容器注册表的端口 与容器注册表通信需要此端口。 例如,使用 ACR 时,目标需要 AzureContainerRegistryAzureActiveDirectory,除非使用专用终结点,否则端口将是容器注册表的端口。2
TCP 容器应用的子网 * Storage.<Region> 443 仅当使用 Azure Container Registry 托管映像时才需要。

1 创建环境时,此地址会作为参数传递。 例如 10.0.0.0/21
2 如果你使用 Azure 容器注册表 (ACR) 并在虚拟网络上配置了 NSG,请在 ACR 上创建一个专用终结点,以允许 Azure 容器应用通过虚拟网络拉取映像。 配置了专用终结点时,无需为 ACR 添加 NSG 规则。

注意事项

  • 如果运行的是 HTTP 服务器,则可能需要添加端口 80443
  • 不要在传出 NSG 规则中显式拒绝 Azure DNS 地址 168.63.129.16,否则容器应用环境将无法正常运行。