更新时间:2024-04-19 GMT+08:00

资源访问管理 RAM

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

SCP不直接进行授权,只划定权限边界。将SCP绑定到组织单元或者成员账号时,并没有直接对组织单元或成员账号授予操作权限,而是规定了成员账号或组织单元包含的成员账号的授权范围。

本章节介绍组织服务中SCP使用的元素,这些元素包含了操作(Action)、资源(Resource)和条件(Condition)。

如何使用这些元素编辑SCP自定义策略,请参考创建SCP

操作(Action)

操作(Action)即为SCP中支持的授权项。

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

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

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

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

您可以在自定义SCP语句的Action元素中指定以下RAM的相关操作。

表1 RAM支持的授权项

授权项

描述

访问级别

资源类型(*为必须)

条件键

ram:permissions:list

授予列出RAM权限的权限。

list

permission *

-

ram:permissions:get

授予获取RAM权限内容的权限。

read

permission *

-

ram:resourceShares:create

授予使用提供的资源和/或委托人创建资源共享的权限。

write

-

  • g:RequestTag/<tag-key>
  • g:TagKeys
  • ram:RequestedResourceType
  • ram:ResourceUrn
  • ram:Principal
  • ram:TargetOrgPaths
  • ram:RequestedAllowExternalPrincipals

ram:resourceShares:search

授予从提供的列表获取一组资源共享,或获取具有指定状态的资源共享的权限。

read

-

  • g:TagKeys

ram:resourceShares:update

授予更新资源共享属性的权限。

write

resourceShare *

  • g:ResourceTag/<tag-key>
  • ram:AllowExternalPrincipals

-

ram:RequestedAllowExternalPrincipals

ram:resourceShares:delete

授予删除资源共享的权限。

write

resourceShare *

  • g:ResourceTag/<tag-key>
  • ram:AllowExternalPrincipals

ram:resourceShares:associate

授予将资源和/或委托人与资源共享关联的权限。

write

resourceShare *

  • g:ResourceTag/<tag-key>
  • ram:AllowExternalPrincipals

-

  • ram:RequestedResourceType
  • ram:ResourceUrn
  • ram:Principal
  • ram:TargetOrgPaths

ram:resourceShares:disassociate

授予取消资源和/或委托人与资源共享关联的权限。

write

resourceShare *

  • g:ResourceTag/<tag-key>
  • ram:AllowExternalPrincipals

-

  • ram:RequestedResourceType
  • ram:ResourceUrn
  • ram:Principal
  • ram:TargetOrgPaths

ram:resourceShares:searchResourceShareAssociations

授予从提供的列表中获取一组资源共享关联,或者获取具有指定类型的指定状态的资源共享关联的权限。

read

-

-

ram:resourceShares:associatePermission

授予将权限与资源共享关联的权限。

write

resourceShare *

g:ResourceTag/<tag-key>

-

ram:PermissionUrn

ram:resourceShares:disassociatePermission

授予取消权限与资源共享关联的权限。

write

resourceShare *

g:ResourceTag/<tag-key>

-

ram:PermissionUrn

ram:resourceShares:listAssociatedPermissions

授予列出与资源共享关联权限的权限。

list

resourceShare *

g:ResourceTag/<tag-key>

ram:resourceShares:tag

授予标记指定资源共享的权限。

tagging

resourceShare *

g:ResourceTag/<tag-key>

-

  • g:RequestTag/<tag-key>
  • g:TagKeys

ram:resourceShares:untag

授予取消标记指定资源共享的权限。

tagging

resourceShare *

g:ResourceTag/<tag-key>

-

  • g:RequestTag/<tag-key>
  • g:TagKeys

ram:resourceShares:listTags

授予查询资源共享标签的权限。

list

-

-

ram:resourceShares:listResourceSharesByTag

授予根据标签查询资源共享列表的权限。

list

-

  • g:TagKeys

ram:resourceShares:searchResourceShareCountByTag

授予根据标签查询资源共享数量的权限。

read

-

  • g:TagKeys

ram:sharedResources:search

授予列出您添加到资源共享的资源或与您共享的资源的权限。

list

-

-

ram:sharedPrincipals:search

授予列出您与之共享资源或与您共享了资源的委托人的权限。

list

-

-

ram:resourceShareInvitations:accept

授予接受指定资源共享接受的权限。

write

resourceShareInvitation *

-

-

ram:ShareOwnerAccountId

ram:resourceShareInvitations:reject

授予拒绝指定资源共享邀请的权限。

write

resourceShareInvitation *

-

-

ram:ShareOwnerAccountId

ram:resourceShareInvitations:search

授予按指定邀请ID或资源共享ID获取资源共享邀请的权限。

read

-

-

ram:resourceShares:enableSharingWithOrganization

授予开启组织资源共享的权限。

permission_management

-

-

ram:resourceShares:disableSharingWithOrganization

授予关闭组织资源共享的权限。

permission_management

-

-

ram:resourceShares:searchEnableSharingWithOrganization

授予查询是否开启组织资源共享的权限。

read

-

-

ram:sharedResources:searchDistinctResource

授予列出您添加到资源共享的不同资源或与您共享的不同资源的权限。

list

-

-

ram:sharedPrincipals:searchDistinctPrincipal

授予列出您与之共享资源或与您共享了资源的不同委托人的权限。

list

-

-

ram:resourceShares:listQuota

授予查询资源共享配额权限。

list

-

-

ram:resourceTypes:list

授予查询云服务资源类型权限。

list

-

-

ram:permission:listVersions

授予获取RAM指定权限所有版本的权限。

list

-

-

RAM的API通常对应着一个或多个授权项。表2展示了API与授权项的关系,以及该API需要依赖的授权项。

表2 API与授权项的关系

API

对应的授权项

依赖的授权项

GET /v1/permissions

ram:permissions:list

-

GET /v1/permissions/{permission_id}

ram:permissions:get

-

POST /v1/resource-shares

ram:resourceShares:create

-

POST /v1/resource-shares/search

ram:resourceShares:search

-

PUT /v1/resource-shares/{resource_share_id}

ram:resourceShares:update

-

DELETE /v1/resource-shares/{resource_share_id}

ram:resourceShares:delete

-

POST /v1/resource-shares/{resource_share_id}/associate

ram:resourceShares:associate

-

POST /v1/resource-shares/{resource_share_id}/disassociate

ram:resourceShares:disassociate

-

POST /v1/resource-share-associations/search

ram:resourceShares:searchResourceShareAssociations

-

POST /v1/resource-shares/{resource_share_id}/associate-permission

ram:resourceShares:associatePermission

-

POST /v1/resource-shares/{resource_share_id}/disassociate-permission

ram:resourceShares:disassociatePermission

-

GET /v1/resource-shares/{resource_share_id}/associated-permissions

ram:resourceShares:listAssociatedPermissions

-

POST /v1/resource-shares/{resource_share_id}/tags/create

ram:resourceShares:tag

-

POST /v1/resource-shares/{resource_share_id}/tags/delete

ram:resourceShares:untag

-

GET /v1/resource-shares/tags

ram:resourceShares:listTags

-

POST /v1/resource-shares/resource-instances/filter

ram:resourceShares:listResourceSharesByTag

-

POST /v1/resource-shares/resource-instances/count

ram:resourceShares:searchResourceShareCountByTag

-

POST /v1/shared-resources/search

ram:sharedResources:search

-

POST /v1/shared-principals/search

ram:sharedPrincipals:search

-

POST /v1/resource-share-invitations/{resource_share_invitation_id}/accept

ram:resourceShareInvitations:accept

-

POST /v1/resource-share-invitations/{resource_share_invitation_id}/reject

ram:resourceShareInvitations:reject

-

POST /v1/resource-share-invitations/search

ram:resourceShareInvitations:search

-

POST /v1/organization-share/enable

ram:resourceShares:enableSharingWithOrganization

-

POST /v1/organization-share/disable

ram:resourceShares:disableSharingWithOrganization

-

GET /v1/organization-share

ram:resourceShares:searchEnableSharingWithOrganization

-

POST /v1/shared-resources/search-distinct-resource

ram:sharedResources:searchDistinctResource

-

POST /v1/shared-principals/search-distinct-principal

ram:sharedPrincipals:searchDistinctPrincipal

-

GET /v1/resource-shares/quotas

ram:resourceShares:listQuota

-

GET /v1/resource-types

ram:resourceTypes:list

-

GET /v1/permissions/{permission_id}/versions

ram:permission:listVersions

-

资源类型(Resource)

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

RAM定义了以下可以在SCP的Resource元素中使用的资源类型。

表3 RAM支持的资源类型

资源类型

URN

permission

ram::system:permission:<permission-id>

resourceShare

ram::<account-id>:resourceShare:<resource-share-id>

resourceShareInvitation

ram::<account-id>:resourceShareInvitation:<resource-share-invitation-id>

条件(Condition)

条件(Condition)是SCP生效的特定条件,包括条件键运算符

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

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

表4 RAM支持的服务级条件键

服务级条件键

类型

单值/多值

说明

ram:RequestedResourceType

string

多值

根据指定的资源类型过滤访问。

ram:ResourceUrn

string

多值

根据具有指定URN的资源过滤访问。

ram:Principal

string

多值

根据指定使用者的格式过滤访问。

ram:TargetOrgPaths

string

多值

根据指定使用者所在的组织路径过滤访问。

ram:PermissionUrn

string

单值

根据指定的权限URN过滤访问。

ram:ShareOwnerAccountId

string

单值

根据拥有的资源共享的特定账户过滤访问。例如,您可以使用此条件键指定可以根据资源共享所有者的账户ID接受或拒绝资源共享邀请。

ram:AllowExternalPrincipals

boolean

单值

按允许或者拒绝与外部使用者共享的资源共享过滤访问。例如,如果操作只能在允许与外部使用者共享的资源共享上执行,请指定true。外部使用者是指在其组织之外的账号。

ram:RequestedAllowExternalPrincipals

boolean

单值

根据指定的allow_external_principals过滤访问。外部使用者是指在其组织之外的账号。