有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
容器网络策略提供基于 K8s 原生 Networkpolicy 的集群容器间网络策略下发和管理能力,通过对集群内的防护对象进行定义,设置防护对象的出站和入站规则实现容器间网络访问控制。本文档将指导您如何配置和管理容器网络策略,以及实施容器间网络隔离。

限制条件

目前支持容器网络策略的集群范围包括:TKE 独立集群、TKE 托管集群、自建 K8s 集群。
说明
首次使用容器安全服务,需手动同步 TKE 集群资产,详情请参见 集群检查-安装集群检查组件
自建 K8s 集群接入步骤请参见 自建集群
容器网络策略依赖集群部署网络组件,目前已支持 kube-router 网络组件类型。
TKE 集群使用容器网络策略需确保集群已安装 NetworkPolicy 组件。NetworkPolicy 组件说明可参见 容器服务-Network Policy 说明

自建 K8s 集群安装 kube-router 网络组件可参见 User Guide - Kube-router
使用容器网络策略可能造成集群性能损耗,请详细评估集群规模和性能损耗后使用。以部署 kube-router 组件开启网络策略为例,Pod 数量从2000增长到8000,部署网络策略时集群性能下降约10% - 20%,详情请参见 使用 Network Policy 进行网络访问控制

管理集群网络策略

1. 登录 容器安全服务控制台,在左侧导航中,选择策略管理 > 容器网络策略
2. 在容器网络策略页面,可查看集群网络组件类型、集群地域和集群的已启用策略数和总策略数等相关信息。


3. 选择目标集群,单击策略管理,进入集群策略详情页面,支持对集群网络策略进行添加、编辑、删除以及自动发现接管策略等操作。
注意
当前仅支持 Kube-Router 网络组件。
容器网络策略依赖集群部署网络组件,不支持的网络组件类型无法进入集群策略管理。
当集群或网络组件信息变更后,单击集群列表上方

图标,可手动获取最新集群数据,或等待系统自动同步最新数据。


创建集群网络策略

1. 在集群策略详情页面,单击添加策略
2. 在添加策略对话框中,填写策略名称和策略描述,选择视图模式或表单模式进入容器网络策略编辑。
注意
编辑视图下切换模式将新建空白策略,原模式下创建的策略内容将不会被保留。

3. 在编辑视图下配置容器网络策略,单击页面右上角仅保存保存并开启
说明
仅保存:保存当前网络策略但不会启用该条策略。
保存并开启:保存当前网络策略并立即开启该条策略。


策略说明

基本信息

策略名称:策略名称会关联 Networkpolicy Name、不允许重复,创建后不允许修改、最大长度需小于254个字符。
策略描述:最大长度需小于1000个字符。

策略类型

容器网络策略类型分为人工策略自动发现两种,人工策略是通过容器安全控制台创建和管理的策略,自动发现指系统自动发现和获取到的集群 Networkpolicy 策略,包括手动在集群中创建和变更的策略。
自动发现的策略进行置入确认后将被纳入产品策略库中统一管理,允许在控制台对策略进行开启/关闭/编辑等操作。

防护对象

防护对象是命名空间内通过 pod 标签来关联的一个或多个 pod,具有相同标签的 pod 应用为一组防护对象。
说明
标签指 K8s Labels,标签是附加到 Kubernetes 对象(如 pod)上的键值对,由 Key 和 Value 组成,详情请参见 Labels and Selectors
防护对象通过多个 pod 标签关联时,多个 pod 标签之间为“与”关系,只有同时满足标签条件的 pod 应用才会被关联到防护对象。
命名空间:防护对象所属的命名空间,默认为 Default。
Pods:Pods 标签选择“全部 Pods”时,表示该命名空间下的所有 pod 均为防护对象,此时网络策略等同于对整个命名空间生效。
注意
若使用多个 pod 标签关联防护对象,当新增的标签 key 值重复时,只会保留1个 key 值生效,旧 key 值标签会被覆盖。例如:使用 app1=a,app1=b,app2=c,app2=d 关联防护对象,生效标签为 app1=b,app2=d。




规则说明

容器网络策略默认规则为允许全部入站\\出站请求,默认情况下允许全部入站和出站请求。配置拒绝全部入站请求,防护对象将拒绝所有请求连接。配置拒绝全部出站请求,防护对象将拒绝所有发起的请求。


策略配置自定义规则并启用后,将只允许设定的入向/出向规则内的请求,其余请求将被拒绝。

自定义规则说明

通过自定义规则配置防护对象允许的入站来源和出向目标,将只允许指定来源或目标的协议端口范围请求,其它请求将默认被拒绝。


类型
Pods:指定允许的 pod 应用,通过 pod 标签关联,多个 pod 标签满足一个即可放行。指定 Pods 标签时需指定命名空间,不指定(指命名空间放空)时生效范围为当前命名空间(与防护对象命名空间相同)。
命名空间:指定允许的命名空间,通过命名空间标签关联,多个命名空间标签满足一个即可放行。
IP:指定允许的 IP 范围,输入格式需满足 CIDR 格式且必须符合 IP 的合法性。
协议端口:可以与上述来源或目标类型组合使用,协议支持配置 TCP 或 UDP,端口为 pod 端口号,填写范围1-65535,多个端口号通过逗号分割。
说明
若配置端口协议规则表示在指定协议下只允许指定端口请求,如“TCP 80”表示指定 TCP 协议下只允许80端口通信,UDP 协议不受影响。
自定义规则允许的来源或目标可以添加多个,满足任意其中一个规则即可匹配。
注意
若使用多个标签关联 Pod 类型或命名空间类型,当新增的标签 key 值重复时,只会有1个 key 值生效,旧 key 值标签会被覆盖,例如:使用 app1=a,app1=b,app2=c,app2=d 关联防护对象,生效标签为 app1=b,app2=d。

策略规则冲突

当同一个防护对象存在多条网络策略规则冲突时,会遵循 K8S NetworkPolicy 策略冲突规则。例如:
冲突类型
冲突示例
示例开启效果
针对相同 pod 的规则冲突
A 规则:防护对象为命名空间 A 的 pod1,规则为入站允许所有请求。
B 规则:防护对象为命名空间 A 的 pod1,规则为入站拒绝所有请求。
命名空间 A 的 pod1入站允许所有请求。
针对 pod 和命名空间的规则冲突
A 规则:防护对象为命名空间 A(默认为全部 pods),规则为入站允许所有请求。
B 规则:防护对象为命名空间 A 的 pod1,规则为入站拒绝所有请求。
防护对象命名空间 A 的 pod1入站拒绝所有,命名空间 A 的其它 pod 入站允许所有请求。
针对 pod 和命名空间的规则冲突
A 规则:防护对象为命名空间 A(默认为全部 pods),规则为入站拒绝所有请求。
B 规则:防护对象为命名空间 A 的 pod1,规则为入站允许所有请求。
防护对象命名空间 A 的 pod1入站允许所有请求,命名空间 A 的其它 pod 入站拒绝所有请求。

策略变更审计

在网络策略页面,单击右上角的变更记录,可查看所有策略规则的变更审计记录,审计操作包括新增策略、开启策略、关闭策略、编辑策略、删除策略、确认策略。



相关文档

容器网络策略的常见隔离场景说明,请参见 使用场景