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

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

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

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

在“仅限消耗”环境中,不支持自定义用户定义路由 (UDR) 和 ExpressRoute。

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 这是系统容器的 Azure 容器注册表的服务标记。
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,否则容器应用环境将无法正常运行。