本文介绍RAM中权限策略的语法和结构,帮助您正确理解权限策略语法,以完成创建或更新权限策略。
前提条件
运用策略语法前,您应了解策略字符及其使用规则。
权限策略字符如下:
权限策略中所包含的JSON字符:
{ } [ ] " , :
。描述语法使用的特殊字符:
= < > ( ) |
。
字符使用规则如下:
当一个元素允许多值时,可以使用下述两种方式表达,效果相同。
使用半角逗号(,)和省略号(...)进行表达。例如:
[ <action_string>, <action_string>, ...]
。使用单值进行表达。例如:
"Action": [<action_string>]
和"Action": <action_string>
。
元素带有半角问号(?)表示此元素是一个可选元素。例如:
<condition_block?>
。多值之间用竖线(|)隔开,表示取值只能选取这些值中的某一个。例如:
("Allow" | "Deny")
。使用双引号("")的元素,表示此元素是文本串。例如:
<version_block> = "Version" : ("1")
。
权限策略结构
权限策略结构包括:
版本号。
授权语句列表。每条授权语句包括授权效果(Effect)、操作(Action)、资源(Resource)以及条件(Condition,可选项)。
权限策略语法
policy = {
<version_block>,
<statement_block>
}
<version_block> = "Version" : ("1")
<statement_block> = "Statement" : [ <statement>, <statement>, ... ]
<statement> = {
<effect_block>,
<action_block>,
<resource_block>,
<condition_block?>
}
<effect_block> = "Effect" : ("Allow" | "Deny")
<action_block> = "Action" :
("*" | <action_string> | [<action_string>, <action_string>, ...])
<resource_block> = "Resource" :
("*" | <resource_string> | [<resource_string>, <resource_string>, ...])
<condition_block> = "Condition" : <condition_map>
<condition_map> = {
<condition_type_string> : {
<condition_key_string> : <condition_value_list>,
<condition_key_string> : <condition_value_list>,
...
},
<condition_type_string> : {
<condition_key_string> : <condition_value_list>,
<condition_key_string> : <condition_value_list>,
...
}, ...
}
<condition_value_list> = (<condition_value> | [<condition_value>, <condition_value>, ...])
<condition_value> = ("String" | "Number" | "Boolean" | "Date and time" | "IP address")
权限策略语法说明:
版本:当前支持的权限策略版本,固定为1,不允许修改。
授权语句:一个权限策略可以有多条授权语句。
每条授权语句的效果为:
Allow
或Deny
。说明一条授权语句中,操作(Action)和资源(Resource)都支持多值。
每条授权语句都支持独立的条件(Condition)。
说明一个条件块支持多个条件的组合,每个条件的操作类型可以不同。
Deny优先原则: 一个用户可以被授予多个权限策略。当这些权限策略同时包含
Allow
和Deny
时,遵循Deny优先原则。元素取值:
当元素取值为字符串类型(String)、数字类型(Number)、日期类型(Date and time)、布尔类型(Boolean)和IP地址类型(IP address)时,需要使用双引号("")。
当元素取值为字符串值(String)时,支持使用
*
和?
进行模糊匹配。*
代表0个或多个任意的英文字母。 例如:ecs:Describe*
表示ECS的所有以Describe
开头的操作。?
代表1个任意的英文字母。
权限策略格式检查
权限策略支持JSON格式。当您创建或更新权限策略时,系统会检查JSON格式的正确性。您也可以使用第三方JSON格式验证器和编辑器自行检查JSON格式的正确性。关于JSON语法标准,请参见RFC 7159。