
# 为IAM子账号配置命名空间级别的权限
#### 应用场景
在容器化环境中，不同团队和部门对资源的访问需求不尽相同。如果权限设置过于宽泛，可能会导致环境交叉占用、误操作和资源竞争等问题。为了解决这些问题，实现细粒度的权限控制尤为重要。
CCE权限管理是在统一身份认证服务（IAM）与Kubernetes的角色访问控制（RBAC）的能力基础上，打造的细粒度权限管理功能。CCE权限管理支持基于IAM的细粒度权限控制和IAM Token认证，支持集群级别和命名空间级别的权限控制，从而有效地限制用户对特定资源的访问，确保资源使用的隔离性和安全性。
表1IAM授权与RBAC授权 
| 授权     | 说明                                                                                                            |
|:---|:---|
| IAM授权  | 对用户组进行IAM授权侧重于对云平台资源的访问管理，通过策略控制每个用户组对具体资源的权限。 IAM更关注云资源的细粒度控制。     |
| RBAC授权 | 对用户组进行RBAC授权是基于角色的，将权限与角色关联，再将角色分配给用户组，通常用于应用内部的访问控制。 RBAC更注重角色和任务的匹配。 |
   
本示例主要介绍如何实现命名空间级别的子账号权限管理。了解CCE权限管理的更多内容，请参见[权限](https://support.huaweicloud.com/usermanual-cce/cce_10_0164.html)。
#### 解决方案
假设现有两个团队，分别是研发与测试团队和运维团队。两个团队需要访问子账号A创建的集群A，并且对资源的访问需求不同，具体请参见[表2]。
 表2资源访问需求 
| 团队    | 权限范围           | 权限内容                           |
|:---|:---|:---|
| 研发与测试 | 集群A的NameSpaceA | 访问和操作NameSpaceA，以便进行软件开发和测试活动。 |
| 运维    | 集群A的NameSpaceB | 访问NameSpaceB，以便进行软件开发和测试活动。    |
   
具体解决方案如下：
1. 为不同团队创建不同用户组。
2. 为不同用户组配置不同的权限，即进行IAM授权和RBAC授权。
   图1解决方案   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002054729509.png "点击放大") 
 
#### 约束与限制
- 给用户组授权之前，请您了解用户组可以添加的CCE系统策略，并结合实际需求进行选择，CCE支持的系统策略及策略间的对比，请参见[CCE系统权限](https://support.huaweicloud.com/productdesc-cce/cce_productdesc_0002.html)。若您需要对除CCE之外的其它服务授权，IAM支持服务的所有策略请参见[系统权限](https://support.huaweicloud.com/usermanual-permissions/iam_01_0001.html)。
- 具备**Security Administrator**权限（除IAM切换角色外的所有权限）的用户（例如，默认拥有该权限的admin用户组），才能在CCE控制台的命名空间权限页面进行授权操作，并查看当前用户组及其所拥有的权限。
 
 #### 步骤一：创建用户与用户组
子账号A为研发与测试团队和运维团队分别创建用户和用户组，方便用户和资源的管理。本示例中仅创建3个用户，分别代表开发、测试和运维，您可以根据实际需要创建更多用户。
1. 登录[管理控制台](https://console.huaweicloud.com/console/#/home)。
2. 鼠标放于右上角用户名处，在下拉的菜单中，单击"统一身份认证"。
3. 在左侧导航栏中选择"用户组"，在页面右上角单击"创建用户组"。 
   在弹出页面，输入"用户组名称"，单击"确定"。
   本示例需要创建2个用户组，分别为，例如group1（用于开发与测试）和group2（用于运维）。
   在用户组列表中可以看到新建的2个用户组，如[图2]所示。
   图2新建的用户组   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002054836701.png "点击放大")
   
   
   
4. 在左侧导航栏中选择"用户"，在右上角单击"创建用户"。 
   根据需求配置"用户基本信息"，单击"下一步"，具体请参见[图3]。
   根据需求选择加入的用户组，单击"创建用户"。
   本示例共创建3个用户，分别代表开发、测试和运维，其中开发与测试加入group1，运维加入group2。
   在用户列表中可以看到新建的3个用户，如[图4]所示。
   图3创建用户   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002054927041.png "点击放大")
   图4新建的用户   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002054852949.png "点击放大")
   
   
   
 
