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