417
魔獸
Policy語法結構__附錄1: 授權策略語言_用戶指南_訪問控製-阿裏雲
Policy結構簡述
Policy結構包括Policy版本號及授權語句列表。每個授權語句又包括Effect(授權類型)、Action(操作名稱列表)、Resource(操作對象列表)以及Condition(條件限製),其中Condition是可選項。
Policy結構簡述如下:
支持JSON格式描述
目前RAM僅僅支持JSON格式的描述。當創建或更新Policy時,RAM會首先檢查JSON格式的正確性。關於JSON的語法標準請參考RFC 7159。用戶也可以使用一些在線的JSON格式驗證器和編輯器來校驗JSON文本的有效性。
Policy語法
語法描述的符號使用說明:
1. Policy所包含的JSON字符有:
{ } [ ] " , :
2. 描述語法使用的特殊字符有:
= < > ( ) |
3. 當一個元素允許多值時,這裏使用逗號和省略號來表達,比如:
[<action_string>, <action_string>, ...]
4. 在所有支持多值的語法中,使用單值也是有效的。而且這兩種表達方式是等效的:
"Action": [<action_string>] 和 "Action": <action_string>
5. 帶有問號的元素表示這是一個可選元素,比如:
<condition_block?>
6. 多值之間用豎線(|)隔開,表示取值隻能選取這些值中的某一個。比如:
("Allow" | "Deny")
7. 使用雙引號引起了的元素,表示它是文本串。比如:
<version_block> = "Version" : ("1")
語法描述:
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" | "NotAction") :
("*" | [<action_string>, <action_string>, ...])
<resource_block> = ("Resource" | "NotResource") :
("*" | [<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> = ("String" | "Number" | "Boolean")
Policy語法說明:
- 當前支持的Policy版本為1。
- 一個Policy可以有多條授權語句(Statement)。
- 每條授權語句要麼是Deny,要麼是Allow。一條授權語句中,Action是一個支持多個操作的列表,Resource也是一個支持多個對象的列表。
- 每條授權語句都支持獨立的限製條件。一個條件塊可以支持多種條件操作類型,以及對這多種條件的邏輯組合。
- 一個用戶可以被授予多個Policy,當這些Policy存在多條授權語句既包含有Allow又包含有Deny時,我們遵循Deny優先(隻認Deny不認Allow)原則。
- 當取值為數字或布爾值時,與字符串類似,需要用雙引號引起。
- 當元素取值為字符串值時,可以支持(*)和(?)模煳匹配。(*)可以代表0個或多個任意的英文字母,(?)可以代表1個任意的英文字母。比如,”ecs:Describe*” 可以表示ecs的所有以Describe開頭的API操作名稱。
Effect(授權類型)
Effect取值為Allow或Deny。比如,
"Effect": "Allow"
Action(操作名稱列表)
Action支持多值,取值為雲服務所定義的API操作名稱,其格式定義如下:
<service-name>:<action-name>
格式說明:
- service-name: 阿裏雲產品名稱,如ecs, rds, slb, oss, ots等。
- action-name: service相關的api操作接口名稱。
描述樣例:
"Action": ["oss:ListBuckets", "ecs:Describe*", "rds:Describe*"]
Resource(操作對象列表)
Resource通常指操作對象,比如ECS虛擬機實例,OSS存儲對象。我們使用如下格式來命名阿裏雲服務的資源命名。
acs:<service-name>:<region>:<account-id>:<relative-id>
格式說明:
- acs: Aliyun Cloud Service的首字母縮寫,表示阿裏雲的公有雲平台
- service-name: 阿裏雲提供的Open Service的名字,如ecs, oss, ots等
- region: 地區信息。如果不支持該項,可以使用通配符“*”號來代替
- account-id: 賬號ID,比如 1234567890123456,也可以用“*”代替
- relative-id: 與service相關的資源描述部分,其語義由具體service指定。這部分的格式描述支持類似於一個文件路徑的樹狀結構。以oss為例,relative-id = “mybucket/dir1/object1.jpg”表示一個OSS對象。
描述樣例:
"Resource": ["acs:ecs:*:*:instance/inst-001", "acs:ecs:*:*:instance/inst-002", "acs:oss:*:*:mybucket", "acs:oss:*:*:mybucket/*"]
Condition(條件限製)
條件塊(Condition Block)由一個或多個條件子句構成。一個條件子句由條件操作類型、條件關鍵字和條件值組成。條件操作類型和條件關鍵字在下文中會有詳細描述。
是否滿足條件的判斷原則如下圖所示。描述如下:(1) 一個條件關鍵字可以指定一個或多個值,在條件檢查時,如果條件關鍵字的值與指定值中的某一個相等,即可判定條件滿足。(2) 同一種條件操作類型的條件子句下的多個條件關鍵字同時滿足的情況下,才能判定該條件子句滿足。(3) 條件塊下的所有條件子句同時滿足的情況下,才能判定該條件塊滿足。
條件塊判斷邏輯:
條件操作類型
我們支持如下條件操作類型:字符串類型、數字類型、日期類型、布爾類型和IP地址類型。每種條件操作類型分別支持如下的方法:
String
- StringEquals
- StringNotEquals
- StringEqualsIgnoreCase
- StringNotEqualsIgnoreCase
- StringLike
- StringNotLike
Numeric
- NumericEquals
- NumericEquals
- NumericLessThan
- NumericLessThanEquals
- NumericGreaterThan
- NumericGreaterThanEquals
Date and time
- DateEquals
- DateNotEquals
- DateLessThan
- DateLessThanEquals
- DateGreaterThan
- DateGreaterThanEquals
Boolean
- Bool
IP address
- IpAddress
- NotIpAddress
條件關鍵字
阿裏雲保留的條件關鍵字命名格式為:
acs:<condition-key>
阿裏雲保留了如下通用條件關鍵字:
ACS保留條件關鍵字 | 類型 | 說明 |
---|---|---|
acs:CurrentTime | Date and time | Web Server接收到請求的時間,以ISO 8601格式表示,如2012-11-11T23:59:59Z |
acs:SecureTransport | Boolean | 發送請求是否使用了安全信道,如HTTPS |
acs:SourceIp | IP address | 發送請求時的客戶端IP地址 |
acs:MFAPresent | Boolean | 用戶登錄時是否使用了多因素認證(二步認證) |
部分產品定義了產品級別的條件關鍵字,格式如下:
<service-name>:<condition-key>
不同產品定義的條件關鍵字,請參見各產品的用戶文檔。
Policy樣例
如下的Policy樣例包含兩條授權語句(Statement):第1條授權語句是允許對ecs的華東 1 (杭州) region所有資源有查看權限(ecs:Describe*);第2條授權語句是允許對oss的mybucket存儲桶中的對象具有讀訪問權限(oss:ListObjects, oss:GetObject),並限製請求者的IP來源必須是”42.120.88.10”或”42.120.66.0/24”。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:Describe*",
"Resource": "acs:ecs:cn-hangzhou:*:*"
},
{
"Effect": "Allow",
"Action": [
"oss:ListObjects",
"oss:GetObject"
],
"Resource": [
"acs:oss:*:*:mybucket",
"acs:oss:*:*:mybucket/*"
],
"Condition":{
"IpAddress": {
"acs:SourceIp": ["42.120.88.10", "42.120.66.0/24"]
}
}
}
]
}
最後更新:2016-11-23 16:04:01
上一篇:
Policy基本元素__附錄1: 授權策略語言_用戶指南_訪問控製-阿裏雲
下一篇:
權限檢查規則__附錄1: 授權策略語言_用戶指南_訪問控製-阿裏雲
態勢感知購買指導___快速入門_態勢感知-阿裏雲
釋放集群__集群_用戶指南_E-MapReduce-阿裏雲
阿裏雲何萬青:搭建首個全球雲上超算中心,做超算能力的普惠者
配置__產品簡介_高性能計算-阿裏雲
雲服務器 ECS實例生命周期
如何配置ECS支持負載均衡__後端 ECS 服務器常見問題_常見問題_負載均衡-阿裏雲
設置拖拽播放__配置操作接口_API 手冊_CDN-阿裏雲
認證考試學習方法__大數據認證(ACP級)_如何獲得專業技術認證?_專業技術認證-阿裏雲
如何查看主機管理控製台用戶名和密碼?__產品驗證_備案流程_備案-阿裏雲
FreeBSD係統盤擴容、分區、掛載__擴容磁盤概覽_磁盤_用戶指南_雲服務器 ECS-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