#### 步骤二：对用户组进行IAM授权
子账户A分别对用户组group1和group2进行IAM授权，基于云服务管理用户组的相关权限。
1. 在左侧导航栏中选择"用户组"，找到需要授权的用户组，单击"授权"。
2. 在弹出页面中，在右上角云服务中筛选"云容器引擎（CCE）"。 
   根据需要选择策略，云容器引擎（CCE）具有3种策略，了解CCE FullAccess和CCE ReadOnlyAccess策略的更多内容，请参考[系统策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0188.html#section4)。
   本示例中，group1选择CCE FullAccess和CCE ReadOnlyAccess策略，group2选择CCE ReadOnlyAccess策略。
   图5IAM授权   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002055033233.png "点击放大")
   
   
   
3. 单击"下一步"，您可以根据实际需要选择授权范围方案，使授权范围更细化，本示例选择"所有资源"，单击"确定"。 
   表3授权范围方案 
   | 方案       | 说明                                                                                                                                                                                  |
   |:---|:---|
   | 所有资源     | 授权后，IAM用户可以根据权限使用账号中所有资源，包括企业项目、区域项目和全局服务资源。                                                                                                                                        |
   | 指定企业项目资源 | 授权后，IAM用户根据权限使用所选企业项目中的资源。如企业项目A包含资源B，资源B部署在北京四和上海二，IAM用户所在用户组关联企业项目A后，北京四和上海二的资源B用户都可访问，不在企业项目A内的其他资源，该IAM用户将无权访问。 授权后，用户根据权限使用已选企业项目中的资源。 |
   | 指定区域项目资源 | 授权后，IAM用户根据权限使用所选区域项目中的资源，未选择的区域项目中的资源，该IAM用户将无权访问。 授权后，用户根据权限使用已选区域项目中的资源。                                                               |
      
   
   
 
 #### 步骤三：对用户组进行RBAC授权
子账号A分别对两个用户组进行RBAC授权，实现命名空间级别的权限管理，确保不同角色的用户组拥有合适的最小权限，从而提高系统安全性和管理效率。
1. 进入[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)。
2. 在左侧导航栏中选择"权限管理"。在当前页面下，选择"授权集群"和"命名空间"，然后在右上角单击"添加权限"。 
   图6权限管理页面   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002018969740.png "点击放大")
   
   
   
3. 在添加权限页面，确认集群名称，选择要授权的用户或用户组，选择该集群需要授权使用的命名空间。本示例中，group1选择default命名空间，group2选择test命名空间。 
   您可以根据实际情况选择"权限类型"，关于权限类型的具体解释，请参见[命名空间权限（kubernetes RBAC授权）](https://support.huaweicloud.com/usermanual-cce/cce_10_0189.html#section0)。本示例选择"自定义权限"。
   1. 单击"新建自定义权限"，进入新建页。
   
   2. 配置自定义权限参数。[表4]分别给出group1和group2自定义权限参数。
      图7新建自定义权限   
      ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002055116953.png "点击放大")
      
       表4参数说明 
      | 参数 | 示例                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
      |:---|:---|:---|
      | 名称 | **group1：** example1 **group2：** example2                                                                                                                                                                                                                                                                                                                                                                                               | 自定义权限的名称                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
      | 类型 | **group1：** Role **group2：** Role                                                                                                                                                                                                                                                                                                                                                                                                     | 自定义权限分为ClusterRole或Role两类，ClusterRole或Role均包含一组代表相关权限的规则，详情请参见[使用RBAC鉴权](https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/)。 - ClusterRole：ClusterRole是一个集群级别的资源，可设置集群的访问权限。  - Role：Role用于在某个命名空间内设置访问权限。当创建Role时，必须指定该Role所属的命名空间。   本示例仅涉及命名空间的权限配置，故选择Role。 |
      | 规则 | **group1：** - get、list、watch：persistentvolumeclaims。  - \*：除persistentvolumeclaims外的其他资源。   **group2：** - get、list、watch：\*。   | 左侧表示授予的权限。 右侧表示授予权限的资源。 您可以根据实际要求进行配置。                                                                                                                                                                                                                                                                                                                                                                                                                   |
         
      
   
   3. 单击"确定"。
   
   
   
   
