更新时间:2023-12-15 gmt 08:00

cce权限概述-凯发k8国际娱乐官网入口

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

如果您需要对cce集群及相关资源进行精细的权限管理,例如限制不同部门的员工拥有部门内资源的细粒度权限,您可以使用cce权限管理提供的增强能力进行多维度的权限管理。

本章节将介绍cce权限管理机制及其涉及到的基本概念。如果当前账号已经能满足您的要求,您可以跳过本章节,不影响您使用cce服务的其它功能。

cce支持的权限管理能力

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

    集群权限涉及cce非kubernetes api,支持iam细粒度策略、企业项目管理相关能力。

  • 命名空间权限是基于kubernetes rbac(role-based access control,基于角色的访问控制)能力的授权,通过权限设置可以让不同的用户或用户组拥有操作不同kubernetes资源的权限。同时cce基于开源能力进行了增强,可以支持基于iam用户或用户组粒度进行rbac授权、iam token直接访问api进行rbac认证鉴权。

    命名空间权限涉及cce kubernetes api,基于kubernetes rbac能力进行增强,支持对接iam用户/用户组进行授权和认证鉴权,但与iam细粒度策略独立。

cce的权限可以从使用的阶段分为两个阶段来看,第一个阶段是创建和管理集群的权限,也就是拥有创建/删除集群、节点等资源的权限。第二个阶段是使用集群kubernetes资源(如工作负载、service等)的权限。

图1 权限示例图

清楚了集群权限和命名空间权限后,您就可以通过这两步授权,做到精细化的权限控制。

集群权限(iam授权)与命名空间权限(kubernetes rbac授权)的关系

拥有不同集群权限(iam授权)的用户,其拥有的命名空间权限(kubernetes rbac授权)不同。表1给出了不同用户拥有的命名空间权限详情。

表1 不同用户拥有的命名空间权限

用户类型

1.13及以上版本的集群

拥有tenant administrator权限的用户(例如账号)

全部命名空间权限

拥有cce administrator权限的iam用户

全部命名空间权限

拥有cce fullaccess或者cce readonlyaccess权限的iam用户

按kubernetes rbac授权

拥有tenant guest权限的iam用户

按kubernetes rbac授权

kubectl权限说明

您可以通过的kubernetes资源,那kubectl拥有哪些kubernetes资源的权限呢?

kubectl访问cce集群是通过集群上生成的配置文件(kubeconfig.json)进行认证,kubeconfig.json文件内包含用户信息,cce根据用户信息的权限判断kubectl有权限访问哪些kubernetes资源。即哪个用户获取的kubeconfig.json文件,kubeconfig.json就拥有哪个用户的信息,这样使用kubectl访问时就拥有这个用户的权限。而用户拥有的权限就是表1所示的权限。

联邦用户支持说明

iam支持基于saml、oidc协议的单点登录,如果您已经有自己的企业管理系统,同时您的用户需要使用您账号内的云服务资源,您可以使用iam的身份提供商功能,实现用户使用企业管理系统账号单点登录,这一过程称之为联邦身份认证。

通过联邦身份认证访问的用户称为联邦用户,联邦用户相当于iam用户。

联邦用户使用cce时需要注意如下两点。

  • 用户创建cce集群时,会在集群中默认为该用户创建一个cluster-admin权限(管理员权限),联邦用户由于每次登录注销都会改变用户id,所以在cce控制台权限管理处,权限用户会显示已删除,请勿删除该权限,否则会导致鉴权失败。此种情况下建议在cce为某个用户组创建cluster-admin权限,将联邦用户加入此用户组。
  • 联邦用户不支持创建永久访问密钥ak/sk,在需要使用ak/sk的场景(如创建obs类型pv/pvc时),只能由账号或是实体iam用户创建密钥,共享给联邦用户。由于密钥表示用户所拥有的权限,因此建议由与联邦用户同在一个用户组的实体iam用户创建并分享密钥。

iam支持的授权项

策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与api相对应,授权项列表说明如下:

  • 权限:允许或拒绝某项操作。
  • 对应api接口:自定义策略实际调用的api接口。
  • 授权项:自定义策略中支持的action,在自定义策略中的action中写入授权项,可以实现授权项对应的权限功能。
  • 依赖的授权项:部分action存在对其他action的依赖,需要将依赖的action同时写入授权项,才能实现对应的权限功能。
  • iam项目(project)/企业项目(enterprise project):自定义策略的授权范围,包括iam项目与企业项目。授权范围如果同时支持iam项目和企业项目,表示此授权项对应的自定义策略,可以在iam和企业管理两个服务中给用户组授权并生效。如果仅支持iam项目,不支持企业项目,表示仅能在iam中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。关于iam项目与企业项目的区别,详情请参见:。

