使用网络安全组保护 Azure 容器应用中的自定义 VNET
配置虚拟网络所需的网络安全组 (NSG) 与 Kubernetes 所需的设置非常相似。
可以通过具有比默认 NSG 规则更严格的规则的 NSG 锁定网络,以在订阅级别控制容器应用环境的所有入站和出站流量。
在工作负载配置文件环境中,支持用户定义路由 (UDR),并支持使用防火墙保护出站流量。 使用外部工作负载配置文件环境时,Azure 容器应用的入站流量通过受管理资源组中存在的公共 IP(而不是通过子网)进行路由。 这意味着不支持在外部工作负载配置文件环境中通过 NSG 或防火墙锁定入站流量。 有关详细信息,请参阅 Azure 容器应用环境中的网络。
在“仅限消耗”环境中,不支持自定义用户定义路由 (UDR) 和 ExpressRoute。
下表介绍了如何配置一组 NSG 允许规则。 所需的特定规则取决于环境类型。
协议 | Source | 源端口 | 目标 | 目标端口 | 说明 |
---|---|---|---|---|---|
TCP | 客户端 IP | * | 容器应用的子网1 | 80 ,443 |
允许客户端 IP 访问 Azure 容器应用。 对 HTTP 使用端口 80 ,对 HTTPS 使用端口 443 。 |
TCP | 客户端 IP | * | 容器应用环境的 staticIP |
80 ,443 |
允许客户端 IP 访问 Azure 容器应用。 对 HTTP 使用端口 80 ,对 HTTPS 使用端口 443 。 |
TCP | AzureLoadBalancer | * | 容器应用的子网 | 30000-32767 2 |
允许 Azure 负载均衡器探测后端池。 |
TCP | 容器应用的子网 | * | 容器应用的子网 | * | 允许容器应用 envoy 挎斗连接到 envoy 服务所必需。 |
1 创建环境时,此地址会作为参数传递。 例如 10.0.0.0/21
。
2 创建 Azure 容器应用程序时需要完整范围,因为该范围内的端口是动态分配的。 创建之后,所需的端口是两个不可变的静态值,你可以更新 NSG 规则。
备注
使用仅消耗环境时,容器应用也需要 Azure Kubernetes 服务所需的所有出站端口。
协议 | Source | 源端口 | 目标 | 目标端口 | 说明 |
---|---|---|---|---|---|
TCP | 容器应用的子网 | * | MicrosoftContainerRegistry |
443 |
这是系统容器的 Azure 容器注册表的服务标记。 |
TCP | 容器应用的子网 | * | AzureFrontDoor.FirstParty |
443 |
这是 MicrosoftContainerRegistry 服务标记的依赖项。 |
UDP | 容器应用的子网 | * | AzureCloud.<REGION> |
1194 |
基础节点和控制平面之间的内部 AKS 安全连接是必需的。 将 <REGION> 替换为部署容器应用的区域。 |
TCP | 容器应用的子网 | * | AzureCloud.<REGION> |
9000 |
基础节点和控制平面之间的内部 AKS 安全连接是必需的。 将 <REGION> 替换为部署容器应用的区域。 |
TCP | 容器应用的子网 | * | AzureCloud |
443 |
允许端口 443 上的所有出站提供了一种方法,来允许所有基于 FQDN 的没有静态 IP 的出站依赖项。 |
UDP | 容器应用的子网 | * | * | 123 |
NTP 服务器。 |
任意 | 容器应用的子网 | * | 容器应用的子网 | * | 允许容器应用子网中的 IP 之间通信。 |
TCP 和 UDP | 容器应用的子网 | * | 168.63.129.16 |
53 |
使环境能够使用 Azure DNS 解析主机名。 |
TCP | 容器应用的子网1 | * | 容器注册表 | 容器注册表的端口 | 与容器注册表通信需要此端口。 例如,使用 ACR 时,目标需要 AzureContainerRegistry 和 AzureActiveDirectory ,除非使用专用终结点,否则端口将是容器注册表的端口。2 |
TCP | 容器应用的子网 | * | Storage.<Region> |
443 |
仅当使用 Azure Container Registry 托管映像时才需要。 |
TCP | 容器应用的子网 | * | AzureMonitor |
443 |
仅在使用 Azure Monitor 时需要此项。 允许对 Azure Monitor 的出站调用。 |
1 创建环境时,此地址会作为参数传递。 例如 10.0.0.0/21
。
2 如果你使用 Azure 容器注册表 (ACR) 并在虚拟网络上配置了 NSG,请在 ACR 上创建一个专用终结点,以允许 Azure 容器应用通过虚拟网络拉取映像。 配置了专用终结点时,无需为 ACR 添加 NSG 规则。
- 如果运行的是 HTTP 服务器,则可能需要添加端口
80
和443
。 - 不要在传出 NSG 规则中显式拒绝 Azure DNS 地址
168.63.129.16
,否则容器应用环境将无法正常运行。