文档首页/ 华为云UCS/ API参考/ 权限和授权项/ 身份策略授权参考(新版IAM)
更新时间:2025-12-19 GMT+08:00
分享

身份策略授权参考(新版IAM)

云服务在IAM预置了常用的权限,称为系统身份策略。如果IAM系统身份策略无法满足授权要求,管理员可以根据各服务支持的授权项,创建IAM自定义身份策略来进行精细的访问控制,IAM自定义身份策略是对系统身份策略的扩展和补充。

除IAM服务外,Organizations服务中的服务控制策略(Service Control Policy,以下简称SCP)也可以使用这些授权项元素设置访问控制策略。

SCP不直接进行授权,只划定权限边界。将SCP绑定到组织单元或者成员账号时,并没有直接对组织单元或成员账号授予操作权限,而是规定了成员账号或组织单元包含的成员账号的授权范围。IAM身份策略授予权限的有效性受SCP限制,只有在SCP允许范围内的权限才能生效。

IAM服务与Organizations服务在使用这些元素进行访问控制时,存在着一些区别,详情请参见:IAM服务与Organizations服务权限访问控制的区别

本章节介绍IAM服务身份策略授权场景中自定义身份策略和组织服务中SCP使用的元素,这些元素包含了操作(Action)、资源(Resource)和条件(Condition)。

操作(Action)

操作(Action)即为身份策略中支持的授权项。

  • “访问级别”列描述如何对操作进行分类(List、Read和Write等)。此分类可帮助您了解在身份策略中相应操作对应的访问级别。
  • “资源类型”列指每个操作是否支持资源级权限。
    • 资源类型支持通配符号*表示所有。如果此列没有值(-),则必须在身份策略语句的Resource元素中指定所有资源类型(“*”)。
    • 如果该列包含资源类型,则必须在具有该操作的语句中指定该资源的URN。
    • 资源类型列中必需资源在表中用星号(*)标识,表示使用此操作必须指定该资源类型。

    关于UCS定义的资源类型的详细信息请参见资源类型(Resource)

  • “条件键”列包括了可以在身份策略语句的Condition元素中支持指定的键值。
    • 如果该授权项资源类型列存在值,则表示条件键仅对列举的资源类型生效。
    • 如果该授权项资源类型列没有值(-),则表示条件键对整个授权项生效。
    • 如果此列条件键没有值(-),表示此操作不支持指定条件键。

    关于UCS定义的条件键的详细信息请参见条件(Condition)

  • “别名”列包括了可以在身份策略中配置的策略授权项。通过这些授权项,可以控制支持策略授权的API访问。详细信息请参见身份策略兼容性说明

您可以在身份策略语句的Action元素中指定以下UCS的相关操作。

表1 UCS支持的授权项

授权项

描述

访问级别

资源类型(*为必须)

条件键

别名

ucs:clustergroups:createFleet

授予创建舰队的权限

write

clustergroup

-

ucs:clustergroups:create

ucs:clustergroups:deleteFleet

授予删除舰队的权限

write

clustergroup

-

ucs:clustergroups:delete

ucs:clustergroups:getFleet

授予查询舰队详情的权限

read

clustergroup

-

ucs:clustergroups:get

ucs:clustergroups:listFleets

授予查询舰队列表的权限

list

clustergroup

-

ucs:clustergroups:list

ucs:clustergroups:updateFleet

授予更新舰队的权限

write

clustergroup

-

ucs:clustergroups:update

ucs:clustergroups:addClusters

授予向舰队中添加集群的权限

write

clustergroup

-

ucs:clustergroups:update

ucs:clustergroups:enablePolicy

授予为舰队开启策略管理的权限

write

clustergroup

-

ucs:permissionsRules:create

ucs:clustergroups:disablePolicy

授予为舰队关闭策略管理的权限

write

clustergroup

-

ucs:permissionsRules:delete

ucs:clustergroups:createPolicy

授予为舰队创建策略实例的权限

write

clustergroup

-

ucs:permissionsRules:create

ucs:clustergroups:enableFederation

授予为舰队开启集群联邦的权限

write

clustergroup

-

ucs:clustergroups:create

ucs:clustergroups:disableFederation

授予为舰队关闭集群联邦的权限

write

