
# RBAC示例：某部门权限设计及配置
#### 概述
随着容器技术的快速发展，原有的分布式任务调度模式正在被基于Kubernetes的技术架构所取代。云容器引擎（Cloud Container Engine，简称CCE）是高度可扩展的、高性能的企业级Kubernetes集群，支持社区原生应用和工具。借助云容器引擎，您可以在云上轻松部署、管理和扩展容器化应用程序，快速高效地将微服务部署在云端。
为方便企业中的管理人员对集群中的资源权限进行管理，CCE后台提供了多种维度的细粒度权限策略和管理方式。CCE的权限管理包括"集群权限"和"命名空间权限"两种能力，分别从集群和命名空间两个层面对用户组或用户进行细粒度授权，具体解释如下：
- **集群权限：**是基于IAM系统策略的授权，可以让用户组拥有"集群管理"、"节点管理"、"应用模板"、"插件中心"权限。
- **命名空间权限：**是基于Kubernetes RBAC能力的授权，可以让用户或用户组拥有Kubernetes资源的权限，如"工作负载"、"服务"、"存储"、"命名空间"等的权限。
基于IAM系统策略的"集群权限"与基于Kubernetes RBAC能力的"命名空间权限"，两者是完全独立的，互不影响，但要配合使用。同时，为用户组设置的权限将作用于用户组下的全部用户。当给用户或用户组添加多个权限时，多个权限会同时生效（取并集）。
#### 权限设计
下面以一个公司为例进行介绍。
通常一个公司中有多个部门或项目，每个部门又有多个成员，所以在配置权限前需要先进行详细设计，并在设置权限之前提前为每个成员创建用户名，便于后续对用户进行用户组归属和权限设置。
下图为某公司某部门的组织架构图和相关人员的权限设计，本文将按照该设计对每个角色的权限设置进行演示：
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001256348238.jpg "点击放大")
#### 主管：DAVID
用户"DAVID"为该公司某部门的主管，根据权限设计需要为其配置CCE服务的所有权限（包括集群权限和命名空间权限），因此需要在统一身份认证服务 IAM中单独为DAVID创建用户组"cce-admin"，并配置所有项目的权限："CCE Administrator"，这样主管DAVID的权限就配置好了。
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
**CCE Administrator：**CCE的管理员权限，拥有该服务的所有权限，不需要再赋予其他权限。
**CCE FullAccess、CCE ReadOnlyAccess：**CCE的集群管理权限，仅针对与集群相关的资源（如集群、节点）有效，您必须确保同时配置了"命名空间权限"，才能有操作Kubernetes资源（如工作负载、Service等）的权限。
图1为主管DAVID所在的用户组授权   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001583394657.png "点击放大")
#### 运维组长：JAMES
用户"JAMES"为该部门的运维组长，需要设置所有项目的集群权限和所有命名空间的只读权限。
在统一身份认证服务 IAM中先为用户"JAMES"单独创建并加入用户组"cce-sre"，然后为用户组"cce-sre"配置所有项目的集群权限："CCE FullAccess"，用户组"cce-sre"便拥有了所有项目的集群管理权限，接下来还需要为其设置命名空间的只读权限。
图2为运维组长JAMES所在的用户组授权   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001583395209.png "点击放大")
**为所有组长和工程师添加所有集群和命名空间的只读权限**
在统一身份认证服务 IAM中再创建一个只读用户组"read_only"，然后将相关用户都添加到此用户组中。
- 两个开发工程师虽然不需要配置集群的管理权限，但也需要查看CCE控制台，因此需要有集群的只读权限才能满足需求。
- 运维工程师需要某区域集群的管理权限，为方便管理，这里先为其赋予集群的只读权限。
- 运维组长已经拥有了所有集群的管理权限，为方便管理，也可以将其添加到"read_only"用户组中，为其赋予集群的只读权限。
将JAMES、ROBERT、WILLIAM、LINDA、PETER五个用户都添加到用户组"read_only"中。
图3将相关用户添加到"read_only"用户组中   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001199501246.png "点击放大")
接下来为用户组"read_only"赋予集群的只读权限。
图4为用户组赋予集群的只读权限   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001583400825.png "点击放大")
然后返回CCE控制台，为这五个用户所在的用户组"read_only"增加命名空间的只读权限，单击左侧栏目树中的"权限管理"，为用户组"read_only"逐个赋予所有集群的只读权限。
图5为用户组赋予命名空间的只读权限   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001208264612.png "点击放大")
设置完成后，运维组长"JAMES"就拥有了所有项目的集群管理权限和所有命名空间的只读权限，而开发组长"ROBERT"、运维工程师"WILLIAM"以及两位开发工程师"LINDA"和"PETER"则拥有了所有集群和命名空间的只读权限。
#### 开发组长：ROBERT
用户"ROBERT"作为开发组的组长，虽然在上一步中已经为其设置了所有集群和命名空间的只读权限，但显然还不够，还需要为其设置所有命名空间的管理权限。
因此需要再单独为其赋予所有集群下全部命名空间的管理员权限。
图6为用户ROBERT赋予命名空间的管理权限   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001208264662.png "点击放大")
#### 运维工程师：WILLIAM
运维工程师"WILLIAM"虽然也有了所有集群和命名空间的只读权限，但还需要在统一身份认证服务 IAM中为其设置区域的集群管理权限，因此单独为其创建一个用户组"cce-sre-b4"，然后配置区域项目的"CCE FullAccess"。
图7为用户WILLIAM所在的用户组配置北京四项目的集群管理权限   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001583168521.png "点击放大")
由于之前已经为其设置过所有命名空间的只读权限，所以运维工程师"WILLIAM"现在就拥有了区域的集群管理权限和所有命名空间的只读权限。
#### 开发工程师：LINDA、PETER
"LINDA"和"PETER"是开发工程师，由于前面已经在用户组"read-only"中为两位工程师配置了集群和命名空间的只读权限，这里只需要再另外配置相应命名空间的编辑权限即可。
图8为开发工程师分别配置命名空间的编辑权限   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001207944806.png "点击放大")
至此，该部门的所有权限就设置完成了。
