上一篇我們介紹了OBS權限管理中統一身份認證和企業項目管理,本期我們繼續介紹OBS權限管理中的高級桶策略和ACL應用。
您是否也遇到過類似的問題或者困擾?
1、隔壁的主賬戶給了子用戶創建一個桶,但是沒有給他設置桶策略,子賬戶訪問報403,困惑了一整天。
2、樓下是另外一個子賬號,爲了OBS 控制檯報無權限訪問,百思不得其解。
3、對面一個子賬戶上傳了一個文件,抓破頭也無法分享給其他人。
這些問題或者困擾各不相同,下面將分別介紹高級桶策略和ACL應用來解答這些問題和困惑。
高級桶策略介紹:
桶策略是作用於配置桶策略的單個桶的。同時也提供代碼模式配置方法,高級桶策略代碼最多不能超過20KB。
桶策略參數:
(1)Effect,桶策略效果;指定本條策略描述的權限是允許請求還是拒絕請求。
(2)Action,桶策略動作;指定本條策略可以執行的操作。
(3)Condition,策略生效必須滿足的條件,詳情參考
https://support.huaweicloud.com/usermanual-obs/obs_03_0120.html
(4)Resource,資源;資源指桶或對象。您可以指定一個對象或對象集,當指定給對象集時,使用通配符(*),例如:file*。如果不輸入,則表示指定資源爲桶,且在動作處只能選擇與桶相關的。多個資源使用英文逗號分隔。
(5)Principal,桶策略被授權用戶。
“domain/賬號ID”(表示被授權用戶爲xxx賬號)。
“domain/賬號ID:user/用戶ID”(表示被授權用戶爲xxx賬號下的xxx用戶)
控制檯:
對應代碼模式:
應用案例:
步驟1:配置賬號B的一個桶,允許賬號A下的a租戶只有上傳權限,配置如下。
其中賬戶ID爲A賬戶的賬號ID
用戶ID爲A用戶a租戶的用戶ID
資源爲空代表桶本身,配置後a租戶可以掛載外部桶但沒有對象操作權限。
高級桶策略與IAM授權對比
(1) IAM的OBS細粒度權限直接授權給IAM用戶組,而OBS桶的自身細粒度規則目標只能是一個或者多個IAM用戶,對於多用戶場景創建和維護的效率較低,如下圖所示。
(2) IAM的OBS細粒度權限可以包含60個Bucket+Object動作規則,而OBS桶自身的細粒度策略中,支持的Bucket+Object動作規則只有34個,如下圖所示。這也就意味着IAM的OBS細粒度權限精細度更高。
(3) IAM的OBS細粒度權限還可以支持“列舉所有桶”操作的權限控制,這樣的全局性操作控制在OBS桶的自身高級策略中是無法實現的。
(4) OBS桶的自定義桶策略,設定的Bucket訪問權限只能針對該桶自己;而一條IAM的OBS細粒度權限則可以同時適配多個目標OBS桶。
(5) OBS桶的自定義桶策略,只能控制IAM用戶的OBS訪問權限,而不能控制其他雲服務對OBS資源的訪問權限的。IAM的OBS細粒度權限則可以通過委託授權來控制其他雲服務對於OBS資源的訪問權限。
(6) 不論是IAM的OBS細粒度權限控制,還是OBS桶自定義的高級桶策略中,桶的訪問控制與對象的訪問控制是分開定義的,在華爲雲的OBS服務中,桶的訪問控制規則 與 對象的訪問控制規則 是分開定義的,當前無法通過一條策略將桶本身和桶內對象都共享出去。
如下所示爲OBS桶的自定義高級桶策略:
如下所示爲IAM的OBS細粒度權限定義,也需要同時包含桶和對象兩條規則
ACL介紹:
基於賬號的訪問控制。有一個很恰當的比喻:桶owner相當於房東,房東將桶出租給房客(子賬戶),子賬戶可以將貴重物品放到自己的房間裏,但是房東沒有權利去查看。房客可以給房東鑰匙(設置對象ACL)賦予房東權限,使其有訪問權限。
應用案例:
步驟1:賬號A上傳,B賬號無權限下載
步驟2:可通過SDK,配置指定主賬號具有對象下載權限;
上傳者使用Java SDK配置指定賬號權限。
這樣對象的上傳者,就可以將對象的權限賦予給桶owner。
點擊這裏,瞭解更多精彩內容