策略语法说明

策略语法的规范,主要包含策略结构、策略基本元素、策略样例、检查规则等内容。

基本元素说明

1、版本( Version)

策略版本号(Version)标识策略结构的版本号。该元素是必填项,目前系统管理策略版本号为“1.0”,用户管理策略版本号为“1.1”。

2、 语句(Statement)

描述一条或多条权限的详细信息。该元素包括 action、resource、condition、effect 等多个其他元素的权限或权限集合。

3、 效力(Effect)

描述声明产生的结果是“允许”还是“拒绝”。包括 allow(允许)和deny(拒绝)。该元素是必填项。

4、 操作(Action)

对资源的具体操作权限,支持单个或多个操作权限。该元素是必填项。

策略结构

细粒度授权策略结构包括策略版本号(Version)及策略授权语句(Statement)列表。每个授权语句又包括以下元素:Effect(效力)、Action(操作)、Resource(资源)。

格式检查(JSON)

策略语法以 JSON 格式为基础。创建或更新的策略不满足 JSON 格式时,将无法提交成功,所以用户必须要确保 JSON 格式正确。JSON 格式标准在 RFC7159 中定义,您也可以使用在线 JSON 验证程序检查策略格式。

策略语法

1、字符及规则

Policy 中所包含的 JSON 字符有: {   }   [   ]  "   ,   : ;描述语法使用的特殊字符有: =   <   >   (   )   | 。字符使用说明如下:

  • 当一个元素允许多值时,使用逗号和省略号来表达,比如: [ , , ...] 。在所有支持多值的语法中,使用单值也是有效的。而且两种表达方式是等效的: "Action": [] 和 "Action":
  • 带有问号的元素表示这是一个可选元素,比如: <condition_block?>
  • 多值之间用竖线 (|)隔开,表示取值只能选取这些值中的某一个。比如: ("Allow" | "Deny")
  • 使用双引号引起了的元素,表示它是文本串。比如:<version_block>= "Version" : ("1")

2、语法描述及说明

Policy 语法描述如下:

Policy = {
,

}
= "Version" : "1.1" = "Statement": [,, …]
= {
,
,

}
= "Effect" : ("Allow" | "Deny")
= "Action": ("*" | [, ,…])

  • 版本:当前支持的 Policy 版本为 1.0。
  • 授权语句:一个 Policy 可以有多条授权语句。
  • Deny 优先: 一个用户可以被授予多个 Policy,当这些 Policy 存在多条授权语句既包含有 Allow 又包含有 Deny 时,遵循 Deny 优先(只认 Deny 不认 Allow)原则.
  • 元素取值:
    1)当取值为数字(Number)或布尔值(Boolean)时,与字符串类似,需要用双引号引起。
    2)当元素取值为字符串值(String)时,支持(*)和(?)模糊匹配。
    (*) 代表 0 个或多个任意的英文字母。
    (?) 代表 1 个任意的英文字母。

策略样例

示例授权语句是允许对 oss 的 mybucket 存储桶中的对象具有读访问权限。

{
"Version": "1.0",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:GetObject"
],
"Resource": [
"acs:oss:*:*:mybucket",
"acs:oss:*:*:mybucket/*"
],
}
]
}