4. 在"添加权限"页面，"自定义权限"处选择新建的权限，单击"确定"。 
   本示例需要建立2条权限，即example1和example2，分别配置给group1和group2。
   在权限管理列表中可以看到新建的权限。
   图8权限管理列表   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002055286941.png "点击放大")
   
   
   
 
#### 步骤四：权限验证
利用[步骤一：创建用户与用户组]新建的用户登录管理控制台，检查用户是否具有对应权限。本节以步骤一中新建的develop用户为例，验证权限是否配置成功。
1. 利用新建用户登录[管理控制台](https://console.huaweicloud.com/console/#/home)。
   
   根据页面提示绑定手机号，进行登录验证。是否需要绑定手机号，取决于配置用户基本信息时的选择。
   按照页面提示，重置密码（仅首次登录需要）。
   图9登录管理控制台   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002019050556.png "点击放大")
   
   
   
2. 单击左上角![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002020153572.png "点击放大")，选择"云容器引擎（CCE）"，进入CCE控制台。
3. 检查develop用户能否访问cce-example之外的其他集群。 
   单击其他集群名称，弹出无权限警告，则说明该用户无法访问其他集群。
   图10无权限警告   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002019211648.png)
   
   
   
4. 检查develop用户能否访问cce-example集群。 
   单击cce-example集群名称，在左侧导航栏中选择"命名空间"，只能看到default命名空间（配置权限的命名空间）。
   图11命名空间   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002055291817.png "点击放大")
   
   
5. 检查develop用户能否创建PVC。 
   在左侧导航栏中选择"存储"，选择"存储卷"页签，右上角单击"创建存储卷声明PVC"。
   在弹出页面中配置相关参数，单击创建，弹出无权限页面。这是因为在[步骤三：对用户组进行RBAC授权]中，对develop用户只配置PVC查看权限，而未设置操作权限。
   图12PVC创建无权限   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002055216701.png "点击放大")
   
   
   
6. 检查develop用户能否对工作负载进行升级。 
   在左侧导航栏中选择"工作负载"，选择已有工作负载wordpress1，单击"升级"。
   将该工作负载原镜像版本php7.3修改为latest，单击"升级工作负载"。
   图13修改镜像版本   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002055218769.png "点击放大")
   
   工作负载列表中，wordpress1的镜像版本变为latest，则说明升级成功。同时，说明develop用户的操作权限配置成功。
   图14wordpress1升级后   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002019218806.png "点击放大")
   
   
   
 
#### 步骤五：清除资源
当某用户组不再需要相关权限时，您可以利用子账号A删除用户组对应权限，甚至删除建立的用户和用户组。
1. 删除RBAC授权。 
   利用子账号A登录[管理控制台](https://console.huaweicloud.com/console/#/home)。
   单击左上角![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002019995348.png "点击放大")，选择"云容器引擎（CCE）"，进入CCE控制台。
   在左侧导航栏中选择"权限管理"。在当前页面下，选择"集群"和"命名空间"。
   在权限管理列表中，找到需要删除的权限，单击"删除"，弹出页面中单击"是"。
   
   
2. 删除用户组。 
   鼠标放于右上角用户名处，在下拉的菜单中，单击"统一身份认证"。
   在左侧导航栏中选择"用户组"。找到对应的用户组名称，单击"删除"。
   在弹出页面，输入DELETE，单击"确定"。
   
   
3. 删除用户。 
   在左侧导航栏中选择"用户"，找到对应的用户名称，右侧单击"删除"。您也可以通过"编辑"停用该用户，待重新需要再启用。
   在弹出页面，输入DELETE，单击"确定"。
   
   
 
