更新时间:2025-12-10 GMT+08:00

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元素的值可以是多个对象组成的数组,表示不同的权限约束。

图1 策略结构

策略参数

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

表1 策略参数说明

参数

是否必选

含义

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元素中的键值。根据适用范围,分为全局条件键和服务条件键。详情请参见全局条件键中各服务支持的条件键。

运算符

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