IAM策略
更新時間 2023-12-15 09:54:23
最近更新時間: 2023-12-15 09:54:23
分享文章
本節主要介紹IAM策略。
通過IAM,您可以在云帳號中創建IAM用戶,并使用策略來控制IAM用戶對云資源的訪問范圍。
IAM策略是作用于云資源的,IAM策略定義了允許和拒絕的訪問操作,以此實現云資源權限訪問控制。
對于OBS,IAM策略的OBS權限是作用于OBS所有的桶和對象的。如果要授予IAM用戶操作OBS資源的權限,則需要向用戶所屬的用戶組授予一個或多個OBS權限集。
IAM策略應用場景
IAM策略主要面向對同帳號下IAM用戶授權的場景:
- 使用策略控制帳號下整個云資源的權限時,使用IAM策略授權。
- 使用策略控制帳號下OBS所有的桶和對象的權限時,使用IAM策略授權。
策略結構&語法
策略結構包括:Version(策略版本號)和Statement(策略權限語句),其中Statement可以有多個,表示不同的授權項。

參數 說明 Version 標識策略的版本號:
1.0:RBAC策略。RBAC策略是將服務作為一個整體進行授權,授權后,用戶可以擁有這個服務的所有權限。Statement 策略授權語句,描述策略的詳細信息,包含Effect(作用)和Action(授權項)。
Effect(作用)
作用包含兩種:Allow(允許)和Deny(拒絕),系統預置策略僅包含允許的授權語句。
Action(授權項)
對資源的具體操作權限,支持單個或多個操作權限,支持通配符號*,通配符號表示所有。
Resource(資源)
策略所作用的資源,格式為:服務名:region:domainId:資源類型:資源路徑,支持通配符號*,通配符號表示所有。在JSON視圖中,不帶Resource表示對所有資源生效。
Resource支持以下字符:-_0-9a-zA-Z*./\,如果Resource中包含不支持的字符,請采用通配符號*。
OBS是全局級服務,region填“*”;domainId表示資源擁有者的帳號ID,建議填寫“*”簡單地表示所填資源的帳號ID。
示例:
??"obs:*:*:bucket:*": 表示所有的OBS桶。
??"obs:*:*:object:my-bucket/my-object/*": 表示桶my-bucket中“my-object”目錄下的所有對象。
Condition(條件)
使策略生效的特定條件,可選。格式為:條件運算符: {條件名:[條件值1, 條件值2]}
條件包含全局條件名和云服務條件名,OBS支持的條件名與桶策略中的Condition一致,在IAM配置時,需要加上“obs:”。詳細的Condition介紹如條件所示。
Condition的條件值僅支持以下字符:-,./ a-zA-Z0-9@#$%&,如果條件值中包含不支持的字符,請考慮使用模糊匹配的條件運算符,如:StringLike,StringStartWith等。
示例:
??"StringEndWithIfExists":{"g:UserName":["specialCharacter"]}:表示當用戶輸入的用戶名以"specialCharacter"結尾時該條statement生效。
"StringLike":{"obs:prefix":["private/"]}:表示在列舉桶內對象時,需要指定prefix為private/或者包含private/這一子字符串。
IAM策略鑒權
IAM策略遵循Deny優先的原則。在用戶訪問資源時,權限檢查邏輯如下:

說明每條策略做評估時,Action之間是“或(or)”的關系。
- 用戶訪問系統,發起操作請求。
- 系統評估用戶被授予的訪問策略,鑒權開始。
- 在用戶被授予的訪問策略中,系統將優先尋找顯式拒絕指令。如找到一個適用的顯式拒絕,系統將返回Deny決定。
- 如果沒有找到顯式拒絕指令,系統將尋找適用于請求的任何Allow指令。如果找到一個顯式允許指令,系統將返回Allow決定。
- 如果找不到顯式允許,最終決定為Deny,鑒權結束。