
# 设置网络防御策略（k8s原生网络）
#### 操作场景
如果未为Pod设置网络防御策略，默认情况下允许所有流量进出Pod。这表示Pod之间可以自由通信，并且可以访问外部网络，存在潜在的安全风险。
本文为您介绍如何为k8s原生网络模型的集群设置网络防御策略，限制Pod之间的通信，以及Pod对外部网络的访问，从而提升集群的网络安全性。
#### 约束与限制
- k8s 1.23及以上版本支持入方向和出方向规则，k8s 1.23以下版本仅支持入方向规则。
- 不支持对IPv6地址的网络进行隔离。
- 不支持通过工作负载的标签限制ClusterIP的访问。
- flannel插件默认不支持Network Policy。
 
#### 创建网络防御策略
您可以通过以下方式创建网络防御策略。
- [通过YAML创建网络策略]
  1. [登录企业主机安全控制台](https://console.huaweicloud.com/hss/?locale=zh-cn)。
  
  2. 在控制台左上角，单击![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002384023862.png)图标，选择区域或项目。
  
  3. 在左侧导航栏选择"主动防御 \> 容器防火墙"，进入"容器防火墙"页面。
  
  4. （可选）如果您已开通企业项目，可在界面上方的"企业项目"下拉列表中选择目标主机所在的企业项目。
  
  5. 在集群列表上方，单击"手动同步"，同步所有集群已创建的策略。 
     同步任务大概执行1\~2分钟，请您稍作等待后单击列表右上方![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002270678478.png "点击放大")，刷新查看最新数据。
     图1同步集群策略   
     ![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002305295213.png "点击放大")
     
     
  
  6. 单击k8s原生网络模型的集群所在行"操作"列的"策略管理"，进入策略管理页面。
  
  7. 单击策略列表上方"YAML创建"。
  
  8. 在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
     ```
     
     
  
  9. 输入完成后，单击"确定"。 
     您可以在策略管理列表中查看新创建的策略。
     
     
   
- [通过可视化界面创建网络策略]
  1. [登录企业主机安全控制台](https://console.huaweicloud.com/hss/?locale=zh-cn)。
  
  2. 在控制台左上角，单击![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002384023862.png)图标，选择区域或项目。
  
  3. 在左侧导航栏选择"主动防御 \> 容器防火墙"，进入"容器防火墙"页面。
  
  4. （可选）如果您已开通企业项目，可在界面上方的"企业项目"下拉列表中选择目标主机所在的企业项目。
  
  5. 在集群列表上方，单击"手动同步"，同步所有集群已创建的策略。 
     同步任务大概执行1\~2分钟，请您稍作等待后单击列表右上方![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000001883361496.png "点击放大")，刷新查看最新数据。
     图2同步集群策略   
     ![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002003770873.png "点击放大")
     
     
  
  6. 单击k8s原生网络模型的集群所在行"操作"列的"策略管理"，进入策略管理页面。
  
  7. 单击网络策略列表上方"创建网络策略"。 
     - 策略名称：自定义输入网络策略名称。
     
     - 命名空间：在下拉框中选择网络策略所在命名空间。
     
     - 选择器：输入标签键和标签值选择要关联的Pod，然后单击"确认添加"。您也可以单击"引用负载标签"直接引用已有负载的标签。
     
     - 入方向规则：单击添加规则，添加入方向规则，参数说明请参见[表 添加入方向规则]。
        表1添加入方向规则 
       | 参数       | 参数说明                                           |
       |:---|:---|
       | 协议端口     | 填写需要关联的Pod的入方向协议类型和端口，目前支持TCP和UDP协议。不填写表示全部放通。 |
       | 源对象命名空间  | 选择允许哪个命名空间的对象访问。不填写表示和当前策略属于同一命名空间。            |
       | 源对象Pod标签 | 允许带有这个标签的Pod访问，不填写表示允许命名空间下全部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。                                                                                                                                                                                                     |
          
       
     
     
     
     
  
  
  
  8. 设置完成后，单击"确定"。 
     您可以在策略管理列表中查看新创建的策略。
     
     
   
#### 相关操作
**修改或删除网络策略**
1. （可选）如果您已开通企业项目，可在界面上方的"企业项目"下拉列表中选择目标主机所在的企业项目。
2. 在目标k8s原生网络模型的集群所在行的"操作"列，单击"策略管理"，进入策略管理页面。
3. 单击网络策略列表上方"手动同步"。 
   同步任务大概执行1\~2分钟，请您稍作等待后单击列表右上方![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002270575378.png "点击放大")，刷新查看最新数据。
   
   
4. 定位目标网络策略，选择执行管理操作。 
   - 修改网络策略
     - 在目标策略所在行的"操作"列，单击"编辑YAML"，进入YAML界面，修改YAML信息后，单击"确定"。
     
     - 在目标策略所在行的"操作"列，单击"更新"，进入更新网络策略界面，修改网络策略信息后，单击"确定"。
      
   
   - 删除网络策略
     - 在目标策略所在行的"操作"列，单击"删除"，在弹出的确认信息框中，单击"确定"。
     
     - 勾选所有需要删除的网络策略，单击网络策略列表上方的"批量删除"，在弹出的确认信息框中，单击"确定"。
      
   
   
   
   
 