clustergroup

-

ucs:clustergroups:delete

ucs:clustergroups:upgradeFederation

授予为舰队升级集群联邦的权限

write

clustergroup

-

ucs:clustergroups:create

ucs:clustergroups:rollbackFederation

授予为舰队回滚集群联邦的权限

write

clustergroup

-

ucs:clustergroups:create

ucs:clustergroups:getOperation

授予查询舰队操作详情的权限

read

clustergroup

-

ucs:clustergroups:get

ucs:clustergroups:updateFederationDomain

授予为舰队集群联邦更新域名的权限

write

clustergroup

-

ucs:clustergroups:update

ucs:clustergroups:generateCredential

授予生成舰队集群联邦访问凭证的权限

write

clustergroup

-

ucs:clustergroups:get

ucs:clustergroups:generateConnection

授予创建舰队集群联邦连接的权限

write

clustergroup

-

ucs:clustergroups:get

ucs:clustergroups:connect

授予连接舰队集群联邦的权限

write

clustergroup

-

ucs:clustergroups:get

ucs:clustergroups:updateRule

授予修改舰队集群权限规则的权限

write

clustergroup

-

ucs:clustergroups:update

ucs:clusters:createCluster

授予创建集群的权限

write

cluster

-

ucs:clusters:create

ucs:clusters:deleteCluster

授予删除集群的权限

write

cluster

-

ucs:clusters:delete

ucs:clusters:getCluster

授予查询集群详情的权限

read

cluster

-

ucs:clusters:get

ucs:clusters:listClusters

授予查询集群列表的权限

list

cluster

-

ucs:clusters:list

ucs:clusters:updateCluster

授予更新集群的权限

write

cluster

-

ucs:clusters:update

ucs:clusters:activate

授予激活集群的权限

write

cluster

-

ucs:clusters:update

ucs:clusters:getConnectManifest

授予获取manifest将集群连接到UCS的权限

read

cluster

-

ucs:clusters:create

ucs:clusters:generateConfig

授予生成集群配置的权限

write

cluster

-

ucs:clusters:update

ucs:clusters:getPackageVersion

授予查询集群软件包版本列表的权限

read

cluster

-

ucs:clusters:get

ucs:clusters:getCredential

授予查询集群访问凭证的权限

read

cluster

-

ucs:clusters:get

ucs:clusters:join

授予将集群加入舰队的权限

write

cluster

-

ucs:clusters:update

ucs:clusters:unjoin

授予将集群移出舰队的权限

write

cluster

-

ucs:clusters:update

ucs:clusters:enablePolicy

授予为集群开启策略管理的权限

write

cluster

-

ucs:permissionsRules:create

ucs:clusters:disablePolicy

授予为集群关闭策略管理的权限

write

cluster

-

ucs:permissionsRules:delete

ucs:clusters:createPolicy

授予为集群创建策略实例的权限

write

cluster

-

ucs:permissionsRules:create

ucs:clusters:generateCredential

授予生成集群访问凭证的权限

write

cluster

-

ucs:clusters:get

ucs:clusters:updateRule

授予修改集群权限规则的权限

write

cluster

-

ucs:clusters:update

ucs::getAddonTemplate

授予查询插件模板详情的权限

read

*

-

ucs:addonTemplates:get

ucs::listAddonTemplates

授予查询插件模板列表的权限

list

*

-

ucs:addonTemplates:list

ucs:addons:get

授予查询插件实例详情的权限

read

cluster

-

-

ucs:addons:update

授予更新插件实例的权限

write

cluster

-

-

ucs:configsets:create

授予创建配置集合的权限

write

cluster

-

-

ucs:configsets:delete

授予删除配置集合的权限

write

cluster

-

-

ucs:configsets:get

授予查询配置集合详情的权限

read

cluster

-

-

ucs:configsets:list

授予查询配置集合列表的权限

list

cluster

-

-

ucs:configsets:update

授予更新配置集合的权限

write

cluster

-

-

ucs:permissions:listRules

授予查询规则列表的权限

list

*

-

ucs:permissionsRules:list

ucs:permissions:updateRule

授予更新规则的权限

write

*

-

ucs:permissionsRules:update

ucs:permissions:deleteRule

授予删除规则的权限

write

*

-

