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