设置网络防御策略(k8s原生网络)
操作场景
如果未为Pod设置网络防御策略,默认情况下允许所有流量进出Pod。这表示Pod之间可以自由通信,并且可以访问外部网络,存在潜在的安全风险。
本文为您介绍如何为k8s原生网络模型的集群设置网络防御策略,限制Pod之间的通信,以及Pod对外部网络的访问,从而提升集群的网络安全性。
约束与限制
- k8s 1.23及以上版本支持入方向和出方向规则,k8s 1.23以下版本仅支持入方向规则。
- 不支持对IPv6地址的网络进行隔离。
- 不支持通过工作负载的标签限制ClusterIP的访问。
- flannel插件默认不支持Network Policy。
创建网络防御策略
您可以通过以下方式创建网络防御策略。
- 登录企业主机安全控制台。
- 在控制台左上角,单击
图标,选择区域或项目。
- 在左侧导航栏选择“容器防火墙”页面。 ,进入
- (可选)如果您已开通企业项目,可在界面上方的“企业项目”下拉列表中选择目标主机所在的企业项目。
- 在集群列表上方,单击“手动同步”,同步所有集群已创建的策略。
同步任务大概执行1~2分钟,请您稍作等待后单击列表右上方
,刷新查看最新数据。
图1 同步集群策略 - 单击k8s原生网络模型的集群所在行“操作”列的“策略管理”,进入策略管理页面。
- 单击策略列表上方“YAML创建”。
- 在YAML创建界面输入或单击“导入”数据。
以下为YAML创建的网络策略示例:通过网络策略限制Pod只能被带有特定标签的Pod访问
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: access-demo1 namespace: default spec: podSelector: # 规则对具有role=db标签的Pod生效 matchLabels: role: db ingress: # 表示入规则 - from: - podSelector: # 只允许具有role=frontend标签的Pod访问 matchLabels: role: frontend ports: # 只能使用TCP协议访问6379端口 - protocol: TCP port: 6379
- 输入完成后,单击“确定”。
您可以在策略管理列表中查看新创建的策略。
- 登录企业主机安全控制台。
- 在控制台左上角,单击
图标,选择区域或项目。
- 在左侧导航栏选择“容器防火墙”页面。 ,进入
- (可选)如果您已开通企业项目,可在界面上方的“企业项目”下拉列表中选择目标主机所在的企业项目。
- 在集群列表上方,单击“手动同步”,同步所有集群已创建的策略。
同步任务大概执行1~2分钟,请您稍作等待后单击列表右上方
,刷新查看最新数据。
图2 同步集群策略 - 单击k8s原生网络模型的集群所在行“操作”列的“策略管理”,进入策略管理页面。
- 单击网络策略列表上方“创建网络策略”。
- 策略名称:自定义输入网络策略名称。
- 命名空间:在下拉框中选择网络策略所在命名空间。
- 选择器:输入标签键和标签值选择要关联的Pod,然后单击“确认添加”。您也可以单击“引用负载标签”直接引用已有负载的标签。
- 入方向规则:单击添加规则,添加入方向规则,参数说明请参见表 添加入方向规则。
- 出方向规则:单击添加规则,添加出方向规则,参数说明请参见表 添加出方向规则。
表2 添加出方向规则 参数
参数说明
协议端口
填写目的对象的端口和协议。不填写表示不限制。
目标网段
允许将流量转发至指定的一个网段内(可指定多个例外网段)。
指定网段和例外网段用竖线(|)分隔,多个例外网段用逗号(,)分隔。
例如:172.17.0.0/16|172.17.1.0/24,172.17.2.0/24 表示允许访问 172.17.0.0/16 网段,其中 172.17.1.0/24 和 172.17.2.0/24 两个网段例外。
目的对象命名空间
目的对象所在的命名空间,不填写表示和当前策略属于同一命名空间。
目的对象Pod标签
允许访问带有这个标签的Pod,不填写表示允许访问命名空间下全部Pod。
- 设置完成后,单击“确定”。
您可以在策略管理列表中查看新创建的策略。
相关操作
修改或删除网络策略
- (可选)如果您已开通企业项目,可在界面上方的“企业项目”下拉列表中选择目标主机所在的企业项目。
- 在目标k8s原生网络模型的集群所在行的“操作”列,单击“策略管理”,进入策略管理页面。
- 单击网络策略列表上方“手动同步”。
同步任务大概执行1~2分钟,请您稍作等待后单击列表右上方
,刷新查看最新数据。
- 定位目标网络策略,选择执行管理操作。
- 修改网络策略
- 在目标策略所在行的“操作”列,单击“编辑YAML”,进入YAML界面,修改YAML信息后,单击“确定”。
- 在目标策略所在行的“操作”列,单击“更新”,进入更新网络策略界面,修改网络策略信息后,单击“确定”。
- 删除网络策略
- 在目标策略所在行的“操作”列,单击“删除”,在弹出的确认信息框中,单击“确定”。
- 勾选所有需要删除的网络策略,单击网络策略列表上方的“批量删除”,在弹出的确认信息框中,单击“确定”。
- 修改网络策略