策略语法说明

策略语法说明

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

1. 基本元素说明

  1. 版本( Version)

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

  2. 语句(Statement)

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

  3. 效力(Effect)

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

  4. 操作(Action)

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

2. 策略结构

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

3. 格式检查(JSON)

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

4. 策略语法

字符及规则

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

  • 当一个元素允许多值时,使用逗号和省略号来表达,比如: [ , , ...] 。在所有支持多值的语法中,使用单值也是有效的。而且两种表达方式是等效的: "Action": [] 和 "Action":

  • 带有问号的元素表示这是一个可选元素,比如:

  • 多值之间用竖线 (|)隔开,表示取值只能选取这些值中的某一个。比如: ("Allow" | "Deny")

  • 使用双引号引起了的元素,表示它是文本串。比如:= "Version" : ("1")

语法描述及说明

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 个任意的英文字母。

5. 策略样例

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

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

个结果匹配 ""

    无结果匹配 ""