策略语法说明
策略语法说明
策略语法的规范,主要包含策略结构、策略基本元素、策略样例、检查规则等内容。
1. 基本元素说明
版本( Version)
策略版本号(Version)标识策略结构的版本号。该元素是必填项,目前系统管理策略版本号为“1.0”,用户管理策略版本号为“1.1”。
语句(Statement)
描述一条或多条权限的详细信息。该元素包括 action、resource、condition、effect 等多个其他元素的权限或权限集合。
效力(Effect)
描述声明产生的结果是“允许”还是“拒绝”。包括 allow(允许)和deny(拒绝)。该元素是必填项。
操作(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)原则。
元素取值:
- 当取值为数字(Number)或布尔值(Boolean)时,与字符串类似,需要用双引号引起。
- 当元素取值为字符串值(String)时,支持()和(?)模糊匹配。
代表 0 个或多个任意的英文字母。
?代表 1 个任意的英文字母。
5. 策略样例
示例授权语句是允许对 oss 的 mybucket 存储桶中的对象具有读访问权限。
{
"Version": "1.0",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:GetObject"
],
"Resource": [
"acs:oss:*:*:mybucket",
"acs:oss:*:*:mybucket/*"
],
}
]
}