
# 使用安全组策略为工作负载绑定安全组
云原生网络2.0网络模式下，Pod使用的是VPC的弹性网卡/辅助弹性网卡，可直接绑定安全组，绑定弹性公网IP。为方便用户在CCE内直接为Pod关联安全组，CCE新增了一个名为SecurityGroup的自定义资源对象。通过SecurityGroup资源对象，用户可对工作负载实现自定义的安全隔离诉求。
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/caution_3.0-zh-cn.png)
为工作负载绑定安全组存在多种配置方式（如注解、安全组策略、节点池配置、容器网络配置），当您同时使用多种配置方式时，只生效优先级最高的配置方式，优先级详情请参见[不同方法配置工作负载安全组的对比](https://support.huaweicloud.com/usermanual-cce/cce_10_1078.html)。
#### 约束与限制
v1.19及以上的CCE Turbo集群支持此功能，v1.19以下版本CCE Turbo集群需要升级到v1.19及以上版本后才能启用此功能。
#### 创建安全组策略
您可以通过以下方式进行创建。
- [通过控制台创建]
  1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
  
  2. 在左侧选择"工作负载"，单击工作负载名称。
  
  3. 在"安全组策略"页签下，单击"创建"。 
     ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001698120741.png "点击放大")
     
     
  
  4. 根据界面提示，配置参数， 具体如[表1]所示。
     
      表1配置参数 
     | 参数名称  | 描述                                                                                                                                                                                                                                | 示例                                                                                                       |
     |:---|:---|:---|
     | 策略名称  | 输入安全组策略名称。 请输入1-63个字符，以小写字母开头，由小写字母、数字、连接符（-）组成，且不能以连接符（-）结尾。                                                                                                                                       | security-group                                                                                           |
     | 关联安全组 | 选中的安全组将绑定到选中的工作负载的弹性网卡/辅助弹性网卡上，在下拉框中可以选择安全组，不可缺省。为了更好的网络性能，建议您选择不超过5个安全组。 如将绑定的安全组未创建，可单击"创建安全组"，完成创建后单击刷新按钮。 说明： 鼠标悬浮在安全组名称上，可查看安全组的详细信息。 | 64566556-bd6f-48fb-b2c6-df8f44617953 5451f1b0-bd6f-48fb-b2c6-df8f44617953 |
        
     
     
  
  5. 参数配置后，单击"确定"。 
     创建完成后页面将自动返回到安全组策略列表页，可以看到新添加的安全组策略已在列表中。
     
     
   
- [通过kubectl命令行创建]
  1. 请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)，使用kubectl连接集群。
  
  2. 创建一个名为securitygroup-demo.yaml的描述文件。 
     **vi securitygroup-demo.yaml**
     例如，用户创建如下的SecurityGroup资源对象，给所有的app：nginx工作负载绑定上提前已经创建的64566556-bd6f-48fb-b2c6-df8f44617953，5451f1b0-bd6f-48fb-b2c6-df8f44617953的两个安全组。示例如下：
     ```
     apiVersion: crd.yangtse.cni/v1
     kind: SecurityGroup
     metadata:
       name: demo
       namespace: default
     spec:
       podSelector:
         matchLabels:
           app: nginx    
       securityGroups:
       - id: 64566556-bd6f-48fb-b2c6-df8f44617953
       - id: 5451f1b0-bd6f-48fb-b2c6-df8f44617953
     ```
     以上yaml参数说明如[表2]。
      表2参数说明 
     | 字段名称           | 字段说明                                 | 必选/可选 |
     |:---|:---|:---|
     | apiVersion     | 表示API的版本号，版本号为crd.yangtse.cni/v1。    | 必选    |
     | kind           | 创建的对象类别。                             | 必选    |
     | metadata       | 资源对象的元数据定义。                          | 必选    |
     | name           | SecurityGroup的名称。                    | 必选    |
     | namespace      | 工作空间名称。                              | 必选    |
     | spec           | 用户对SecurityGroup的详细描述的主体部分都在spec中给出。 | 必选    |
     | podSelector    | 定义SecurityGroup中需要关联安全组的工作负载。        | 必选    |
     | securityGroups | id为安全组的ID。                           | 必选    |
        
     
     
  
  3. 执行以下命令，创建SecurityGroup。 
     **kubectl create -f securitygroup-demo.yaml**
     回显如下表示已开始创建SecurityGroup
     ```
     securitygroup.crd.yangtse.cni/demo created
     ```
     
     
  
  4. 执行以下命令，查看SecurityGroup。 
     **kubectl get sg**
     回显信息中有创建的SecurityGroup名称为demo，表示SecurityGroup已创建成功。
     ```
     NAME                       POD-SELECTOR                      AGE
     all-no                     map[matchLabels:map[app:nginx]]   4h1m
     s001test                   map[matchLabels:map[app:nginx]]   19m
     demo                       map[matchLabels:map[app:nginx]]   2m9s
     ```
     
     
   
