CCE Autopilot集群权限概述
CCE权限管理是在统一身份认证服务(IAM)与Kubernetes的角色访问控制(RBAC)的能力基础上,打造的细粒度权限管理功能,支持基于IAM的细粒度权限控制和IAM Token认证,支持集群级别、命名空间级别的权限控制,帮助用户便捷灵活的对租户下的IAM用户、用户组设定不同的操作权限。
如果您需要对CCE集群及相关资源进行精细的权限管理,例如限制不同部门的员工拥有部门内资源的细粒度权限,您可以使用CCE权限管理提供的增强能力进行多维度的权限管理。
本章节将介绍CCE权限管理机制及其涉及到的基本概念。如果当前账号已经能满足您的要求,您可以跳过本章节,不影响您使用CCE服务的其它功能。
CCE权限管理相关策略适用于所有CCE产品,包括CCE Standard/Turbo/Autopilot集群。CCE Autopilot集群产品形态导致的差异,将特殊标注说明。
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等)的权限。
清楚了集群权限和命名空间权限后,您就可以通过这两步授权,做到精细化的权限控制。
集群权限(IAM授权)与命名空间权限(Kubernetes RBAC授权)的关系
拥有不同集群权限(IAM授权)的用户,其拥有的命名空间权限(Kubernetes RBAC授权)也不同。表1给出了不同用户拥有的命名空间权限详情。
kubectl权限说明
您可以通过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项目与企业项目的区别,详情请参见:IAM与企业管理的区别。
“√”表示支持,“x”表示暂不支持。
云容器引擎(CCE)支持的自定义策略授权项如下所示:
权限 |
对应API接口 |
授权项(Action) |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
获取指定项目下的集群 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/clusters [Autopilot] GET /autopilot/v3/projects/{project_id}/clusters |
cce:cluster:list |
√ |
√ |
获取指定的集群 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/clusters/{cluster_id} [Autopilot] GET /autopilot/v3/projects/{project_id}/clusters/{cluster_id} |
cce:cluster:get |
√ |
√ |
创建集群 |
[Standard/Turbo] POST /api/v3/projects/{project_id}/clusters [Autopilot] POST /autopilot/v3/projects/{project_id}/clusters |
cce:cluster:create |
√ |
√ |
更新指定的集群 |
[Standard/Turbo] PUT /api/v3/projects/{project_id}/clusters/{cluster_id} [Autopilot] PUT /autopilot/v3/projects/{project_id}/clusters/{cluster_id} |
cce:cluster:update |
√ |
√ |
删除集群 |
[Standard/Turbo] DELETE /api/v3/projects/{project_id}/clusters/{cluster_id} [Autopilot] DELETE /autopilot/v3/projects/{project_id}/clusters/{cluster_id} |
cce:cluster:delete |
√ |
√ |
升级集群 |
[Standard/Turbo] POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgrade [Autopilot] POST /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgrade |
cce:cluster:upgrade |
√ |
√ |
唤醒集群 |
[Standard/Turbo] POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/awake [Autopilot] 不涉及 |
cce:cluster:start |
√ |
√ |
休眠集群 |
[Standard/Turbo] POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/hibernate [Autopilot] 不涉及 |
cce:cluster:stop |
√ |
√ |
变更集群规格 |
[Standard/Turbo] POST /api/v2/projects/{project_id}/clusters/:clusterid/resize [Autopilot] 不涉及 |
cce:cluster:resize |
√ |
√ |
绑定、解绑集群公网APIServer地址 |
[Standard/Turbo] PUT /api/v3/projects/{project_id}/clusters/{cluster_id}/mastereip [Autopilot] PUT /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/mastereip |
cce:cluster:update |
√ |
√ |
获取集群证书 |
[Standard/Turbo] POST /api/v3/projects/{project_id}/clusters/{cluster_id}/clustercert [Autopilot] POST /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/clustercert |
cce:cluster:get |
√ |
√ |
权限 |
对应API接口 |
授权项 |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
获取集群下所有节点 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes [Autopilot] 不涉及 |
cce:node:list |
√ |
√ |
获取指定的节点 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/{node_id} [Autopilot] 不涉及 |
cce:node:get |
√ |
√ |
创建节点 |
[Standard/Turbo] POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes [Autopilot] 不涉及 |
cce:node:create |
√ |
√
说明:
使用企业项目授权创建节点需额外添加evs:quota:get的全局权限。 |
更新指定的节点 |
[Standard/Turbo] PUT /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/{node_id} [Autopilot] 不涉及 |
cce:node:update |
√ |
√ |
删除节点 |
[Standard/Turbo] DELETE /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/{node_id} [Autopilot] 不涉及 |
cce:node:delete |
√ |
√ |
权限 |
对应API接口 |
授权项 |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
获取任务信息 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/jobs/{job_id} [Autopilot] GET /autopilot/v3/projects/{project_id}/jobs/{job_id} |
cce:job:get |
√ |
√ |
列出所有任务 |
[Standard/Turbo] GET /api/v2/projects/{project_id}/jobs [Autopilot] GET /autopilot/v2/projects/{project_id}/jobs |
cce:job:list |
√ |
√ |
删除所有任务或删除单个任务 |
[Standard/Turbo] DELETE /api/v2/projects/{project_id}/jobs DELETE /api/v2/projects/{project_id}/jobs/{job_id} [Autopilot] DELETE /autopilot/v2/projects/{project_id}/jobs DELETE /autopilot/v2/projects/{project_id}/jobs/{job_id} |
cce:job:delete |
√ |
√ |
权限 |
对应API接口 |
授权项 |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
获取集群下所有节点池 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools [Autopilot] 不涉及 |
cce:nodepool:list |
√ |
√ |
获取节点池 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools/{nodepool_id} [Autopilot] 不涉及 |
cce:nodepool:get |
√ |
√ |
创建节点池 |
[Standard/Turbo] POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools [Autopilot] 不涉及 |
cce:nodepool:create |
√ |
√ |
更新节点池信息 |
[Standard/Turbo] PUT /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools/{nodepool_id} [Autopilot] 不涉及 |
cce:nodepool:update |
√ |
√ |
删除节点池 |
[Standard/Turbo] DELETE /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools/{nodepool_id} [Autopilot] 不涉及 |
cce:nodepool:delete |
√ |
√ |
权限 |
对应API接口 |
授权项 |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
更新模板 |
[Standard/Turbo] PUT /v2/charts/{id} [Autopilot] POST /autopilot/v2/charts |
cce:chart:update |
√ |
× |
上传模板 |
[Standard/Turbo] POST /v2/charts [Autopilot] POST /autopilot/v2/charts |
cce:chart:upload |
√ |
× |
下载模板 |
[Standard/Turbo] GET /v2/charts/{id}/archive [Autopilot] GET /autopilot/v2/charts/{id}/archive |
cce:chart:get |
√ |
× |
列出所有模板 |
[Standard/Turbo] GET /v2/charts [Autopilot] GET /autopilot/v2/charts |
cce:chart:list |
√ |
× |
获取模板信息 |
[Standard/Turbo] GET /v2/charts/{id} [Autopilot] GET /autopilot/v2/charts/{id} |
cce:chart:get |
√ |
× |
获取模板Values |
[Standard/Turbo] GET /v2/charts/{id}/values [Autopilot] GET /autopilot/v2/charts/{id}/values |
cce:chart:get |
√ |
× |
删除模板 |
[Standard/Turbo] DELETE /v2/charts/{id} [Autopilot] DELETE /autopilot/v2/charts/{id} |
cce:chart:delete |
√ |
× |
获取用户模板配额 |
[Standard/Turbo] GET /v2/charts/{project_id}/quotas [Autopilot] GET /autopilot/v2/charts/{project_id}/quotas |
cce:chart:list |
√ |
× |
权限 |
对应API接口 |
授权项 |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
更新升级模板实例 |
[Standard/Turbo] PUT /cce/cam/v3/clusters/{cluster_id}/namespace/{namespace}/releases/{name} PUT /v2/releases/{name}(已废弃) [Autopilot] PUT /autopilot/cam/v3/clusters/{cluster_id}/namespace/{namespace}/releases/{name} |
cce:release:update |
√ |
√ |
列出所有模板实例 |
[Standard/Turbo] GET /cce/cam/v3/clusters/{cluster_id}/releases GET /v2/releases(已废弃) [Autopilot] GET /autopilot/cam/v3/clusters/{cluster_id}/releases |
cce:release:list |
√ |
√ |
创建模板实例 |
[Standard/Turbo] POST /cce/cam/v3/clusters/{cluster_id}/releases POST /v2/releases(已废弃) [Autopilot] POST /autopilot/cam/v3/clusters/{cluster_id}/releases |
cce:release:create |
√ |
√ |
获取模板实例信息 |
[Standard/Turbo] GET /cce/cam/v3/clusters/{cluster_id}/namespace/{namespace}/releases/{name} GET /v2/releases/{name}(已废弃) [Autopilot] GET /autopilot/cam/v3/clusters/{cluster_id}/namespace/{namespace}/releases/{name} |
cce:release:get |
√ |
√ |
查询指定模板实例历史记录 |
[Standard/Turbo] GET /cce/cam/v3/clusters/{cluster_id}/namespace/{namespace}/releases/{name}/history GET /v2/releases/{name}/history(已废弃) [Autopilot] GET /autopilot/cam/v3/clusters/{cluster_id}/namespace/{namespace}/releases/{name} |
cce:release:get |
√ |
√ |
删除模板实例 |
[Standard/Turbo] DELETE /cce/cam/v3/clusters/{cluster_id}/namespace/{namespace}/releases/{name} DELETE /v2/releases/{name}(已废弃) [Autopilot] DELETE /autopilot/cam/v3/clusters/{cluster_id}/namespace/{namespace}/releases/{name} |
cce:release:delete |
√ |
√ |
权限 |
对应API接口 |
授权项 |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
创建PersistentVolumeClaim(待废弃) |
[Standard/Turbo] POST /api/v1/namespaces/{namespace}/cloudpersistentvolumeclaims [Autopilot] 不涉及 |
cce:storage:create |
√ |
√ |
删除PersistentVolumeClaim(待废弃) |
[Standard/Turbo] DELETE /api/v1/namespaces/{namespace}/cloudpersistentvolumeclaims/{name} [Autopilot] 不涉及 |
cce:storage:delete |
√ |
√ |
列出所有磁盘 |
[Standard/Turbo] GET /storage/api/v1/namespaces/{namespace}/listvolumes [Autopilot] 不涉及 |
cce:storage:list |
√ |
√ |
权限 |
对应API接口 |
授权项 |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
列出所有插件模板 |
[Standard/Turbo] GET /api/v3/addontemplate [Autopilot] GET /autopilot/v3/addontemplates |
cce:addonTemplate:get |
√ |
x |
创建插件实例 |
[Standard/Turbo] POST /api/v3/addons [Autopilot] POST /autopilot/v3/addons |
cce:addonInstance:create |
√ |
√ |
获取插件实例 |
[Standard/Turbo] GET /api/v3/addons/{id}?cluster_id={cluster_id} [Autopilot] GET /autopilot/v3/addons/{id} |
cce:addonInstance:get |
√ |
√ |
列出所有插件实例 |
[Standard/Turbo] GET /api/v3/addons?cluster_id={cluster_id} [Autopilot] GET /autopilot/v3/addons?cluster_id={cluster_id} |
cce:addonInstance:list |
√ |
√ |
删除插件实例 |
[Standard/Turbo] DELETE /api/v3/addons/{id} [Autopilot] DELETE /autopilot/v3/addons/{id} |
cce:addonInstance:delete |
√ |
√ |
更新升级插件实例 |
[Standard/Turbo] PUT /api/v3/addons/{id} [Autopilot] PUT /autopilot/v3/addons/{id} |
cce:addonInstance:update |
√ |
√ |
权限 |
对应API接口 |
授权项 |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
查询配额详情 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/quotas [Autopilot] GET /autopilot/v3/projects/{project_id}/quotas |
cce:quota:get |
√ |
√ |
权限 |
对应API接口 |
授权项 |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
批量添加指定集群的资源标签 |
[Standard/Turbo] POST /api/v3/projects/{project_id}/clusters/{cluster_id}/tags/create [Autopilot] POST /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/tags/create |
cce:tag:operate |
√ |
√ |
批量删除指定集群的资源标签 |
[Standard/Turbo] POST /api/v3/projects/{project_id}/clusters/{cluster_id}/tags/delete [Autopilot] POST /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/tags/delete |
cce:tag:operate |
√ |
√ |
权限 |
对应API接口 |
授权项 |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
获取集群升级任务详情 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgrade/tasks/{task_id} [Autopilot] GET /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgrade/tasks/{task_id} |
cce:cluster:get |
√ |
√ |
获取集群升级任务详情列表 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgrade/tasks [Autopilot] GET /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgrade/tasks |
cce:cluster:get |
√ |
√ |
重试集群升级任务 |
[Standard/Turbo] POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgrade/retry [Autopilot] POST /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgrade/retry |
cce:cluster:upgrade |
√ |
√ |
集群升级前检查 |
[Standard/Turbo] POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/precheck [Autopilot] POST /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/precheck |
cce:cluster:upgrade |
√ |
√ |
获取集群升级前检查任务详情 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/precheck/tasks/{task_id} [Autopilot] GET /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/precheck/tasks/{task_id} |
cce:cluster:get |
√ |
√ |
获取集群升级前检查任务详情列表 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/precheck/tasks [Autopilot] GET /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/precheck/tasks |
cce:cluster:get |
√ |
√ |
集群升级后确认 |
[Standard/Turbo] POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/postcheck [Autopilot] POST /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/postcheck |
cce:cluster:upgrade |
√ |
√ |
集群备份 |
[Standard/Turbo] POST /api/v3.1/projects/{project_id}/clusters/{cluster_id}/operation/snapshot [Autopilot] POST /autopilot/v3.1/projects/{project_id}/clusters/{cluster_id}/operation/snapshot |
cce:cluster:upgrade |
√ |
√ |
获取集群备份任务详情列表 |
[Standard/Turbo] GET /api/v3.1/projects/{project_id}/clusters/{cluster_id}/operation/snapshot/tasks [Autopilot] GET /autopilot/v3.1/projects/{project_id}/clusters/{cluster_id}/operation/snapshot/tasks |
cce:cluster:get |
√ |
√ |
获取集群升级相关信息 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/clusters/{cluster_id}/upgradeinfo [Autopilot] GET /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/upgradeinfo |
cce:cluster:get |
√ |
√ |
开启集群升级流程引导任务 |
[Standard/Turbo] POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgradeworkflows [Autopilot] POST /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgradeworkflows |
cce:cluster:upgrade |
√ |
√ |
获取历史集群升级引导任务列表 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgradeworkflows [Autopilot] GET /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgradeworkflows |
cce:cluster:get |
√ |
√ |
获取指定集群升级引导任务详情 |
[Standard/Turbo] GET /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgradeworkflows/{upgrade_workflow_id} [Autopilot] GET /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgradeworkflows/{upgrade_workflow_id} |
cce:cluster:get |
√ |
√ |
更新指定集群升级引导任务状态 |
[Standard/Turbo] PATCH /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgradeworkflows/{upgrade_workflow_id} [Autopilot] PATCH /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/upgradeworkflows/{upgrade_workflow_id} |
cce:cluster:upgrade |
√ |
√ |