更新时间:2024-11-08 GMT+08:00

权限管理

CCE权限管理是在统一身份认证服务(IAM)与Kubernetes的角色访问控制(RBAC)的能力基础上,打造的细粒度权限管理功能,支持基于IAM的细粒度权限控制和IAM Token认证,支持集群级别、命名空间级别的权限控制,帮助用户便捷灵活的对租户下的IAM用户、用户组设定不同的操作权限。

CCE的权限管理包括“集群权限”和“命名空间权限”两种能力,能够从集群和命名空间层面对用户组或用户进行细粒度授权,具体解释如下:
  • 集群权限是基于IAM系统策略的授权,可以通过用户组功能实现IAM用户的授权。用户组是用户的集合,通过集群权限设置可以让某些用户组操作集群(如创建/删除集群、节点、节点池、模板、插件等),而让某些用户组仅能查看集群。

    集群权限涉及非Kubernetes原生提供的API,支持IAM细粒度策略、企业项目管理相关能力。

  • 命名空间权限是基于Kubernetes RBAC能力的授权,通过权限设置可以让不同的用户或用户组拥有操作不同Kubernetes资源的权限(如工作负载、任务、服务等Kubernetes原生资源)。同时CCE基于开源能力进行了增强,可以支持基于IAM用户或用户组粒度进行RBAC授权、IAM token直接访问API进行RBAC认证鉴权。

    命名空间权限涉及CCE Kubernetes API,基于Kubernetes RBAC能力进行增强,支持对接IAM用户/用户组进行授权和认证鉴权,但与IAM细粒度策略独立,详见Kubernetes RBAC

  • 集群权限仅针对与集群相关的资源(如集群、节点等)有效,您必须确保同时配置了命名空间权限,才能有操作Kubernetes资源(如工作负载、任务、Service等)的权限。
  • 任何用户创建集群后,CCE会自动为该用户添加该集群的所有命名空间的cluster-admin权限,也就是说该用户允许对集群以及所有命名空间中的全部资源进行完全控制。
  • 使用CCE控制台查看集群时,显示情况依赖于命名空间权限的设置情况,如果没有设置命名空间权限,则无法查看集群下的资源。

集群权限(IAM系统策略授权)

默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。

CCE部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域对应的项目中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问CCE时,需要先切换至授权区域。

权限根据授权精细程度分为角色和策略。
  • 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。
  • 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对CCE服务,租户(Domain)能够控制用户仅能对某一类集群和节点资源进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分,CCE支持的API授权项请参见权限策略和授权项

表1所示,包括了CCE的所有系统权限。

表1 CCE系统权限

系统角色/策略名称

描述

类别

依赖关系

CCE Administrator

具有CCE集群及集群下所有资源(包含集群、节点、工作负载、任务、服务等)的读写权限。

系统角色

拥有该权限的用户必须同时拥有以下权限:

全局服务:OBS Buckets Viewer、OBS Administrator。

区域级项目:Tenant Guest、Server Administrator、ELB Administrator、SFS Administrator、SWR Admin、APM FullAccess。

说明:
  • 如果同时拥有NAT Gateway Administrator权限,则可以在集群中使用NAT网关的相关功能。
  • 如果IAM子用户需要对其他用户或用户组进行集群命名空间授权,则该用户需要拥有IAM只读权限。

CCE FullAccess

CCE服务集群相关资源的普通操作权限,不包括集群(启用Kubernetes RBAC鉴权)的命名空间权限,不包括委托授权、生成集群证书等管理员角色的特权操作。

策略

CCE ReadOnlyAccess

CCE服务集群相关资源的查看权限,不包括集群(启用Kubernetes RBAC鉴权)的命名空间权限。

策略

表2 CCE常用操作与系统权限的关系

操作

CCE ReadOnlyAccess

CCE FullAccess

CCE Administrator

创建集群

x

删除集群

x

更新集群,如后续允许集群支持RBAC,调度参数更新等

x

升级集群

x

唤醒集群

x

休眠集群

x

查询集群列表

查询集群详情

添加节点

x

删除节点/批量删除节点

x

更新节点,如更新节点名称

x

查询节点详情

查询节点列表

查询任务列表(集群层面的job)

