阿里雲 RAM 策略整理

2021-09-23 17:56:01 字數 4348 閱讀 4779

基本元素

ram中使用policy(授權策略)來描述授權的具體內容,授權內容主要包含效力(effect)、資源(resource)、對資源所授予的操作許可權(action)以及限制條件(condition)這幾個基本元素。

效力(effect)

授權效力包括兩種:允許(allow)和拒絕(deny)。

資源(resource)

資源是指被授權的具體物件。比如,訪問策略「允許張三對資源samplebucket執行getbucket操作」中的資源是「samplebucket」。

操作方法(action)

操作方法是指對具體資源的操作。比如,訪問策略「允許張三對資源samplebucket執行getbucket操作」中的操作是「getbucket」。

限制條件(condition)

限制條件是指授權生效的限制條件。比如,訪問策略「允許張三在2023年12月31日之前對資源samplebucket執行getbucket操作」中的限制條件是「在2023年12月31日之前」。

語法結構

policy結構包括policy版本號及授權語句列表。每個授權語句又包括effect(授權型別)、action(操作名稱列表)、resource(操作物件列表)以及condition(條件限制),其中condition是可選項。

policy結構簡述如下:

支援json格式描述

policy語法

語法描述的符號使用說明:

1. policy所包含的json字元有:

[ ] " , :

2. 描述語法使用的特殊字元有:

= < > ( ) |

3. 當乙個元素允許多值時,這裡使用逗號和省略號來表達,比如:

[, , ...]

4. 在所有支援多值的語法中,使用單值也是有效的。而且這兩種表達方式是等效的:

"action": 和 "action": 5. 帶有問號的元素表示這是乙個可選元素,比如:

6. 多值之間用豎線(|)隔開,表示取值只能選取這些值中的某乙個。比如:

("allow" | "deny")

7. 使用雙引號引起了的元素,表示它是文字串。比如:

= "version" : ("1")

語法描述:

policy  = 

= "version" : ("1")

= "statement" : [ , , ... ]

= = "effect" : ("allow" | "deny")

= ("action" | "notaction") :

("*" | [, , ...])

= ("resource" | "notresource") :

("*" | [, , ...])

= "condition" : = ,

: , ...

} = [, , ...]

= ("string" | "number" | "boolean")

policy語法說明:

effect(授權型別)

effect取值為allow或deny。比如,

"effect": "allow"
action(操作名稱列表)action支援多值,取值為雲服務所定義的api操作名稱,其格式定義如下:

:
格式說明:

service-name: 阿里雲產品名稱,如ecs, rds, slb, oss, ots等。

action-name: service相關的api操作介面名稱。

描述樣例:

"action": ["oss:listbuckets", "ecs:describe*", "rds:describe*"]
resource(操作物件列表)resource通常指操作物件,比如ecs虛擬機器例項,oss儲存物件。我們使用如下格式來命名阿里雲服務的資源命名。

acs::::
格式說明:

描述樣例:

"resource": ["acs:ecs:*:*:instance/inst-001", "acs:ecs:*:*:instance/inst-002", "acs:oss:*:*:mybucket", "acs:oss:*:*:mybucket/*"]
condition(條件限制)條件塊(condition block)由乙個或多個條件子句構成。乙個條件子句由條件操作型別、條件關鍵字和條件值組成。條件操作型別和條件關鍵字在下文中會有詳細描述。

是否滿足條件的判斷原則如下圖所示。描述如下:(1) 乙個條件關鍵字可以指定乙個或多個值,在條件檢查時,如果條件關鍵字的值與指定值中的某乙個相等,即可判定條件滿足。(2) 同一種條件操作型別的條件子句下的多個條件關鍵字同時滿足的情況下,才能判定該條件子句滿足。(3) 條件塊下的所有條件子句同時滿足的情況下,才能判定該條件塊滿足。

條件塊判斷邏輯:

條件操作型別

string

numeric

date and time

boolean

ip address

條件關鍵字

阿里雲保留的條件關鍵字命名格式為:

acs:
阿里雲保留了如下通用條件關鍵字:

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

使用者登入時是否使用了多因素認證(二步認證)

部分產品定義了產品級別的條件關鍵字,格式如下:

:
不同產品定義的條件關鍵字,請參見各產品的使用者文件。

許可權檢查規則

基本模型

ram使用者身份的授權策略檢查邏輯

ram使用者訪問資源時,預設沒有任何許可權,除非有進行顯式的授權(給ram使用者繫結授權策略)。授權策略語句支援allow(允許)和deny(禁止)兩種授權型別,當多個授權語句對乙個資源操作分別出現allow和deny授權時,我們使用deny優先的原則。

授權策略檢查邏輯如下圖所示:

ram使用者訪問資源時,許可權檢查邏輯如下:

按照ram使用者身份所繫結的授權策略是否有授權,如果是deny,則拒絕訪問;否則進入下一步檢查。

檢查ram角色所屬的主賬號是否有訪問許可權。如果是資源owner,則允許訪問;否則檢視該資源是否有支援跨賬號acl許可,有則允許訪問,否則拒絕訪問。

ram角色身份的授權策略檢查邏輯

ram角色(使用角色訪問令牌)訪問資源時,許可權檢查邏輯如下:

如果當前訪問令牌有指定授權策略(呼叫assumerole時所傳入的授權策略引數),則按照上述授權策略檢查邏輯進行判斷,如果是deny,則拒絕訪問;否則進入下一步檢查。 如果當前訪問令牌沒有指定授權策,則直接進入下一步檢查。

檢查ram角色身份所繫結的授權策略是否有授權。如果是deny,則拒絕訪問;否則進入下一步檢查。

檢查ram角色所屬的主賬號是否有訪問許可權。如果是資源owner,則允許訪問;否則檢視該資源是否有支援跨賬號acl許可,有則允許訪問,否則拒絕訪問。

注:本文章摘抄於阿里雲幫助文件,用來彙總起來方便自己檢視。

阿里雲DDoS防護黑洞策略分析

為了保障伺服器網路的整體可用性,當伺服器遭受超出防禦範圍的大流量攻擊時,系統對其採用黑洞策略,即實行外網封禁,並根據例項的安全信譽等級決定黑洞時長,到期後解除黑洞。本文分享關於黑洞策略的相關問題集錦。更多參閱官方文件 什麼是黑洞?黑洞指伺服器受攻擊流量超過本機房黑洞閾值時,阿里雲遮蔽伺服器的外網訪問...

內容安全策略CSP在阿里雲的實施

摘要 點點幫是我們公司推出的一款用於手機社群軟體。本軟體的功能非常強大,包括社群物業 交流廣場 購物幾大功能模組。在點點幫中,使用者可以體驗到更便捷 舒適的生活環境,認識更多的朋友。由於 https化的大勢所趨,了解到把 公升級到https有很多優點,但遷移最大的問題在於遷移時間。如果在阿里雲上的主...

阿里郎與阿里雲

因為機緣巧合,申請試用了一下阿里雲。近期雲計算太火了,到處雲裡來霧裡去。這次總算趕了一趟時髦。我試用的是雲伺服器。這裡有好多雲產品,除了雲伺服器,還有雲儲存 雲資料庫什麼的。所謂的雲伺服器,看起來就像乙個虛擬伺服器 vps 可以遠端桌面,在裡面安裝系統。那它跟vps有什麼區別?查了查資料,大概是這樣...