
# SCP语法介绍
下面以RAM的自定义策略为例，说明策略的语法。
```
{
  "Version": "5.0",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ram:resourceShares:create"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
       "ForAnyValue:StringNotEquals": {
          "g:RequestTag/owner": [
            "Alice",
            "Jack"
          ]
        }
      }
    }
  ]
}
```
![](https://support.huaweicloud.com/usermanual-organizations/public_sys-resources/note_3.0-zh-cn.png)
SCP的语法与[IAM身份策略](https://support.huaweicloud.com/usermanual-iam5/iam_01_0934.html)的语法一致。
#### 策略结构
策略结构包括Version（策略版本号）和Statement（策略权限语句）两部分，其中Statement元素的值可以是多个对象组成的数组，表示不同的权限约束。
图1策略结构
![](https://support.huaweicloud.com/usermanual-organizations/zh-cn_image_0000002492197134.png "点击放大")
#### 策略参数
策略参数包含Version和Statement两部分，下面介绍策略参数详细说明。
表1策略参数说明 
| 参数                                                                         || 是否必选                                                            | 含义                                                                                               | 值                                                                                                                                                                                                                                                                    |
|:---|---|:---|:---|:---|
| Version                                                                    || 必选                                                              | 策略的版本。                                                                                           | 5.0（不可自定义）                                                                                                                                                                                                                                                           |
| Statement： 策略的授权语句 | Statement Sid            | 可选                                                              | 策略语句标识符。您可为语句数组中的每个策略语句指定Sid值。                                                                   | 用户自定义字符串。                                                                                                                                                                                                                                                            |
| Statement： 策略的授权语句 | Effect：作用                | 必选                                                              | 定义Action中的操作权限是否允许执行。                                                                            | Deny：不允许执行。                                                                                                                                                                                                                                                          |
| Statement： 策略的授权语句 | Action：授权项               | Deny时可选                                                         | 操作权限。                                                                                            | 格式为"服务名:资源类型:操作"。例如"vpc:subnets:list"：表示查看VPC子网列表权限，其中vpc为服务名，subnets为资源类型，list为操作。                                                                                                                                                                                  |
| Statement： 策略的授权语句 | Condition：条件             | Deny时可选                                                         | 使策略生效的特定条件，包括[条件键]和[运算符]。 | 格式为"条件运算符:{条件键：\[条件值1,条件值2\]}"。 如果您设置多个条件，同时满足所有条件时，该策略才生效。 示例: "StringEndWithIfExists":{"g:UserName":\["specialCharacter"\]}：表示当用户输入的用户名以"specialCharacter"结尾时该条statement生效。 |
| Statement： 策略的授权语句 | Resource：资源类型            | 可选 未指定时，Resource默认为"\*"，策略应用到所有资源。 | 策略所作用的资源。                                                                                        | Deny时，可选择"\*"或具体资源，格式为"服务名:region:domainId:资源类型:资源路径", 资源类型支持通配符号\*，通配符号\*表示所有。 示例："ecs:\*:\*:instance:\*"：表示所有的ECS实例。                                                                                                                  |
| Statement： 策略的授权语句 | NotResource: 排除在策略外的资源类型 | 可选 未指定时，参考Resource。               | 策略不作用的资源。                                                                                        | Deny时，可选择"\*"或具体资源，格式为"服务名:region:domainId:资源类型:资源路径", 资源类型支持通配符号\*，通配符号\*表示所有。 示例："ecs:\*:\*:instance:\*"：表示所有的ECS实例。                                                                                                                  |
   
![](https://support.huaweicloud.com/usermanual-organizations/public_sys-resources/note_3.0-zh-cn.png)
SCP中不支持以下元素：
- Principal
- NotPrincipal
- NotAction
 
 #### 条件键
条件键表示策略语句的Condition元素中的键值。根据适用范围，分为全局条件键和服务条件键。详情请参见[全局条件键](https://support.huaweicloud.com/usermanual-iam5/iam_01_1287.html)中各服务支持的条件键。
![](https://support.huaweicloud.com/usermanual-organizations/public_sys-resources/caution_3.0-zh-cn.png)
g:RequestedRegion条件键存在使用限制，并非所有服务均支持该条件键。详情请参见[支持身份策略与信任委托的云服务列表](https://support.huaweicloud.com/usermanual-iam5/iam_01_1224.html)。
 #### 运算符
运算符与条件键、条件值一起构成完整的条件判断语句，当请求信息满足该条件时，策略才能生效。运算符可以增加后缀"IfExists"，表示对应请求值不存在或请求值存在且满足条件时均使策略生效，如"StringEqualsIfExists"表示请求值不存在或请求值等于条件值均使策略生效。详情请参见[运算符](https://support.huaweicloud.com/usermanual-iam5/iam_01_1289.html#iam_01_1289__li13495143171719)。