删除任务/批量删除任务(集群层面的job)

x

查询任务详情(集群层面的job)

创建存储

x

删除存储

x

操作所有kubernetes资源。

√(需Kubernetes RBAC授权)

√(需Kubernetes RBAC授权)

容器智能分析所有资源查看权限

容器智能分析所有资源操作权限

x

ECS(弹性云服务器)服务的所有权限。

x

EVS(云硬盘)的所有权限。

可以将云硬盘挂载到云服务器,并可以随时扩容云硬盘容量

x

VPC(虚拟私有云)的所有权限。

创建的集群需要运行在虚拟私有云中,创建命名空间时,需要创建或关联VPC,创建在命名空间的容器都运行在VPC之内。

x

ECS(弹性云服务器)所有资源详情的查看权限。

CCE中的一个节点就是具有多个云硬盘的一台弹性云服务器

ECS(弹性云服务器)所有资源列表的查看权限。

EVS(云硬盘)所有资源详情的查看权限。可以将云硬盘挂载到云服务器,并可以随时扩容云硬盘容量

EVS(云硬盘)所有资源列表的查看权限。

VPC(虚拟私有云)所有资源详情的查看权限。

创建的集群需要运行在虚拟私有云中,创建命名空间时,需要创建或关联VPC,创建在命名空间的容器都运行在VPC之内

VPC(虚拟私有云)所有资源列表的查看权限。

ELB(弹性负载均衡)服务所有资源详情的查看权限。

x

x

ELB(弹性负载均衡)服务所有资源列表的查看权限。

x

x

SFS(弹性文件服务)服务所有资源详情的查看权限。

SFS(弹性文件服务)服务所有资源列表额查看权限。

AOM(应用运维管理)服务所有资源详情的查看权限。

AOM(应用运维管理)服务所有资源列表的查看权限。

AOM(应用运维管理)服务自动扩缩容规则的所有操作权限。

命名空间权限(kubernetes RBAC授权)

命名空间权限是基于Kubernetes RBAC能力的授权,通过权限设置可以让不同的用户或用户组拥有操作不同Kubernetes资源的权限。Kubernetes RBAC API定义了四种类型:Role、ClusterRole、RoleBinding与ClusterRoleBinding,这四种类型之间的关系和简要说明如下:

  • Role:角色,其实是定义一组对Kubernetes资源(命名空间级别)的访问规则。
  • RoleBinding:角色绑定,定义了用户和角色的关系。
  • ClusterRole:集群角色,其实是定义一组对Kubernetes资源(集群级别,包含全部命名空间)的访问规则。
  • ClusterRoleBinding:集群角色绑定,定义了用户和集群角色的关系。

Role和ClusterRole指定了可以对哪些资源做哪些动作,RoleBinding和ClusterRoleBinding将角色绑定到特定的用户、用户组或ServiceAccount上。如下图所示。

图1 角色绑定
在CCE控制台可以授予用户或用户组命名空间权限,可以对某一个命名空间或全部命名空间授权,CCE控制台默认提供如下ClusterRole。
  • view(只读权限):对全部或所选命名空间下大多数资源的只读权限。
  • edit(开发权限):对全部或所选命名空间下多数资源的读写权限。当配置在全部命名空间时能力与运维权限一致。
  • admin(运维权限):对全部命名空间下大多数资源的读写权限,对节点、存储卷,命名空间和配额管理的只读权限。
  • cluster-admin(管理员权限):对全部命名空间下所有资源的读写权限。
  • drainage-editor:节点排水操作权限,可执行节点排水。
  • drainage-viewer:节点排水只读权限,仅可查看节点排水状态,无法执行节点排水。
  • geip-editor-role:该权限用于在集群中使用全域弹性公网IP资源,仅对资源geips具有读写权限。
  • icagent-clusterRole:该权限用于生成Kubernetes事件日志上报到LTS。

除了使用上述常用的ClusterRole外,您还可以通过定义Role和RoleBinding来进一步对全局资源(如Node、PersistentVolumes、CustomResourceDefinitions等)和命名空间中不同类别资源(如Pod、Deployment、Service等)的增删改查权限进行配置,从而做到更加精细化的权限控制。