
# RCP语法介绍
下面以STS的自定义策略为例，说明策略的语法。
```
{
  "Version": "5.0",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "sts:agencies:assume"
      ],
      "Condition": {
        "Bool": {
          "g:PrincipalIsService": [
            "false"
          ]
        }
      }
    }
  ]
}
```
![](https://support.huaweicloud.com/usermanual-organizations/public_sys-resources/note_3.0-zh-cn.png)
RCP的语法与IAM身份策略的语法基本一致，但包含以下额外约束：
- Principal 字段必选，只支持填写一种身份主体类型：所有身份。 {"Statement":\[{"Principal":"\*"}\]}
  
- 用户自定义创建的 RCP 中，Effect 仅支持 Deny。
 
#### 策略结构
策略结构包括Version（策略版本号）和Statement（策略权限语句）两部分，其中Statement元素的值可以是多个对象组成的数组，表示不同的权限约束。
图1策略结构
![](https://support.huaweicloud.com/usermanual-organizations/zh-cn_image_0000002502160558.png "点击放大")
#### 策略参数
策略参数包含Version和Statement两部分，下面介绍策略参数详细说明。
表1策略参数说明 
| 参数                                                                                     || 是否必选                                                                        | 含义                                                                                               | 值                                                                                                                                                                                                                                                                    |
|:---|---|:---|:---|:---|
| Version                                                                                || 必选                                                                          | 策略的版本。                                                                                           | 5.0（不可自定义）                                                                                                                                                                                                                                                           |
| Statement： 策略的授权语句 | Statement Sid            | 可选                                                                          | 策略语句标识符。您可为语句数组中的每个策略语句指定Sid值。                                                                   | 用户自定义字符串（包含业务含义）。                                                                                                                                                                                                                                                    |
| Statement： 策略的授权语句 | Effect：作用                | 必选                                                                          | 定义Action中的操作权限是否允许执行。                                                                            | - Deny：不允许执行。                                                                                                                           |
| Statement： 策略的授权语句 | Principal                | 必选                                                                          | 身份主体类型。                                                                                          | 必须设置为"Principal": "\*" ，表示身份主体类型为所有身份。                                                                                                                                                                                                                               |
| Statement： 策略的授权语句 | Action：授权项               | Deny时可选                                                                     | 操作权限。                                                                                            | 格式为"服务名:资源类型:操作" 例如"sts:agencies:assume"：表示获取资源访问的临时安全凭据权限，其中sts为服务名，agencies为资源类型，assume为操作。                                                                                                                               |
| Statement： 策略的授权语句 | Condition：条件             | Deny时可选。                                                                    | 使策略生效的特定条件，包括[条件键]和[运算符]。 | 格式为"条件运算符:{条件键：\[条件值1,条件值2\]}"。 如果您设置多个条件，同时满足所有条件时，该策略才生效。 示例: "Bool":{"g: PrincipalIsService":\["false"\]}：表示当不是云服务发起的请求时该条statement生效。 |
| Statement： 策略的授权语句 | Resource：资源类型            | 可选 未指定时，Resource默认为"\*"，策略应用到所有资源。 | 策略所作用的资源。                                                                                        | Deny时，可选择"\*"或具体资源，格式为"服务名:region:domainId:资源类型:资源路径", 资源类型支持通配符号\*，通配符号\*表示所有。 示例："iam:\*:\*:agency:\*"：表示所有的委托。                                                                                                           |
| Statement： 策略的授权语句 | NotResource: 排除在策略外的资源类型 | 可选 未指定时，参考Resource。                           | 策略不作用的资源。                                                                                        | Deny时，可选择"\*"或具体资源，格式为"服务名:region:domainId:资源类型:资源路径", 资源类型支持通配符号\*，通配符号\*表示所有。 示例："iam:\*:\*:agency:\*"：表示所有的委托。                                                                                                           |
   
![](https://support.huaweicloud.com/usermanual-organizations/public_sys-resources/note_3.0-zh-cn.png)
RCP中不支持以下元素：
- NotPrincipal
- NotAction
 
 #### 条件键
条件键表示策略语句的Condition元素中的键值。根据适用范围，分为全局条件键和服务条件键。详情请参见[全局条件键](https://support.huaweicloud.com/usermanual-iam5/iam_01_1287.html)中各服务支持的条件键。
 #### 运算符
运算符与条件键、条件值一起构成完整的条件判断语句，当请求信息满足该条件时，策略才能生效。运算符可以增加后缀"IfExists"，表示对应请求值不存在或请求值存在且满足条件时均使策略生效，如"StringEqualsIfExists"表示请求值不存在或请求值等于条件值均使策略生效。详情请参见[运算符](https://support.huaweicloud.com/usermanual-iam5/iam_01_1289.html#iam_01_1289__li13495143171719)。
