更新时间:2026-05-14 GMT+08:00
分享

RCP语法介绍

下面以STS的自定义策略为例,说明策略的语法。

{
  "Version": "5.0",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "sts:agencies:assume"
      ],
      "Condition": {
        "Bool": {
          "g:PrincipalIsService": [
            "false"
          ]
        }
      }
    }
  ]
}

RCP的语法与IAM身份策略的语法基本一致,但包含以下额外约束:

  • Principal 字段必选,只支持填写一种身份主体类型:所有身份。

    {"Statement":[{"Principal":"*"}]}

  • 用户自定义创建的 RCP 中,Effect 仅支持 Deny。

策略结构

策略结构包括Version(策略版本号)和Statement(策略权限语句)两部分,其中Statement元素的值可以是多个对象组成的数组,表示不同的权限约束。

图1 策略结构

策略参数

策略参数包含Version和Statement两部分,下面介绍策略参数详细说明。

表1 策略参数说明

参数

是否必选

含义

Version

必选

策略的版本。

5.0(不可自定义)

Statement:

策略的授权语句

Statement Sid

可选

策略语句标识符。您可为语句数组中的每个策略语句指定Sid值。

用户自定义字符串(包含业务含义)。

Effect:作用

必选

定义Action中的操作权限是否允许执行。

  • Deny:不允许执行。

Principal

必选

身份主体类型。

例如:"Principal": "*" :表示身份主体类型为所有身份。

Action:授权项

Deny时可选

操作权限。

格式为“服务名:资源类型:操作”

例如“sts:agencies:assume”:表示获取资源访问的临时安全凭据权限,其中sts为服务名,agencies为资源类型,assume为操作。

Condition:条件

Deny时可选。

使策略生效的特定条件,包括条件键运算符

格式为“条件运算符:{条件键:[条件值1,条件值2]}”。

如果您设置多个条件,同时满足所有条件时,该策略才生效。

示例:

"Bool":{"g: PrincipalIsService":["false"]}:表示当不是云服务发起的请求时该条statement生效。

Resource:资源类型

可选

未指定时,Resource默认为“*”,策略应用到所有资源。

策略所作用的资源。

Deny时,可选择“*”或具体资源,格式为“服务名:region:domainId:资源类型:资源路径”, 资源类型支持通配符号*,通配符号*表示所有。

示例:"iam:*:*:agency:*":表示所有的委托。

NotResource: 排除在策略外的资源类型

可选

未指定时,参考Resource。

策略不作用的资源。

RCP中不支持以下元素:

  • NotPrincipal
  • NotAction

条件键

条件键表示策略语句的Condition元素中的键值。根据适用范围,分为全局条件键和服务条件键。详情请参见全局条件键中各服务支持的条件键。

运算符

运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,策略才能生效。运算符可以增加后缀“IfExists”,表示对应请求值不存在或请求值存在且满足条件时均使策略生效,如“StringEqualsIfExists”表示请求值不存在或请求值等于条件值均使策略生效。详情请参见运算符

相关文档