ucs:permissionsRules:delete

ucs:permissions:createRule

授予创建规则的权限

write

*

-

ucs:permissionsRules:create

ucs::getPolicyDefinition

授予查询策略定义详情的权限

read

*

-

ucs:permissionsRules:get

ucs::listPolicyDefinitions

授予查询策略定义列表的权限

list

*

-

ucs:permissionsRules:get

ucs::updatepolicyDefinition

授予更新策略定义的权限

write

*

-

ucs:permissionsRules:update

ucs:policyInstances:delete

授予删除策略实例的权限

write

cluster/clustergroup

-

ucs:permissionsRules:delete

ucs:policyInstances:get

授予查询策略实例详情的权限

read

cluster/clustergroup

-

ucs:permissionsRules:get

ucs:policyInstances:list

授予查询策略实例列表的权限

list

cluster/clustergroup

-

ucs:permissionsRules:get

ucs:policyInstances:update

授予更新策略实例的权限

write

cluster/clustergroup

-

ucs:permissionsRules:update

ucs:policyInstances:operate

授予对策略实例进行重试操作的权限

write

cluster/clustergroup

-

ucs:permissionsRules:update

ucs:policyInstances:getOperation

授予查询策略实例操作状态的权限

read

*

-

ucs:permissionsRules:get

ucs:policyInstances:listOperations

授予查询策略实例批量操作状态的权限

write

*

-

ucs:permissionsRules:get

ucs:traffic:create

授予创建域名解析记录集的权限

write

*

-

-

ucs:traffic:list

授予查询域名解析记录集的权限

list

*

-

-

ucs:workloads:create

授予创建工作负载的权限

write

cluster/clustergroup

-

-

ucs:workloads:delete

授予删除工作负载的权限

write

cluster/clustergroup

-

-

ucs:workloads:get

授予查询工作负载的权限

read

cluster/clustergroup

-

-

ucs:workloads:update

授予更新工作负载的权限

write

cluster/clustergroup

-

-

资源类型(Resource)

资源类型(Resource)表示身份策略所作用的资源。如表2中的某些操作指定了可以在该操作指定的资源类型,则必须在具有该操作的身份策略语句中指定该资源的URN,身份策略仅作用于此资源;如未指定,Resource默认为“*”,则身份策略将应用到所有资源。您也可以在身份策略中设置条件,从而指定资源类型。

UCS定义了以下可以在自定义身份策略的Resource元素中使用的资源类型。

表2 UCS支持的资源类型

资源类型

URN

clustergroup

ucs::<account-id>:clustergroup:<clustergroup-id>

cluster

ucs::<account-id>:cluster:<cluster-id>

条件(Condition)

条件键概述

条件(Condition)是身份策略生效的特定条件,包括条件键运算符

  • 条件键表示身份策略语句的Condition元素中的键值。根据适用范围,分为全局级条件键和服务级条件键。
    • 全局级条件键(前缀为g:)适用于所有操作,在鉴权过程中,云服务不需要提供用户身份信息,系统将自动获取并鉴权。详情请参见:表3。更多全局条件键说明,可参见全局条件键
    • 服务级条件键(前缀通常为服务缩写,如ucs:)仅适用于对应服务的操作,UCS服务不支持在身份策略中的条件键中配置服务级的条件键。
    • 单值/多值表示API调用时请求中与条件关联的值数。单值条件键在API调用时的请求中最多包含一个值,多值条件键在API调用时请求可以包含多个值。例如:g:SourceVpce是单值条件键,表示仅允许通过某个VPC终端节点发起请求访问某资源,一个请求最多包含一个VPC终端节点ID值。g:TagKeys是多值条件键,表示请求中携带的所有标签的key组成的列表,当用户在调用API请求时传入标签可以传入多个值。
  • 运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,身份策略才能生效。支持的运算符请参见:运算符

UCS定义了以下可以在身份策略的Condition元素中使用的条件键,您可以使用这些条件键进一步细化身份策略语句应用的条件。

表3 UCS支持的全局条件键

全局级条件键

类型

单值/多值

说明

g:CalledVia

string

多值

可通过该属性控制跨服务访问

g:CalledViaFirst

string

单值

特指g:CalledVia属性中的第一个元素

