集群权限(IAM授权)
CCE集群权限是基于IAM系统策略和自定义策略的授权,可以通过用户组功能实现IAM用户的授权。
- 集群权限仅针对与集群相关的资源(如集群、节点等)有效,您必须确保同时配置了命名空间权限,才能有操作Kubernetes资源(如工作负载、Service等)的权限。
- 使用CCE控制台查看集群时,显示情况依赖于命名空间权限的设置情况,如果没有设置命名空间权限,则无法查看集群下的资源。
前提条件
配置说明
CCE控制台“权限管理 > 集群权限”页面中创建用户组和具体权限设置均是跳转到IAM控制台进行具体操作,设置完后在集群权限页面能看到用户组所拥有的权限。本章节描述操作直接以IAM中操作为主,不重复介绍在CCE控制台如何跳转。
示例流程
- 创建用户组并授权。
在IAM控制台创建用户组,并授予CCE权限,例如CCE ReadOnlyAccess。
CCE服务按区域部署,在IAM控制台授予CCE权限时请选择“区域级项目”。
- 创建用户并加入用户组 。
在IAM控制台创建用户,并将其加入1中创建的用户组。
通过IAM用户使用CCE时,该IAM用户需要同时支持“编程访问”和“管理控制台访问”的访问方式。
- 用户登录 并验证权限。
新创建的用户登录控制台,切换至授权区域,验证权限:
- 在“服务列表”中选择云容器引擎,进入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 FullAccess和CCE ReadOnlyAccess两种策略:
- CCE FullAccess:系统策略,CCE服务集群相关资源的普通操作权限,不包括集群(启用Kubernetes RBAC鉴权)的命名空间权限,不包括委托授权、生成集群证书等管理员角色的特权操作。
- CCE ReadOnlyAccess:系统策略,CCE服务集群相关资源的只读权限,不包括集群(启用Kubernetes RBAC鉴权)的命名空间权限。
操作(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(消息通知服务)的所有权限。 |
操作(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权限,在集群创建后不可移除。
- 方式1:权限管理 - 命名空间权限 - 移除cluster-creator。
- 方式2:通过API或者kubectl删除资源,ClusterRoleBinding:cluster-creator。
RBAC与IAM策略共存时,CCE开放API或Console操作的后端鉴权逻辑如下: