文档首页/ 云容器引擎 CCE/ 用户指南/ 权限/ 集群权限(IAM授权)
更新时间:2024-11-12 GMT+08:00

集群权限(IAM授权)

CCE集群权限是基于IAM系统策略自定义策略的授权,可以通过用户组功能实现IAM用户的授权。

  • 集群权限仅针对与集群相关的资源(如集群、节点等)有效,您必须确保同时配置了命名空间权限,才能有操作Kubernetes资源(如工作负载、Service等)的权限。
  • 使用CCE控制台查看集群时,显示情况依赖于命名空间权限的设置情况,如果没有设置命名空间权限,则无法查看集群下的资源,详情请参见CCE控制台的权限依赖

前提条件

  • 给用户组授权之前,请您了解用户组可以添加的CCE系统策略,并结合实际需求进行选择,CCE支持的系统策略及策略间的对比,请参见CCE系统权限。若您需要对除CCE之外的其它服务授权,IAM支持服务的所有策略请参见系统权限
  • 拥有Security Administrator(IAM除切换角色外所有权限)权限的用户(如账号默认拥有此权限),才能看见CCE控制台权限管理页面当前用户组及用户组所拥有的权限。

配置说明

CCE控制台“权限管理 > 集群权限”页面中创建用户组和具体权限设置均是跳转到IAM控制台进行具体操作,设置完后在集群权限页面能看到用户组所拥有的权限。本章节描述操作直接以IAM中操作为主,不重复介绍在CCE控制台如何跳转。

示例流程

图1 给用户授予CCE权限流程

  1. 创建用户组并授权

    在IAM控制台创建用户组,并授予CCE权限,例如CCE ReadOnlyAccess。

    CCE服务按区域部署,在IAM控制台授予CCE权限时请选择“区域级项目”

  2. 创建用户并加入用户组

    在IAM控制台创建用户,并将其加入1中创建的用户组。

    通过IAM用户使用CCE时,该IAM用户需要同时支持“编程访问”“管理控制台访问”的访问方式。

  3. 用户登录并验证权限。

    新创建的用户登录控制台,切换至授权区域,验证权限:

    • 在“服务列表”中选择云容器引擎,进入CCE主界面尝试购买集群,如果无法无法成功操作(假设当前权限仅包含CCE ReadOnlyAccess),表示“CCE ReadOnlyAccess”已生效。
    • 在“服务列表”中选择除云容器引擎外(假设当前策略仅包含CCE ReadOnlyAccess)的任一服务,若提示权限不足,表示“CCE ReadOnlyAccess”已生效。

系统角色

角色是IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。

IAM中预置的CCE系统角色为CCE Administrator,给用户组授予该系统角色权限时,必须同时勾选该角色依赖的其他策略才会生效,例如Tenant Guest、Server Administrator、ELB Administrator、OBS Administrator、SFS Administrator、SWR Admin、APM FullAccess。了解更多角色依赖关系,请参考:系统权限

系统策略

IAM中预置的CCE系统策略当前包含CCE FullAccessCCE ReadOnlyAccess两种策略:

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

购买包周期集群、节点时,需要为用户添加自定义策略,额外配置费用中心服务的支付相关权限,如bss:*:*。

表1 CCE FullAccess策略主要权限

操作(Action)

Action详情

说明

cce:*:*

cce:cluster:create

创建集群

cce:cluster:delete

删除集群

cce:cluster:update

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

cce:cluster:upgrade

升级集群

cce:cluster:start

唤醒集群

cce:cluster:stop

休眠集群

cce:cluster:list

查询集群列表

cce:cluster:get

查询集群详情

cce:node:create

添加节点

cce:node:delete

删除节点/批量删除节点

cce:node:update

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

cce:node:get

查询节点详情

cce:node:list

查询节点列表

cce:nodepool:create

创建节点池

cce:nodepool:delete

删除节点池

cce:nodepool:update

更新节点池信息

cce:nodepool:get

获取节点池

cce:nodepool:list

列出集群的所有节点池

cce:release:create

创建模板实例

cce:release:delete

删除模板实例

cce:release:update

更新升级模板实例

cce:job:list

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

cce:job:delete

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

cce:job:get

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

cce:storage:create

创建存储

cce:storage:delete

删除存储

cce:storage:list

列出所有磁盘

cce:addonInstance:create

创建插件实例

cce:addonInstance:delete

删除插件实例

cce:addonInstance:update

更新升级插件实例

cce:addonInstance:get

获取插件实例

cce:addonTemplate:get

获取插件模板

cce:addonInstance:list

列出所有插件实例

cce:addonTemplate:list

列出所有插件模板

cce:chart:list

列出所有模板

cce:chart:delete

删除模板

cce:chart:update

更新模板

cce:chart:upload

上传模板

cce:chart:get

获取模板信息

cce:release:get

获取模板实例信息

cce:release:list

列出所有模板实例

cce:userAuthorization:get

获取CCE用户授权

cce:userAuthorization:create

创建CCE用户授权

ecs:*:*

-

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

evs:*:*

-

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

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

vpc:*:*

-

VPC(虚拟私有云,包含二代ELB)的所有权限。

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

bms:*:get*

-

BMS(裸金属服务器)所有资源详情的查看权限。

bms:*:list*

-

BMS(裸金属服务器)所有资源列表的查看权限。

ims:*:get*

-

IMS(镜像服务)所有资源详情的查看权限。

ims:*:list*

-

IMS(镜像服务)所有资源列表的查看权限。

elb:*:get

-

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

elb:*:list

-

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

nat:*:get

-

NAT网关服务所有资源详情的查看权限。

nat:*:list

-

NAT网关服务所有资源列表的查看权限。

sfs:*:get*

-

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

sfs:shares:ShareAction

-

SFS(弹性文件存储)资源的扩容共享。

sfsturbo:*:get*

-

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

sfsturbo:shares:ShareAction

-

SFS Turbo(极速弹性文件存储)资源的扩容共享。

tms:resourceTags:list

-

TMS(标签管理服务)资源标签列表查看权限。

kps:domainKeypairs:list

-

DEW(数据加密服务)账号密钥对的SSH密钥列表查看权限。

kps:domainKeypairs:get

-

DEW(数据加密服务)账号密钥对的SSH密钥详情查看权限。

kms:cmk:get

-

DEW(数据加密服务)查看密钥信息权限。

kms:cmk:list

-

DEW(数据加密服务)查看密钥列表权限。

aom:*:get

-

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

aom:*:list

-

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

aom:autoScalingRule:*

-

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

apm:icmgr:*

-

APM(应用性能管理服务)操作ICAgent权限。

lts:*:*

-

LTS(云日志服务)的所有权限。

smn:*:*

-

SMN(消息通知服务)的所有权限。

表2 CCE ReadOnlyAccess策略主要权限

操作(Action)

操作(Action)

说明

cce:*:get

cce:cluster:get

查询集群详情

cce:node:get

查询节点详情

cce:job:get

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

cce:addonInstance:get

获取插件实例

cce:addonTemplate:get

获取插件模板

cce:chart:get

获取模板信息

cce:nodepool:get

获取节点池

cce:release:get

获取模板实例信息

cce:userAuthorization:get

获取CCE用户授权

cce:*:list

cce:cluster:list

查询集群列表

cce:node:list

查询节点列表

cce:job:list

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

cce:addonInstance:list

列出所有插件实例

cce:addonTemplate:list

列出所有插件模板

cce:chart:list

列出所有模板

cce:nodepool:list

列出集群的所有节点池

cce:release:list

列出所有模板实例

cce:storage:list

列出所有磁盘

cce:kubernetes:*

-

操作所有Kubernetes资源,具体权限请在命名空间权限中配置。

ecs:*:get

-

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

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

ecs:*:list

-

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

bms:*:get*

-

BMS(裸金属服务器)所有资源详情的查看权限。

bms:*:list

-

BMS(裸金属服务器)所有资源列表的查看权限。

ims:*:get*

-

IMS(镜像服务)所有资源详情的查看权限。

ims:*:list*

-

IMS(镜像服务)所有资源列表的查看权限。

evs:*:get

-

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

evs:*:list

-

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

evs:*:count

-

-

vpc:*:get

-

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

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

vpc:*:list

-

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

elb:*:get

-

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

elb:*:list

-

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

nat:*:get

-

NAT网关服务所有资源详情的查看权限。

nat:*:list

-

NAT网关服务所有资源列表的查看权限。

sfs:*:get*

-

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

sfs:shares:ShareAction

-

SFS(弹性文件存储)资源的扩容共享。

sfsturbo:*:get*

-

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

sfsturbo:shares:ShareAction

-

SFS Turbo(极速弹性文件存储)资源的扩容共享。

tms:resourceTags:list

-

TMS(标签管理服务)资源标签列表查看权限。

kps:domainKeypairs:list

-

DEW(数据加密服务)账号密钥对的SSH密钥列表查看权限。

kps:domainKeypairs:get

-

DEW(数据加密服务)账号密钥对的SSH密钥详情查看权限。

kms:cmk:get

-

DEW(数据加密服务)查看密钥信息权限。

kms:cmk:list