“√”表示支持,“x”表示暂不支持。

云容器引擎(cce)支持的自定义策略授权项如下所示:

表2 cluster

权限

对应api接口

授权项(action)

iam项目(project)

企业项目 (enterprise project)

获取指定项目下的集群

get /api/v3/projects/{project_id}/clusters

cce:cluster:list

获取指定的集群

get /api/v3/projects/{project_id}/clusters/{cluster_id}

cce:cluster:get

创建集群

post /api/v3/projects/{project_id}/clusters

cce:cluster:create

更新指定的集群

put /api/v3/projects/{project_id}/clusters/{cluster_id}

cce:cluster:update

删除集群

delete /api/v3/projects/{project_id}/clusters/{cluster_id}

cce:cluster:delete

升级集群

post /api/v2/projects/:projectid/clusters/:clusterid/upgrade

cce:cluster:upgrade

唤醒集群

post /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/awake

cce:cluster:start

休眠集群

post /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/hibernate

cce:cluster:stop

变更集群规格

post /api/v2/projects/{project_id}/clusters/:clusterid/resize

cce:cluster:resize

获取集群证书

post /api/v3/projects/{project_id}/clusters/{cluster_id}/clustercert

cce:cluster:get

表3 node

权限

对应api接口

授权项

iam项目(project)

企业项目 (enterprise project)

获取集群下所有节点

get /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes

cce:node:list

获取指定的节点

get /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/{node_id}

cce:node:get

创建节点

post /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes

cce:node:create

说明:

使用企业项目授权创建节点需额外添加evs:quota:get的全局权限。

更新指定的节点

put /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/{node_id}

cce:node:update

删除节点

delete /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/{node_id}

cce:node:delete

表4 job

权限

对应api接口

授权项

iam项目(project)

企业项目 (enterprise project)

获取任务信息

get /api/v3/projects/{project_id}/jobs/{job_id}

cce:job:get

列出所有任务

get /api/v2/projects/{project_id}/jobs

cce:job:list

删除所有任务或删除单个任务

delete /api/v2/projects/{project_id}/jobs

delete /api/v2/projects/{project_id}/jobs/{job_id}

cce:job:delete

表5 nodepool

权限

对应api接口

授权项

iam项目(project)

企业项目 (enterprise project)

获取集群下所有节点池

get /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools

cce:nodepool:list

获取节点池

get /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools/{nodepool_id}

cce:nodepool:get

创建节点池

post /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools

cce:nodepool:create

更新节点池信息

put /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools/{nodepool_id}

cce:nodepool:update

删除节点池

delete /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools/{nodepool_id}

cce:nodepool:delete

表6 chart

权限

对应api接口

授权项

iam项目(project)

企业项目 (enterprise project)

更新模板

put /v2/charts/{id}

cce:chart:update

×

上传模板

post /v2/charts

cce:chart:upload

×

列出所有模板

get /v2/charts

cce:chart:list

×

获取模板信息

get /v2/charts/{id}

cce:chart:get

×

删除模板

delete /v2/charts/{id}

cce:chart:delete

×

表7 release

权限

对应api接口

授权项

iam项目(project)

企业项目 (enterprise project)

更新升级模板实例

put /v2/releases/{name}

cce:release:update

列出所有模板实例

get /v2/releases

cce:release:list

创建模板实例

post /v2/releases

cce:release:create

获取模板实例信息

get /v2/releases/{name}

cce:release:get

删除模板实例

delete /v2/releases/{name}

cce:release:delete

表8 storage

权限

对应api接口

授权项

iam项目(project)

企业项目 (enterprise project)

创建persistentvolumeclaim

post /api/v1/namespaces/{namespace}/cloudpersistentvolumeclaims

cce:storage:create

删除persistentvolumeclaim

delete /api/v1/namespaces/{namespace}/cloudpersistentvolumeclaims/{name}

cce:storage:delete

列出所有磁盘

get /storage/api/v1/namespaces/{namespace}/listvolumes

cce:storage:list

表9 addon

权限

对应api接口

授权项

iam项目(project)

企业项目 (enterprise project)

创建插件实例

post /api/v3/addons

cce:addoninstance:create

获取插件实例

get /api/v3/addons/{id}?cluster_id={cluster_id}

cce:addoninstance:get

列出所有插件实例

get /api/v3/addons?cluster_id={cluster_id}

cce:addoninstance:list

删除插件实例

delete /api/v3/addons/{id}?cluster_id={cluster_id}

cce:addoninstance:delete

更新升级插件实例

put /api/v3/addons/{id}

cce:addoninstance:update

表10 quota

权限

对应api接口

授权项

iam项目(project)

企业项目 (enterprise project)

查询配额详情

get /api/v3/projects/{project_id}/quotas

cce:quota:get

分享:
网站地图