SCP语法介绍
下面以RAM的自定义策略为例,说明策略的语法。
{
"Version": "5.0",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ram:resourceShares:create"
],
"Resource": [
"*"
],
"Condition": {
"ForAnyValue:StringNotEquals": {
"g:RequestTag/owner": [
"Alice",
"Jack"
]
}
}
}
]
} 
SCP的语法与IAM身份策略的语法一致。
策略结构
策略结构包括Version(策略版本号)和Statement(策略权限语句)两部分,其中Statement元素的值可以是多个对象组成的数组,表示不同的权限约束。

策略参数
策略参数包含Version和Statement两部分,下面介绍策略参数详细说明。
参数 | 是否必选 | 含义 | 值 | |
|---|---|---|---|---|
Version | 必选 | 策略的版本。 | 5.0(不可自定义) | |
Statement: 策略的授权语句 | Statement Sid | 可选 | 策略语句标识符。您可为语句数组中的每个策略语句指定Sid值。 | 用户自定义字符串。 |
Effect:作用 | 必选 | 定义Action中的操作权限是否允许执行。 | Deny:不允许执行。 | |
Action:授权项 | Deny时可选 | 操作权限。 | 格式为“服务名:资源类型:操作”。例如“vpc:subnets:list”:表示查看VPC子网列表权限,其中vpc为服务名,subnets为资源类型,list为操作。 | |
Condition:条件 | Deny时可选 | 格式为“条件运算符:{条件键:[条件值1,条件值2]}”。 如果您设置多个条件,同时满足所有条件时,该策略才生效。 示例: "StringEndWithIfExists":{"g:UserName":["specialCharacter"]}:表示当用户输入的用户名以"specialCharacter"结尾时该条statement生效。 | ||
Resource:资源类型 | 可选 未指定时,Resource默认为“*”,策略应用到所有资源。 | 策略所作用的资源。 | Deny时,可选择“*”或具体资源,格式为“服务名:region:domainId:资源类型:资源路径”, 资源类型支持通配符号*,通配符号*表示所有。 示例:"ecs:*:*:instance:*":表示所有的ECS实例。 | |
NotResource: 排除在策略外的资源类型 | 可选 未指定时,参考Resource。 | 策略不作用的资源。 | ||

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

g:RequestedRegion条件键存在使用限制,并非所有服务均支持该条件键。详情请参见支持身份策略与信任委托的云服务列表。
运算符
运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,策略才能生效。运算符可以增加后缀“IfExists”,表示对应请求值不存在或请求值存在且满足条件时均使策略生效,如“StringEqualsIfExists”表示表示请求值不存在或请求值等于条件值均使策略生效。详情请参见运算符。

