如何讓1個外部使用者通路某個OSS資源?
某大型企業A使用OSS作為後端資源存儲平台,當該企業期望将内部資料分享給下遊合作夥伴B,那麼基于阿裡雲OSS平台,有多少種方式呢?
方式1:基于Bucket 以及Object ACL:
Bucket 所有者将需要分享的檔案ACL設定為“Public”模式,那麼外部使用者可以直接通路該檔案的URL,而不需要通過身份認證以及鑒權操作。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL0ADO2ImZwIzM2E2NwgTZkZ2NhRTYihjNlRGZ0IWYkR2MihTZjFTN38CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
圖1:配置對象的ACL
方式2:使用簽名URL方式:
Bucket所有者設定待分享檔案的簽名url資訊,外部使用者接收到該url後,在指定的時間内通路該檔案;
圖2:設定對象的簽名URL
方式3:使用RAM policy方式:
若下遊合作夥伴也是阿裡雲使用者,那麼可以基于sts(Security Token Service)方式進行授權通路,企業A管理者建立角色Role A,并且指定企業B賬号進行扮演該角色Role A,通知企業A管理者設定RAM Policy(如下),并且将該RAM Policy賦予給Role A。企業B管理者可以使用根賬号或者子賬号扮演角色RoleA,然後使用Assumerole傳回的臨時token以及secret ID資訊在指定的時間段内通路企業A的資源。
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:GetObject",
"oss:ListObjects",
"oss:GetObjectAcl"
],
"Resource": [
"acs:oss:*:*:test-resource"
],
"Condition": {}
}
]
}
方式4:使用Bucket Policy:
若下遊合作夥伴也是阿裡雲使用者,那麼Bucket Owner可以直接基于該資源配置Bucket Policy政策,在政策中指定允許通路該資源的對象,以及允許的通路操作權限。
圖3:設定Bucket Policy
Bucket policy 優劣勢
針對使用者通路資源的授權,我們列出了常見的4種不同的配置方式,那麼這4種配置方式各有設麼優缺點呢?
圖5:4種配置方式的優劣勢
Bucket Policy是什麼?
預設情況下,所有阿裡雲OSS資源都是私有的,包括Bucket,對象。隻有資源擁有者才能通路這些資源,另外資源的擁有者可以通過配置通路政策授權他人通路權限。
阿裡雲OSS提供的通路政策大緻可分為基于資源的政策以及基于使用者的政策兩類。附加到資源(Bucket和對象)的通路政策稱之為基于資源的政策。例如,Bucket Policy以及通路控制清單(ACL)就是基于資源的政策,另外也可以将通路政策附加到根賬号下的子使用者,這種政策稱之為使用者政策,例如:RAM Policy。
3.1 bucket policy簡介
Bucket 的所有者可以通過設定Bucket Policy設定針對bucket以及bucket内對象的通路權限。
Bucket policy可以基于各種參數,例如“被授權賬号/子使用者,通路條件”等。附加到某個bucket的權限适用于該bucket内所有對象。設定Bucket Policy政策後,後續對該bucket的通路請求都将會受到Bucket Policy的限制。
3.2Bucket Policy配置過程
目前Bucket Policy隻能在控制台進行配置圖形化配置操作。選中某個對象,點選“授權”,或者點選“操作授權”,彈出如下配置對話框:
圖6:添加“操作授權”
各個字段的含義如下表1所示:
字段 | 值 | 描述 |
---|---|---|
授權資源 | 1. 若選中某個對象,直接點選“授權”,則此處會自動填充對應資源的路徑; 2. 若點選“操作授權”,則需要輸入對應的資源路徑。 | 1.若資源為bucket時,“授權操作”作用于bucket以及bucket内所有子對象; 2. 若資源為對象或者目錄,“授權操作”作用于該對象或者該目錄下所有的子對象; |
授權使用者 | 輸入格式: 授權給賬号:輸入對應賬号ID; 授權給子使用者:輸入對應子使用者的ID | Bucket Policy支援跨賬号授權; 若授權給匿名使用者,則勾選“所有使用者”; |
授權操作 | 為了簡化授權過程,oss針對常見的授權場景進行了簡化操作,目前隻提供“隻讀”、“讀寫”以及“完全控制”、“拒絕通路”操作。 | 1.“隻讀” 2.“讀寫”; 3. “完全控制” 4."拒絕通路" |
條件 | IP等于、IP不等于 | 當輸入多個IP位址或者IP位址段時,用英文逗号分隔; |
3.3bucket Policy配置示例
相比于RAM policy,Bucket Policy支援在控制台直接進行圖形化配置操作,并且Bucket 所有者直接可以進行通路授權。Bucket Policy常見的應用場景有如下幾種:
- 向其他賬号的子使用者授權通路
- 向匿名使用者授權于帶特定IP條件限制的通路權限
1.向其他賬号下的子使用者授權
以下政策顯示了bucket 所有者向其他賬号下的子賬号(UID:237683216696367672)授予隻讀權限的配置過程。
圖7:向其他賬号下的子賬号授權
2.向匿名使用者授權于帶特定IP條件限制的通路權限
以下示例允許向匿名使用者授予待IP限制的通路政策。例如,企業内部的機密文檔,隻允許在企業内部通路,不允許在其他區域通路。由于企業内部人員較多,針對每個人配合RAM policy,手工操作工作量非常大。是以基于bucket policy設定帶IP限制的通路政策,是非常有效的。
圖8:向匿名使用者授權于帶特定IP條件限制的通路權限
Tips:授予對bucket的匿名使用者通路操作時需謹慎使用。若授予匿名通路權限不帶條件限制,那麼意味着世界上任何人都可以通路該資源.