g:CalledViaLast

string

单值

特指g:CalledVia属性中的最后一个元素

g:CurrentTime

date

单值

可通过该属性控制云服务API在什么时间段内可以被访问

g:MFAAge

number

单值

指当前请求者自多因素认证后经过的时间,单位为秒

g:MFAPresent

boolean

单值

可通过该属性控制云服务API仅能被经过多因素认证的身份调用

g:DomainId

string

单值

指请求者的 Domain/Account ID

g:DomainName

string

单值

指请求者的 Domain/Account Name

g:PrincipalAccount

string

单值

与 g:DomainId 属性完全一致

g:PrincipalUrn

string

单值

指请求者身份的Urn,不同身份类型的Urn格式有所区别。

g:PrincipalIsService

boolean

单值

指请求者身份是否是云服务,用户可以通过该属性控制只有云服务身份才能访问指定API

g:PrincipalIsRootUser

boolean

单值

指请求者身份是否是IAM根用户

g:PrincipalOrgId

string

单值

指请求者身份所属的组织ID,用户可以通过该属性控制只有特定组织内的身份才能访问指定API

g:PrincipalOrgManagementAccountId

string

单值

指请求者身份所属组织的管理账号ID

g:PrincipalOrgPath

string

单值

指请求者账号所属组织中的路径,用户可以通过该属性控制只有组织中特定层级的账号才能访问指定API

g:PrincipalServiceName

string

单值

指请求者的云服务Service Principal名称

g:PrincipalType

string

单值

指请求者身份携带的标签,目前仅请求者为带有标签的IAM用户、带有标签的信任委托、或带有会话标签的委托会话时其标签作为该属性

g:Referer

string

单值

指请求携带的 HTTP referer header

注意:

该属性是由客户端指定的,故不推荐使用它作为访问控制的安全依赖

g:ResourceAccount

string

单值

指请求所访问的资源的属主账号ID

g:SecureTransport

boolean

单值

指请求是否使用了SSL协议

g:SourceAccount

string

单值

指跨服务访问场景下,云服务是为哪一个资源所发起的请求,g:SourceAccount 表示的是该资源的属主账号。该属性主要是为了解决跨服务访问场景下的confused deputy问题

g:SourceUrn

string

单值

指跨服务访问场景下,云服务是为哪一个资源所发起的请求,g:SourceUrn 表示的是该资源 Urn。与 g:SourceAccount 相同,该属性也是为了解决跨服务访问场景下的 confused deputy 问题

g:SourceIdentity

string

单值

特指 IAM 临时凭据STSToken中的 source_identity字段

g:SourceIp

IP

单值

指发起请求的源 IP 地址,专指来自公网的请求源IP

注意:

如果请求是从 VPC 内的主机发起并经过 VPC Endpoint 时,则会使用 g:VpcSourceIp 来取代 g:SourceIp。

g:SourceVpc

string

单值

指VPC Endpoint 所在的VPC ID

g:SourceVpce

string

单值

指发起请求使用的VPC Endpoint ID

g:SourceVpceAccount

string

单值

指发起请求使用的VPC Endpoint ID所属账号ID

g:SourceVpceOrgId

string

单值

指发起请求使用的VPC Endpoint ID所属账号所属组织ID

g:SourceVpceOrgPath

string

单值

指发起请求使用的VPC Endpoint ID所属账号所属组织中的路径

g:TokenIssueTime

date

单值

指访问凭据中的STSToken的签发时间

g:UserAgent

string

单值

指请求携带的HTTP User-Agent header

注意:

该属性是由客户端指定的,故不推荐使用它作为访问控制的安全依赖。

g:PrincipalId

string

单值

指请求者的身份ID,不同身份类型的ID格式有所区别。

g:UserName

string

单值

指请求者IAM User的名称

g:ViaService

boolean

单值

指该请求是否是由云服务通过Impersonate协议代表用户身份发起的,特别的,当且仅当g:CalledVia 属性非空时,该属性值为true

g:VpcSourceIp

IP

单值

指VPC内访问VPC Endpoint上一跳节点所使用的地址

g:UserId

string

单值

指请求者IAM User的ID

g:AssumedByService

string

单值

指云服务切换到委托上发起访问时,该云服务的service_principal

相关文档