角色与策略授权(旧版IAM)
如果您需要对UCS进行角色与策略授权的权限管理,您可以使用统一身份认证服务(Identity and Access Management,简称IAM),通过IAM,您可以:
- 根据企业的业务组织,在您的账号中,给企业中不同职能部门的员工创建IAM用户,让员工拥有唯一安全凭证,并使用UCS资源。
- 根据企业用户的职能,设置不同的访问权限,以达到用户之间的权限隔离。
- 将UCS资源委托给更专业、高效的其他账号或者云服务,这些账号或者云服务可以根据权限进行代运维。
如果账号已经能满足您的要求,不需要创建独立的IAM用户,您可以跳过本章节,不影响您使用UCS服务的其它功能。
本章节为您介绍基于角色授权的授权方法,操作流程如图1所示。
前提条件
配置说明
UCS控制台“权限管理 > 添加权限”页面中创建用户/用户组和具体权限设置均是跳转到IAM控制台进行具体操作,设置完后在集群/容器舰队权限页面能看到用户/用户组所拥有的权限。本章节描述操作直接以IAM中操作为主,不重复介绍在UCS控制台如何跳转。
示例流程
- 创建用户组并授权
在IAM控制台创建用户组,并授予UCS只读权限,例如UCS ReadOnlyAccess。
- 创建用户并加入用户组
在IAM控制台创建用户,并将其加入1中创建的用户组。
- 用户登录并验证权限
新创建的用户登录控制台,切换至授权区域,验证权限:
- 在“服务列表”中选择华为云UCS,进入UCS总览页,单击左侧导航栏“基础设施 > 容器舰队”,如果创建舰队和注册集群时提示无访问权限,表示“UCS ReadOnlyAccess”已生效。
- 在“服务列表”中选择除华为云UCS以外的其他服务(如弹性云服务器 ECS),若提示权限不足,表示“UCS ReadOnlyAccess”已生效。
系统策略
IAM中预置的UCS系统策略包含UCS FullAccess、UCS CommonOperations、UCS CIAOperations和UCS ReadOnlyAccess几种类型。
- UCS FullAccess:系统策略,UCS服务管理员权限,拥有该权限的用户拥有服务的所有权限(包含制定权限策略、安全策略等)。
UCS FullAccess 不直接具有CCE集群的RBAC权限,需要用户到权限管理页面进行CCE集群授权。
- UCS CommonOperations:系统策略,UCS服务基本操作权限,拥有该权限的用户可以执行创建工作负载、流量分发等操作。
- UCS CIAOperations:系统策略,UCS服务容器智能分析管理员权限。
- UCS ReadOnlyAccess:系统策略,UCS服务只读权限(除容器智能分析只读权限)。
您可以通过查看策略内容来了解系统策略所支持的授权项,授权项的格式为“服务名:资源类型:操作”,支持通配符号*,通配符号*表示所有。
例如,UCS FullAccess的策略内容如下所示。可以看出,该策略包含了UCS、CCE(云容器引擎)、SWR(容器镜像服务)的所有权限,AOM(应用运维管理)、SMN(消息通知服务)、DNS(云解析服务)等服务的部分资源的操作权限。
{
"Version": "1.1",
"Statement": [
{
"Action": [
"ucs:*:*",
"cce:*:*",
"swr:*:*",
"aom:*:get",
"aom:*:list",
"smn:*:list",
"dns:*:get*",
"dns:*:list*",
"dns:*:get",
"dns:*:list",
"dns:recordset:create",
"dns:recordset:delete",
"dns:recordset:update",
"dns:tag:get",
"lts:*:get",
"lts:*:list",
"apm:*:get",
"apm:*:list",
"vpcep:epservices:*",
"vpcep:connections:*",
"vpcep:endpoints:*",
"elb:*:get",
"elb:*:list",
"vpc:*:get",
"vpc:*:list",
"ief:*:get",
"ief:*:list",
"cgs:images:operate",
"cgs:*:get",
"cgs:*:list"
],
"Effect": "Allow"
}
]
} | 操作(Action) | Action详情 | 说明 |
|---|---|---|
| ucs:*:* | ucs:ciaInstances:create | 创建容器智能分析实例 |
| ucs:ciaDetectEngines:update | 更新巡检配置 | |
| ucs:permissionsRules:create | 创建权限策略 | |
| ucs:commodityServiceRegions:create | 增加支持的区域 | |
| ucs:clustergroups:delete | 删除集群组 | |
| ucs:clustergroups:create | 创建集群组 | |
| ucs:addonTemplates:create | 创建插件模板 | |
| ucs:traffic:create | 创建域名解析记录集 | |
| ucs:serviceInstances:delete | 删除服务实例 | |
| ucs:ciaAlertRules:create | 创建告警规则 | |
| ucs:clustergroups:update | 更新集群组描述信息、更新集群组关联集群信息或更新集群组关联策略信息 | |
| ucs:servicePlugins:operate | 操作系统插件 | |
| ucs:addonTemplates:offline | 下线插件模板 | |
| ucs:ciaMonitorDashboards:update | 更新容器智能分析dashboard | |
| ucs:ciaMonitorDashboards:delete | 删除容器智能分析dashboard | |
| ucs:serviceSubscriptions:operate | 操作服务订阅,包括增删改 | |
| ucs:servicePackages:operate | 操作服务包 | |
| ucs:ciaMonitorDashboards:create | 创建容器智能分析dashboard | |
| ucs:clusters:create | 创建集群 | |
| ucs:ciaInstanceEndpoints:delete | 断开容器智能分析实例网络接入点 | |
| ucs:permissionsTemplates:update | 更新权限模板 | |
| ucs:commodityServiceBuckets:operate | 操作商品服务OBS桶记录 | |
| ucs:permissionsTemplates:create | 创建权限模板 | |
| ucs:addons:create | 创建插件实例 | |
| ucs:ciaAlerts:update | 清除已触发的告警事件 | |
| ucs:ciaInstances:update | 更新容器智能分析实例 | |
| ucs:clusters:update | 更新集群位置信息或激活集群 | |
| ucs:addonTemplatesVersion:offline | 根据具体版本下线插件模板 | |
| ucs:serviceRegistry:delete | 删除绑定仓库记录 | |
| ucs:ciaMonitorClusters:update | 更新被监控集群配置 | |
| ucs:serviceRegistry:check | 判断是否为管理员用户 | |
| ucs:commodityServices:operate | 操作商品服务 | |
| ucs:addons:delete | 删除插件实例 | |
| ucs:ciaEvents:update | 更新事件 | |
| ucs:ciaAlertRules:update | 更新告警规则 | |
| ucs:serviceOperators:operate | 操作服务Operator | |
| ucs:serviceRegistry:create | 创建绑定仓库记录 | |
| ucs:ciaAlertRules:delete | 删除告警规则 | |
| ucs:ciaInstances:delete | 删除容器智能分析实例 | |
| ucs:serviceInstances:update | 更新服务实例 | |
| ucs:permissionsRules:update | 更新权限策略 | |
| ucs:serviceInstances:create | 创建服务实例 | |
| ucs:permissionsTemplates:delete | 删除权限模板 | |
| ucs:addons:update | 更新插件实例 | |
| ucs:ciaInstanceEndpoints:create | 创建容器智能分析实例网络接入点 | |
| ucs:addonTemplates:delete | 删除插件模板 | |
| ucs:clusters:delete | 删除集群 | |
| ucs:permissionsRules:delete | 删除权限策略 | |
| ucs:workloads:operate | 创建、删除、获取工作负载 | |
| cce:*:* | - | CCE(云容器引擎)服务的所有权限。 |
| swr:*:* | - | SWR(容器镜像服务)服务的所有权限。 |
| aom:*:get | - | AOM(应用运维管理)服务所有资源详情的查看权限。 |
| aom:*:list | - | AOM(应用运维管理)服务所有资源列表的查看权限。 |
| smn:*:list | - | SMN(消息通知服务)服务所有资源列表的查看权限。 |
| dns:*:get* | - | DNS(云解析服务)服务所有资源详情的查看权限。 |
| dns:*:list* | - | DNS(云解析服务)服务所有资源列表的查看权限。 |
| dns:recordset:create | - | DNS(云解析服务)服务创建Record Set权限。 |
| dns:recordset:delete | - | DNS(云解析服务)服务删除Record Set权限。 |
| dns:recordset:update | - | DNS(云解析服务)服务更新Record Set权限。 |
| dns:tag:get | - | DNS(云解析服务)服务查询资源标签权限。 |
| lts:*:get | - | LTS(云日志服务)服务所有资源详情的查看权限。 |
| lts:*:list | - | LTS(云日志服务)服务所有资源列表的查看权限。 |
| apm:*:get | - | APM(应用性能管理)服务所有资源详情的查看权限。 |
| apm:*:list | - | APM(应用性能管理)服务所有资源列表的查看权限。 |
| vpcep:epservices:* | - | VPCEP(VPC终端节点)服务所有终端节点服务的操作权限。 |
| vpcep:connections:* | - | VPCEP(VPC终端节点)服务所有终端节点的连接的操作权限。 |
| vpcep:endpoints:* | - | VPCEP(VPC终端节点)服务所有终端节点的操作权限。 |
| elb:*:get | - | ELB(弹性负载均衡)服务所有资源详情的查看权限。 |
| elb:*:list | - | ELB(弹性负载均衡)服务所有资源列表的查看权限。 |
| vpc:*:get | - | VPC(虚拟私有云)服务所有资源详情的查看权限。 |
| vpc:*:list | - | VPC(虚拟私有云)服务所有资源列表的查看权限。 |
| ief:*:get | - | IEF(智能边缘平台)服务所有资源详情的查看权限。 |
| ief:*:list | - | IEF(智能边缘平台)服务所有资源列表的查看权限。 |
| cgs:images:operate | - | CGS(容器安全服务)服务执行镜像同步和扫描权限。 |
| cgs:*:get | - | CGS(容器安全服务)服务所有资源详情的查看权限。 |
| cgs:*:list | - | CGS(容器安全服务)服务所有资源列表的查看权限。 |
| evs:types:get | - | EVS(云硬盘)服务查询云硬盘类型权限。 |
| 操作(Action) | 操作(Action) | 说明 |
|---|---|---|
| ucs:*:get | ucs:clusters:get | 查询集群详情、查询集群接入信息或查询集群证书信息 |
| ucs:clustergroups:get | 查询集群组详情 | |
| ucs:workloads:get | 查询工作负载详情 | |
| ucs:permissionsRules:get | 查询权限策略详情 | |
| ucs:permissionsTemplates:get | 查询权限模板详情 | |
| ucs:addonTemplates:get | 查询插件模板详情 | |
| ucs:addons:get | 查询插件实例信息 | |
| ucs:serviceSubscriptions:get | 查询服务订阅详情 | |
| ucs:serviceInstances:get | 查询服务实例详情 | |
| ucs:servicePlugins:get | 查询系统插件详情 | |
| ucs:serviceOperators:get | 查询单个服务Operator | |
| ucs:servicePackages:get | 查询服务包及服务包版本详情 | |
| ucs:serviceRegistry:get | 查询绑定的仓库 | |
| ucs:commodityServices:get | 查询商品服务详情 | |
| ucs:commodityServiceRegions:get | 查询支持区域的详情 | |
| ucs:*:list | ucs:clusters:list | 查询集群列表 |
| ucs:clustergroups:list | 查询集群组列表 | |
| ucs:workloads:list | 查询工作负载列表 | |
| ucs:permissionsRules:list | 查询权限策略列表 | |
| ucs:permissionsTemplates:list | 查询权限模板列表 | |
| ucs:traffic:list | 查询域名解析记录集列表 | |
| ucs:serviceSubscriptions:list | 查询服务订阅列表 | |
| ucs:serviceInstances:list | 查询服务实例列表 | |
| ucs:servicePlugins:list | 查询系统插件列表 | |
| ucs:serviceOperators:list | 查询服务Operator列表 | |
| ucs:servicePackages:list | 查询服务包列表 | |
| ucs:serviceRegistry:list | 查询绑定的仓库列表 | |
| ucs:commodityServices:list | 查询商品服务列表 | |
| ucs:commodityServiceRegions:list | 查询支持区域列表 | |
| ucs:commodityServiceBuckets:list | 查询商品服务OBS桶列表 | |
| dns:*:get | - | DNS(云解析服务)服务所有资源详情的查看权限。 |
| dns:*:list | - | DNS(云解析服务)服务所有资源列表的查看权限。 |
| cce:*:get | - | CCE(云容器引擎)服务所有资源详情的查看权限。 |
| cce:*:list | - | CCE(云容器引擎)服务所有资源列表的查看权限。 |
| ief:*:get | - | IEF(智能边缘平台)服务所有资源详情的查看权限。 |
| ief:*:list | - | IEF(智能边缘平台)服务所有资源列表的查看权限。 |
| aom:*:get | - | AOM(应用运维管理)服务所有资源详情的查看权限。 |
| aom:*:list | - | AOM(应用运维管理)服务所有资源列表的查看权限。 |
| elb:*:get | - | ELB(弹性负载均衡)所有资源详情的查看权限。 |
| elb:*:list | - | ELB(弹性负载均衡)所有资源列表的查看权限。 |
| vpc:*:get | - | VPC(虚拟私有云)所有资源详情的查看权限。 创建的集群需要运行在虚拟私有云中,创建命名空间时,需要创建或关联VPC,创建在命名空间的容器都运行在VPC之内 |
| vpc:*:list | - | VPC(虚拟私有云)所有资源列表的查看权限。 |
| swr:*:get | - | SWR(容器镜像服务)所有资源详情的查看权限。 |
| swr:*:list | - | SWR(容器镜像服务)所有资源列表的查看权限。 |
| cgs:*:get | - | CGS(容器安全服务)服务所有资源详情的查看权限。 |
| cgs:*:list | - | CGS(容器安全服务)服务所有资源列表的查看权限。 |
UCS功能所需的最小权限
华为云各服务之间存在业务交互关系,UCS也依赖其他云服务实现一些功能(如镜像仓库、域名解析),因此,上述四种系统策略经常和其他云服务的角色或策略结合使用,以达到精细化授权的目的。管理员在为IAM用户授权时,应该遵循权限最小化的安全实践原则,表3列举了UCS各功能管理员、操作、只读权限所需要的最小权限。
| 功能 | 权限类型 | 权限范围 | 最小权限 |
|---|---|---|---|
| 容器舰队 | 管理员权限 |
| UCS FullAccess |
| 只读权限 | 查询集群、舰队的列表或详情 | UCS ReadOnlyAccess | |
| 华为云集群 | 管理员权限 | 对华为云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的读写权限。 | UCS FullAccess + CCE Administrator |
| 操作权限 | 对华为云集群及集群下大多数Kubernetes资源对象的读写权限,对命名空间、资源配额等Kubernetes资源对象的只读权限。 | UCS CommonOperations + CCE Administrator | |
| 只读权限 | 对华为云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的只读权限。 | UCS ReadOnlyAccess + CCE Administrator | |
| 本地/附着/伙伴云集群 | 管理员权限 | 本地/附着/伙伴云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的读写权限。 | UCS FullAccess |
| 操作权限 | 本地/附着/伙伴云集群及集群下大多数Kubernetes资源对象的读写权限,对命名空间、资源配额等Kubernetes资源对象的只读权限。 | UCS CommonOperations + UCS RBAC权限(需要包含namespaces资源对象的list权限) | |
| 只读权限 | 本地/附着/伙伴云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的只读权限。 | UCS ReadOnlyAccess + UCS RBAC权限(需要包含namespaces资源对象的list权限) | |
| 镜像仓库 | 管理员权限 | 容器镜像服务的所有权限,包括创建组织、上传镜像、查看镜像列表或详情、下载镜像等操作。 | SWR Administrator |
| 权限管理 | 管理员权限 |
说明: 创建权限需要同时授予子用户IAM ReadOnlyAccess权限(IAM服务的只读权限),用于获取IAM用户列表。 | UCS FullAccess + IAM ReadOnlyAccess |
| 只读权限 | 查看权限列表或详情 | UCS ReadOnlyAccess + IAM ReadOnlyAccess | |
| 策略中心 | 管理员权限 |
| UCS FullAccess |
| 只读权限 | 对于已启用策略中心的舰队和集群,拥有该权限的用户可以查看策略列表和查看策略实施详情。 | UCS CommonOperations 或 UCS ReadOnlyAccess | |
| 服务网格 | 管理员权限 | 应用服务网格的所有权限,包括创建网格、添加集群、sidecar注入、查看网格列表或详情、卸载网格等。 | UCS FullAccess + CCE Administrator |
| 流量分发 | 管理员权限 | 创建流量策略、暂停调度策略、删除调度策略等操作。 | (推荐)UCS CommonOperations + DNS Administrator 或 UCS FullAccess + DNS Administrator |
| 只读权限 | 查看流量策略列表或详情 | UCS ReadOnlyAccess + DNS Administrator | |
| 容器智能分析 | 管理员权限 |
| UCS CIAOperations |
自定义策略
如果系统预置的UCS策略,不满足您的授权要求,可以创建自定义策略。自定义策略中可以添加的授权项(Action)请参考权限策略和授权项。
目前支持以下两种方式创建自定义策略:
- 可视化视图创建自定义策略:无需了解策略语法,按可视化视图导航栏选择云服务、操作、资源、条件等策略内容,可自动生成策略。
- JSON视图创建自定义策略:可以在选择策略模板后,根据具体需求编辑策略内容;也可以直接在编辑框内编写JSON格式的策略内容。
具体创建步骤请参见:创建自定义策略。本章为您介绍常用的UCS自定义策略样例。
UCS自定义策略样例:
- 示例1:创建集群
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "ucs:clusters:create" ] } ] } - 示例2:拒绝用户删除集群
拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。
如果您给用户授予UCSFullAccess的系统策略,但不希望用户拥有UCSFullAccess中定义的删除集群权限(ucs:clusters:delete),您可以创建一条相同Action的自定义策略,并将自定义策略的Effect设置为Deny,然后同时将UCSFullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对UCS执行除了删除集群外的所有操作。拒绝策略示例如下:
{ "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "ucs:clusters:delete" ] } ] } -
一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是项目级服务或都是全局级服务。多个授权语句策略描述如下:
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "ucs:clustergroups:create", "ucs:ciaEvents:update", "ucs:addonTemplates:delete" ] }, { "Effect": "Allow", "Action": [ "obs:bucket:GetBucketInventoryConfiguration", "obs:bucket:CreateBucket" ] } ] }
