更新时间:2024-12-26 GMT+08:00
分享

集群权限(IAM授权)

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

  • 集群权限仅针对与集群相关的资源(如集群、节点等)有效,您必须确保同时配置了命名空间权限,才能有操作Kubernetes资源(如工作负载、Service等)的权限。
  • 使用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鉴权)的命名空间权限。

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

表1表2中,“√”表示支持,“x”表示不支持。

表1 CCE FullAccess策略主要权限

操作(Action)

Action详情

CCE Standard/Turbo集群

CCE Autopilot集群

说明

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用户授权

nat:*:*

-

×

NAT网关服务的所有权限。

nat:*:get

-

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

nat:*:list

-

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

vpcep:*:*

-

×

VPCEP(VPC终端节点)的所有权限。

ecs:*:*

-

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

evs:*:*

具体action详见:云硬盘v2接口的授权信息

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

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

vpc:*:*

-

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

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

bms:*:get*

-

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

bms:*:list*

-

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

ims:*:get*

-

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

ims:*:list*

-

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

elb:*:get

-

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

elb:*:list

-

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

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 Standard/Turbo集群

CCE Autopilot集群

说明

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资源,具体权限请在命名空间权限中配置。

nat:*:get

-

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

nat:*:list

-

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

vpcep:*:get

-

×

VPCEP(VPC终端节点)所有资源详情的查看权限。

vpcep:*:list

-

×

VPCEP(VPC终端节点)所有资源列表的查看权限。

ecs:*:get

-

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

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(弹性负载均衡)所有资源列表的查看权限。

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用户在已有资源的企业项目下有相关权限,否则可能导致集群或者节点创建失败。
  • 当资源不支持企业项目时,为企业项目授予该资源的权限将不会生效。
    表3 企业项目资源

    是否支持企业项目

    资源名称

    说明

    支持企业项目的资源

    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操作的后端鉴权逻辑如下:

相关文档