资源控制策略(RCP)
操作场景
资源控制策略(Resource Control Policies,RCP)是组织服务提供的一种护栏策略,核心用于限制组织下的资源的最大可用权限边界。通过RCP明确资源允许的权限上限,所有访问组织内成员账号资源的操作,均需受对应RCP的护栏约束,从资源维度规避权限过度授予风险。支持关联到组织、组织单元(OU)或单个成员账号。当关联组织或组织单元(OU)时,其下所有成员账号的资源访问均受该策略约束;关联单个成员账号时,仅对该账号内资源的访问生效。
权限控制原理
- 划定权限边界
RCP不直接进行授权,只划定权限边界。将RCP绑定到组织单元或者成员账号时,并没有直接对组织单元或成员账号授予操作权限,而是规定了成员账号或组织单元包含的成员账号的授权范围。IAM策略授予权限的有效性受RCP限制,只有在RCP允许范围内的权限才能生效。RCP禁止的权限操作,即便授予IAM用户权限,用户也不能执行相关操作。
比如成员账号A绑定了某一条RCP,RCP允许操作A的权限,拒绝操作B的权限。那么成员账号A可以给自己名下的IAM用户授予操作A的权限,不能授予操作B的权限,即便授予了操作B的权限,也无法生效。
- 逐层检查权限
如果要允许成员账号使用某个云服务的操作,在从组织的Root到账号直接路径中的每个OU(包括目标账号本身),每个层级都必须有显示允许该操作。
图1 在Root、OU 和账号y 处附加 Allow 语句的组织结构示例
如果要拒绝特定账号获取权限,在从组织的Root到账号直接路径中的每个OU(包括目标账号本身),任何RCP都可以拒绝该权限。
图2 OU 中附加了 Deny 语句的组织结构示例及其对账号 y 的影响
- 默认允许
组织启用RCP时,默认会为所有OU和账号附加全部权限(RCPFullAccess策略),默认允许所有操作。除非您为OU或账号附加其他的明确拒绝策略。
策略语法示例
配置示例1:组织内的镜像只能由组织内的账号下载。
下面策略的含义:该策略绑定的OU或账号下的镜像不能被组织外的账号下载。只能由组织(o-j1ftg6v1z9zldcg2o29ho0gvazswvia2)内的账号下载。
{
"Version": "5.0",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": [
"swr:repo:download"
],
"Resource": [
"*"
],
"Condition": {
"StringNotEquals": {
"g:PrincipalOrgId": [
"o-j1ftg6v1z9zldcg2o29ho0gvazswvia2"
]
}
}
}
]
} 配置示例2:除了公开镜像,组织内的镜像只能由组织内的账号下载。
下面策略的含义:该策略绑定的OU或账号下的私有镜像不能被组织外的账号下载。只能由组织(o-j1ftg6v1z9zldcg2o29ho0gvazswvia2)内的账号下载,公开镜像可以由任何账号下载。
{
"Version": "5.0",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": [
"swr:repo:download"
],
"Resource": [
"*"
],
"Condition": {
"StringNotEquals": {
"g:PrincipalOrgId": [
"o-j1ftg6v1z9zldcg2o29ho0gvazswvia2"
]
},
"Bool": {
"swr:RepositoryIsPublic": [
"false"
]
}
}
}
]
} 策略参数说明
| 参数 | 含义 | 值 | |
|---|---|---|---|
| Version | 身份策略的版本。 | 固定为5.0,不支持修改:代表身份策略JSON语法的版本号。 | |
| Statement: 身份策略的授权语句 | Sid:语句ID | Sid(Statement ID)表示语句的可选标识符。 | 为一个由零个或多个字符组成的字符串。 |
| Effect:作用 | 定义Action中的操作权限是否允许执行。 | 仅支持Deny:不允许执行。 | |
| Action/NotAction:授权项 | 操作权限。 | 格式为“服务名:资源类型:操作”。授权项支持*和?,*表示任意个字符,?表示恰好一个字符。Action/NotAction不区分大小写。Action表示匹配列表中的所有授权项,NotAction表示匹配列表之外的所有授权项。 您可以打开身份策略授权参考,导航至云服务的“操作”小节,查看该服务所有授权项。 | |
| Resource: 资源类型 | 身份策略所作用的资源。 | 资源类型用资源URN表示,格式为“<service-name>:<region>:<account-id>:<type-name>:<resource-path>”, 资源URN支持*和?,*表示任意个字符,?表示恰好一个字符。Resource不区分大小写。资源URN详情可参见使用URN标识华为云资源。 | |
| Condition:条件 | 格式为“运算符:{条件键:[条件值1,条件值2]}”。其中,条件键不区分大小写。 如果您设置多个条件,同时满足所有条件时,该身份策略才生效。 | ||

