
# 容器防火墙概述
#### 什么是容器防火墙？
相较于传统虚拟机，容器技术以其轻量化、高效性和可移植性等优势逐渐成为主流。然而，由于单一节点可运行几十甚至上百个容器，容器的安全边界相对模糊，传统安全防护手段难以有效识别和控制出入容器的流量，进而带来横向渗透、权限滥用、数据泄露等安全风险。
针对这一挑战，企业主机安全推出了容器防火墙功能。容器防火墙能够实现Pod、工作负载以及节点粒度的网络隔离，可有效抵御横向渗透攻击，确保业务权限最小化，从而保障用户业务的安全性和稳定性。
#### 容器防火墙原理及限制说明
容器防火墙功能由企业主机安全容器版提供，购买企业主机安全的操作，请参见[购买主机安全防护配额](https://support.huaweicloud.com/usermanual-hss2.0/hss_01_0229.html)。
关于容器防火墙的原理及相关限制说明请参见[表1]。
 表1容器防火墙原理及限制说明 
| 集群类型                        | CCE Standard集群                                                                                                                                                                                                                                                         || CCE Turbo集群                                   | 三方k8s集群                                                                                                                                                                                                                                                                  |
| 容器网络                        | 容器隧道网络                                                                                                                                                                                                                                                                    | VPC网络                            | 云原生网络2.0                                      | k8s原生网络                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|:---|
| 容器防火墙防护原理                   | 通过Kubernetes内置的网络策略（Network Policy）限制Pod之间的通信，以及Pod对外部网络的访问。                                                                                                                                                                                                              | 通过安全组控制进出节点的流量，从而达到间接防护Pod安全的目的。 | 通过为工作负载绑定安全组，基于安全组规则控制出入工作负载的流量，实现对工作负载的网络隔离。 | 通过Kubernetes内置的网络策略（Network Policy）限制Pod之间的通信，以及Pod对外部网络的访问。                                                                                                                                                                                                             |
| 入规则支持的集群版本                  | 所有版本                                                                                                                                                                                                                                                                      | 所有版本                             | v1.19及以上集群版本                                  | 所有版本                                                                                                                                                                                                                                                                     |
| 出规则支持的集群版本                  | v1.23及以上集群版本                                                                                                                                                                                                                                                              | 所有版本                             | v1.19及以上集群版本                                  | v1.23及以上集群版本                                                                                                                                                                                                                                                             |
| 入规则支持的选择方式                  | - namespaceSelector  - podSelector                                                                        | 不涉及                              | 不涉及                                           | - namespaceSelector  - podSelector                                                                           |
| 出规则支持的选择方式                  | - namespaceSelector  - podSelector  - ipBlock   | 不涉及                              | 不涉及                                           | - namespaceSelector  - podSelector  - ipBlock   |
| 支持的操作系统                     | - EulerOS  - CentOS  - Huawei Cloud EulerOS 2.0     | 无约束                              | 无约束                                           | 无约束                                                                                                                                                                                                                                                                      |
| 是否支持IPv6网络策略                | 不支持                                                                                                                                                                                                                                                                       | 不涉及                              | 不涉及                                           | 不支持                                                                                                                                                                                                                                                                      |
| 是否支持通过工作负载的标签限制ClusterIP的访问 | 不支持                                                                                                                                                                                                                                                                       | 不涉及                              | 不涉及                                           | 不支持                                                                                                                                                                                                                                                                      |
| 权限依赖                        | 由于操作集群内的资源对象需要获取对应的操作权限，因此使用容器防火墙功能时，用户账号需要具备以下两类权限之一： - IAM权限：Tenant Administrator或CCE Administrator。  - 命名空间权限（Kubernetes RBAC授权）：运维权限。权限配置详细操作请参见[配置命名空间权限](https://support.huaweicloud.com/usermanual-cce/cce_10_0189.html#section3)。   ||| 无依赖                                                                                                                                                                                                                                                                      |
   
#### 相关概念
- **网络策略**
  网络策略（NetworkPolicy）是一种Kubernetes资源对象，用于定义集群中Pod的网络访问控制规则。它通过标签选择器（[podSelector]等）指定目标Pod，并通过 ingress（入站）和 egress（出站）规则定义允许或拒绝的流量。
  
- **安全组**
  安全组是一个逻辑上的分组，为具有相同安全保护需求并相互信任的云服务器、云容器、云数据库等实例提供访问策略。安全组中包括入方向规则和出方向规则，您可以针对每条入方向规则指定来源、端口和协议，针对出方向规则指定目的地、端口和协议，用来控制安全组内实例入方向和出方向的网络流量。
  

- **namespaceSelector**
  namespaceSelector是一个标签选择器，用于选择特定的命名空间（namespace）。NetworkPolicy 可以通过namespaceSelector指定允许或拒绝来自或去往这些命名空间中所有Pod的流量。
  
- **podSelector**
  podSelector是一个标签选择器，用于选择特定的Pod。NetworkPolicy通过podSelector指定目标Pod，并定义允许或拒绝的流量规则。
  
- **ipBlock**
  ipBlock用于指定IP地址范围（CIDR格式），表示允许或拒绝来自或去往这些IP段的流量。
  
 
#### 相关操作
- [设置网络防御策略（容器隧道网络）](https://support.huaweicloud.com/usermanual-hss2.0/hss_01_0501.html)
- [设置网络防御策略（VPC网络）](https://support.huaweicloud.com/usermanual-hss2.0/hss_01_0502.html)
- [设置网络防御策略（云原生网络2.0）](https://support.huaweicloud.com/usermanual-hss2.0/hss_01_0607.html)
- [设置网络防御策略（k8s原生网络）](https://support.huaweicloud.com/usermanual-hss2.0/hss_01_0743.html)
 
