本文介紹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。