-

DEW(数据加密服务)查看密钥列表权限。

aom:*:get

-

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

aom:*:list

-

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

aom:autoScalingRule:*

-

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

lts:*:get

-

LTS(云日志服务)的所有资源详情的查看权限。

lts:*:list

-

LTS(云日志服务)的所有资源列表的查看权限。

smn:*:get

-

SMN(消息通知服务)所有资源详情的查看权限。

smn:*:list

-

SMN(消息通知服务)所有资源列表的查看权限。

自定义策略

如果系统预置的CCE策略,不满足您的授权要求,可以创建自定义策略。自定义策略中可以添加的授权项(Action)请参考权限策略和授权项

目前支持以下两种方式创建自定义策略:

  • 可视化视图创建自定义策略:无需了解策略语法,按可视化视图导航栏选择云服务、操作、资源、条件等策略内容,可自动生成策略。
  • JSON视图创建自定义策略:可以在选择策略模板后,根据具体需求编辑策略内容;也可以直接在编辑框内编写JSON格式的策略内容。

具体创建步骤请参见:创建自定义策略。本章为您介绍常用的CCE自定义策略样例。

CCE自定义策略样例:

  • 示例1:创建一个名称为“test”的集群
    {
        "Version": "1.1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "cce:cluster:create"
                ]
            }
        ]
    }
  • 示例2:拒绝用户删除节点

    拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则

    如果您给用户授予CCEFullAccess的系统策略,但不希望用户拥有CCEFullAccess中定义的删除节点权限(cce:node:delete),您可以创建一条相同Action的自定义策略,并将自定义策略的Effect设置为Deny,然后同时将CCEFullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对CCE执行除了删除节点外的所有操作。拒绝策略示例如下:

    {
        "Version": "1.1",
        "Statement": [
            {
                "Effect": "Deny",
                "Action": [
                    "cce:node:delete"
                ]
            }
        ]
    }
  • 示例3:多个授权项策略

    一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是项目级服务或都是全局级服务。多个授权语句策略描述如下:

    {
        "Version": "1.1",
        "Statement": [
            {
                "Action": [
                    "ecs:cloudServers:resize",
                    "ecs:cloudServers:delete",
                    "ecs:cloudServers:delete",
                    "ims:images:list",
                    "ims:serverImages:create"
                ],
                "Effect": "Allow"
            }
        ]
    }

CCE集群权限与企业项目

CCE支持以集群为粒度,基于企业项目维度进行资源管理以及权限分配。

如下事项需特别注意:

  • IAM项目是基于资源的物理隔离进行管理,而企业项目则是提供资源的全局逻辑分组,更符合企业实际场景,并且支持基于企业项目维度的IAM策略管理,因此推荐您使用企业项目。详细信息请参见如何创建企业项目
  • IAM项目与企业项目共存时,IAM将优先匹配IAM项目策略、未决则匹配企业项目策略。
  • CCE集群基于已有基础资源(VPC)创建集群、节点时,请确保IAM用户在已有资源的企业项目下有相关权限,否则可能导致集群或者节点创建失败。
  • 当资源不支持企业项目时,为企业项目授予该资源的权限将不会生效。

    是否支持企业项目

    资源名称

    说明

    支持企业项目的资源

    cluster

    集群

    node

    节点

    nodepool

    节点池

    job

    任务

    tag

    集群标签

    addonInstance

    插件实例

    release

    Helm版本

    storage

    存储资源

    不支持企业项目的资源

    quota

    集群配额

    chart

    模板

    addonTemplate

    插件模板

CCE集群权限与IAM RBAC

CCE兼容IAM传统的系统角色进行权限管理,建议您切换使用IAM的细粒度策略,避免设置过于复杂或不必要的权限管理场景。

CCE当前支持的角色如下:

  • IAM的基础角色:
    • te_admin(Tenant Administrator):可以调用除IAM外所有服务的所有API。
    • readonly(Tenant Guest):可以调用除IAM外所有服务的只读权限的API。
  • CCE的自定义管理员角色:CCE Administrator。

如果用户有Tenant Administrator或者CCE Administrator的系统角色,则此用户拥有Kubernetes RBAC的cluster-admin权限,在集群创建后不可移除。

如果用户为集群创建者,则默认被授权Kubernetes RBAC的cluster-admin权限,此项权限可以在集群创建后被手动移除:
  • 方式1:权限管理 - 命名空间权限 - 移除cluster-creator。
  • 方式2:通过API或者kubectl删除资源,ClusterRoleBinding:cluster-creator。

RBAC与IAM策略共存时,CCE开放API或Console操作的后端鉴权逻辑如下: