更新时间:2024-07-05 GMT+08:00

云备份 CBR

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

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

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

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

操作(Action)

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

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

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

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

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

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

表1 cbr支持的授权项

授权项

描述

访问级别

资源类型(*为必须)

条件键

cbr:tasks:list

授予查询任务列表权限。

list

task *

-

-

g:EnterpriseProjectId

cbr:tasks:get

授予查询单个任务权限。

read

task *

g:EnterpriseProjectId

cbr:member:create

授予添加备份成员权限。

permission_management

backup *

g:EnterpriseProjectId

-

cbr:TargetOrgPaths

cbr:member:update

授予更新备份成员状态权限。

write

backup *

g:EnterpriseProjectId

cbr:member:get

授予获取备份成员详情权限。

read

backup *

g:EnterpriseProjectId

cbr:member:list

授予获取备份成员列表权限。

list

backup *

-

cbr:member:delete

授予删除指定备份成员权限。

permission_management

backup *

g:EnterpriseProjectId

cbr:vaults:showCheckpoint

授予查询备份还原点权限。

read

-

-

cbr:vaults:showSummary

授予查询存储库总览权限。

list

-

-

cbr:vaults:replicate

授予复制备份还原点权限。

write

vault *

  • g:ResourceTag/<tag-key>
  • g:EnterpriseProjectId

cbr:vaults:backup

授予创建备份还原点权限。

write

vault *

  • g:ResourceTag/<tag-key>
  • g:EnterpriseProjectId

cbr:vaults:sync

授予同步备份还原点权限。

write

vault *

  • g:ResourceTag/<tag-key>
  • g:EnterpriseProjectId

cbr:vaults:create

授予创建存储库权限。

write

vault *

-

-

  • g:RequestTag/<tag-key>
  • g:TagKeys
  • g:EnterpriseProjectId
  • cbr:PolicyId

cbr:vaults:get

授予查询指定存储库权限。

read

vault *

  • g:ResourceTag/<tag-key>
  • g:EnterpriseProjectId

cbr:vaults:list

授予查询存储库列表权限。

list

vault *

-

-

g:EnterpriseProjectId

cbr:vaults:update

授予修改存储库权限。

write

vault *

  • g:ResourceTag/<tag-key>
  • g:EnterpriseProjectId

cbr:vaults:delete

授予删除存储库权限。

write

vault *

  • g:ResourceTag/<tag-key>
  • g:EnterpriseProjectId

cbr:vaults:removeResources

授予移除资源权限。

write

vault *

  • g:ResourceTag/<tag-key>
  • g:EnterpriseProjectId

cbr:vaults:addResources

授予添加资源权限。

write

vault *

  • g:ResourceTag/<tag-key>
  • g:EnterpriseProjectId

cbr:vaults:setResources

授予设置存储库资源权限。

write

vault *

  • g:ResourceTag/<tag-key>
  • g:EnterpriseProjectId

cbr:vaults:associatePolicy

授予设置存储库策略权限。

write

vault *

  • g:ResourceTag/<tag-key>
  • g:EnterpriseProjectId

cbr:vaults:dissociatePolicy

授予解除存储库策略权限。

write

vault *

  • g:ResourceTag/<tag-key>
  • g:EnterpriseProjectId

cbr:vaults:listExternalVaults

授予查询其他区域的存储库列表权限。

list

vault *

-

cbr:vaults:migrateResources

授予迁移资源权限。

write

vault *

  • g:ResourceTag/<tag-key>
  • g:EnterpriseProjectId

cbr:backups:sync

授予同步备份权限。

write

vault *

g:EnterpriseProjectId

cbr:backups:get

授予查询指定备份权限。

read

backup *

g:EnterpriseProjectId

cbr:backups:showMetadata

授予查询备份元数据权限。

read

backup *

g:EnterpriseProjectId

cbr:backups:list

授予查询所有备份权限。

list

backup *

-

-

g:EnterpriseProjectId

cbr:backups:delete

授予删除备份权限。

write

backup *

g:EnterpriseProjectId

cbr:backups:replicate

授予复制备份权限。

write

backup *

g:EnterpriseProjectId

cbr:backups:restore

授予备份恢复权限。

write

backup *

g:EnterpriseProjectId

cbr:backups:update

授予更新备份权限。

write

backup *

g:EnterpriseProjectId

cbr:policies:list

授予查询策略列表权限。

list

policy *

-

cbr:policies:create

授予创建策略权限。

write

policy *

-

-

cbr:EnabledPolicy

cbr:policies:get

授予查询单个策略权限。

read

policy *

-

cbr:policies:update

授予修改策略权限。

write

policy *

-

-

cbr:EnabledPolicy

cbr:policies:delete

授予删除策略权限。

write

policy *

-

cbr:vaults:listProtectables

授予查询可保护资源权限。

list

-

g:EnterpriseProjectId

cbr:vaults:getProtectables

授予查询指定可保护资源权限。

read

-

-

cbr:backups:queryReplicationCapability

授予查询复制能力权限。

list

-

-

cbr:backups:checkAgent

授予查询agent状态权限。

read

-

-

cbr:vaults:listResourceInstances

授予查询存储库资源实例权限。

list

vault *

-

cbr:vaults:bulkCreateOrDeleteTags

授予批量添加删除存储库资源标签权限。

write

vault *

g:ResourceTag/<tag-key>

-

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

cbr:vaults:setTags

授予添加存储库资源标签权限。

write

vault *

g:ResourceTag/<tag-key>

-

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

cbr:vaults:deleteTags

授予删除存储库资源标签权限。

write

vault *

g:ResourceTag/<tag-key>

-

g:TagKeys

cbr:vaults:getTags

授予查询存储库资源标签权限。

read

vault *

g:ResourceTag/<tag-key>

cbr:vaults:listProjectTags

授予查询存储库项目标签权限。

list

vault *

-

cbr:backups:listStorageUsage

授予查询容量统计权限。

list

-

-

cbr:vaults:updateOrder

授予变更权限。

write

vault *

  • g:ResourceTag/<tag-key>
  • g:EnterpriseProjectId

cbr:agents:addPath

授予新增备份路径权限。

write

agent *

-

cbr:agents:get

授予查询指定客户端权限。

read

agent *

-

cbr:agents:update

授予修改客户端权限。

write

agent *

-

cbr:agents:register

授予注册客户端权限。

write

agent *

-

cbr:agents:delete

授予移除客户端权限。

write

agent *

-

cbr:agents:removePath

授予移除备份路径权限。

write

agent *

-

cbr:agents:list

授予查询客户端列表权限。

list

agent *

-

cbr:backups:migratesCreate

授予租户迁移权限。

write

-

-

cbr:backups:migratesIndex

授予查询迁移权限。

read

-

-

cbr:organizationPolicies:create

授予创建组织策略权限。

write

-

-

cbr:organizationPolicies:listPolicyDetail

授予查询组织策略部署状态列表权限。

read

-

-

cbr:organizationPolicies:delete

授予删除组织策略权限。

write

-

-

cbr:organizationPolicies:update

授予修改组织策略权限。

write

-

-

cbr:organizationPolicies:list

授予查询组织策略列表权限。

list

-

-

cbr:organizationPolicies:get

授予查询单个组织策略权限。

read

-

-

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

表2 API与授权项的关系

API

对应的授权项

依赖的授权项

GET /v3/{project_id}/operation-logs

cbr:tasks:list

-

GET /v3/{project_id}/operation-logs/{operation_log_id}

cbr:tasks:get

-

POST /v3/{project_id}/backups/{backup_id}/members

cbr:member:create

-

PUT /v3/{project_id}/backups/{backup_id}/members/{member_id}

cbr:member:update

-

GET /v3/{project_id}/backups/{backup_id}/members/{member_id}

cbr:member:get

-

GET /v3/{project_id}/backups/{backup_id}/members

cbr:member:list

-

DELETE /v3/{project_id}/backups/{backup_id}/members/{member_id}

cbr:member:delete

-

GET /v3/{project_id}/checkpoints/{checkpoint_id}

cbr:vaults:showCheckpoint

-

GET /v3/{project_id}/vaults/summary

cbr:vaults:showSummary

-

POST /v3/{project_id}/checkpoints/replicate

cbr:vaults:replicate

-

POST /v3/{project_id}/checkpoints

cbr:vaults:backup

  • ecs:cloudServers:listServersDetails
  • evs:volumes:list

POST /v3/{project_id}/checkpoints/sync

cbr:vaults:sync

-

POST /v3/{project_id}/vaults

cbr:vaults:create

  • ecs:cloudServers:listServersDetails
  • evs:volumes:list

POST /v3/{project_id}/vaults/order

cbr:vaults:create

  • ecs:cloudServers:listServersDetails
  • evs:volumes:list

GET /v3/{project_id}/vaults/{vault_id}

cbr:vaults:get

-

GET /v3/{project_id}/vaults

cbr:vaults:list

-

PUT /v3/{project_id}/vaults/{vault_id}

cbr:vaults:update

-

PUT /v3/{project_id}/vaults/batch-update

cbr:vaults:update

-

DELETE /v3/{project_id}/vaults/{vault_id}

cbr:vaults:delete

-

POST /v3/{project_id}/vaults/{vault_id}/removeresources

cbr:vaults:removeResources

-

POST /v3/{project_id}/vaults/{vault_id}/addresources

cbr:vaults:addResources

  • ecs:cloudServers:listServersDetails
  • evs:volumes:list

PUT /v3/{project_id}/vaults/{vault_id}/set-resources

cbr:vaults:setResources

-

POST /v3/{project_id}/vaults/{vault_id}/associatepolicy

cbr:vaults:associatePolicy

-

POST /v3/{project_id}/vaults/{vault_id}/dissociatepolicy

cbr:vaults:dissociatePolicy

-

GET /v3/{project_id}/vaults/external

cbr:vaults:listExternalVaults

-

POST /v3/{project_id}/vaults/{vault_id}/migrateresources

cbr:vaults:migrateResources

-

POST /v3/{project_id}/backups/sync

cbr:backups:sync

-

GET /v3/{project_id}/backups/{backup_id}

cbr:backups:get

-

GET /v3/{project_id}/backups/{backup_id}/metadata

cbr:backups:showMetadata

-

GET /v3/{project_id}/backups

cbr:backups:list

-

DELETE /v3/{project_id}/backups/{backup_id}

cbr:backups:delete

-

POST /v3/{project_id}/backups/{backup_id}/replicate

cbr:backups:replicate

-

POST /v3/{project_id}/backups/{backup_id}/restore

cbr:backups:restore

  • ecs:cloudServers:listServersDetails
  • evs:volumes:list

PUT /v3/{project_id}/backups/{backup_id}

cbr:backups:update

-

GET /v3/{project_id}/policies

cbr:policies:list

-

POST /v3/{project_id}/policies

cbr:policies:create

-

GET /v3/{project_id}/policies/{policy_id}

cbr:policies:get

-

PUT /v3/{project_id}/policies/{policy_id}

cbr:policies:update

-

DELETE /v3/{project_id}/policies/{policy_id}

cbr:policies:delete

-

GET /v3/{project_id}/protectables/{protectable_type}/instances

cbr:vaults:listProtectables

  • ecs:cloudServers:listServersDetails
  • evs:volumes:list

GET /v3/{project_id}/protectables/{protectable_type}/instances/{instance_id}

cbr:vaults:getProtectables

  • ecs:cloudServers:listServersDetails
  • evs:volumes:list

GET /v3/{project_id}/replication-capabilities

cbr:backups:queryReplicationCapability

-

POST /v3/{project_id}/agent/check

cbr:backups:checkAgent

-

POST /v3/{project_id}/vault/resource_instances/action

cbr:vaults:listResourceInstances

-

POST /v3/{project_id}/vault/{vault_id}/tags/action

cbr:vaults:bulkCreateOrDeleteTags

-

POST /v3/{project_id}/vault/{vault_id}/tags

cbr:vaults:setTags

-

DELETE /v3/{project_id}/vault/{vault_id}/tags/{key}

cbr:vaults:deleteTags

-

GET /v3/{project_id}/vault/{vault_id}/tags

cbr:vaults:getTags

-

GET /v3/{project_id}/vault/tags

cbr:vaults:listProjectTags

-

GET /v3/{project_id}/storage_usage

cbr:backups:listStorageUsage

-

PUT /v3/{project_id}/orders/{order_id}

cbr:vaults:updateOrder

-

POST /v3/{project_id}/agents/{agent_id}/add-path

cbr:agents:addPath

-

GET /v3/{project_id}/agents/{agent_id}

cbr:agents:get

-

PUT /v3/{project_id}/agents/{agent_id}

cbr:agents:update

-

POST /v3/{project_id}/agents

cbr:agents:register

-

DELETE /v3/{project_id}/agents/{agent_id}

cbr:agents:delete

-

POST /v3/{project_id}/agents/{agent_id}/remove-path

cbr:agents:removePath

-

GET /v3/{project_id}/agents

cbr:agents:list

-

POST /v3/migrates

cbr:backups:migratesCreate

-

GET /v3/migrates

cbr:backups:migratesIndex

-

资源类型(Resource)

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

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

表3 cbr支持的资源类型

资源类型

URN

vault

cbr:<region>:<account-id>:vault:<vault-id>

policy

cbr:<region>:<account-id>:policy:<policy-id>

task

cbr:<region>:<account-id>:task:<task-id>

backup

cbr:<region>:<account-id>:backup:<backup-id>

agent

cbr:<region>:<account-id>:agent:<agent-id>

条件(Condition)

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

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

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

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

服务级条件键

类型

单值/多值

说明

cbr:TargetOrgPaths

string

单值

cbr服务添加备份成员API请求中指定的目标账号所属的组织路径。

cbr:VaultId

string

单值

根据请求参数中指定的存储库ID过滤访问。

cbr:PolicyId

string

单值

根据请求参数中指定的策略ID过滤访问。

cbr:EnabledPolicy

boolean

单值

根据策略是否开启过滤访问。