Object Storage Service提供多層次許可權控制機制,確保資料在儲存和訪問過程中的安全性。以下介紹OSS許可權與存取控制的整體架構,協助理解各控制方式的定位和差異,根據業務需求選擇合適的方案。
快速選擇
情境 | 推薦方案 |
資料私人,阻止非授權使用者和匿名訪問 | Bucket ACL設為私人(預設配置) |
對外提供公開可讀的靜態資源 | Bucket ACL設為公用讀取,配合防盜鏈防止資源盜用 |
授權多個使用者訪問特定Bucket | Bucket Policy,僅需單條策略即可指定允許的使用者列表 |
統一管理某個使用者可訪問的所有資源 | RAM Policy綁定到該使用者 |
將資源共用給其他阿里雲帳號 | |
同一Bucket為多個應用或團隊提供差異化訪問 | 存取點,每個應用或團隊獨立的入口和策略 |
防止誤配置導致資料公開泄露 | |
瀏覽器端JavaScript訪問OSS |
鑒權機制
OSS根據請求類型採用不同的鑒權流程:
簽章要求:OSS驗證簽名有效性後,分別評估RAM Policy、Bucket Policy、ACL,綜合判定是否允許訪問。
匿名請求:OSS評估Bucket Policy和ACL是否允許公開訪問。
鑒權結果分為三類:Allow(策略明確授權)、Explicit Deny(策略明確拒絕,優先順序最高)、Implicit Deny(無授權則拒絕)。
完整的鑒權流程請參見OSS鑒權詳解。
許可權控制方式
ACL
ACL(存取控制清單)通過預定義的許可權等級控制資源的公開或私人狀態,是最簡單的許可權控制方式。
Bucket ACL控制儲存空間的預設存取權限,Object ACL控制單個對象的許可權(優先順序更高),Object ACL未指定時預設繼承Bucket ACL。支援以下許可權等級:
許可權等級 | 效果 |
私人(private) | 資料私人,僅資源擁有者或被授權使用者可訪問 |
公用讀取(public-read) | 任何人可讀取,僅資源擁有者或被授權使用者可寫入 |
公用讀寫(public-read-write) | 任何人可公開讀取和寫入 |
ACL僅支援預定義等級,無法指定授權對象或條件限制。如需精細控制,請使用Bucket Policy或RAM Policy。
Bucket Policy
Bucket Policy是配置在Bucket上的授權策略,定義誰可以訪問此Bucket中的資源。支援授權給RAM使用者、其他阿里雲帳號或匿名使用者,並可設定IP地址、VPC、時間等條件限制。
當需要授權多個使用者訪問同一Bucket時,單條Bucket Policy即可完成,無需為每個使用者單獨配置。
實踐教程:基於VPC Policy和Bucket Policy實現雙重存取控制 | 基於Bucket Policy實現跨部門資料共用
RAM Policy
RAM Policy是綁定到使用者身份上的授權策略,定義該使用者可以訪問哪些OSS資源,適合統一管理某個使用者或應用在多個Bucket上的許可權。
OSS提供系統策略(如AliyunOSSFullAccess、AliyunOSSReadOnlyAccess)可直接使用,也支援自訂策略。通過RAM角色可實現跨帳號訪問和STS臨時授權。
Bucket Policy與RAM Policy區別
維度 | Bucket Policy | RAM Policy |
配置位置 | Bucket上 | RAM身份主體上 |
管理視角 | 以資源為中心:誰可以訪問此資源 | 以身份為中心:身份主體可訪問哪些資源 |
匿名訪問 | 支援 | 不支援 |
選擇建議:授權多個使用者訪問同一資源時Bucket Policy更高效;管理單個使用者的所有資源許可權時RAM Policy更直觀;需要匿名訪問時只能用Bucket Policy。兩者可同時使用,OSS會綜合評估,都允許時請求才通過。
存取點
存取點(Access Point)為Bucket提供獨立的訪問入口。當一個Bucket需要被多個應用或團隊以不同許可權訪問時,可為每個訪問方建立獨立的存取點,通過存取點策略(AP Policy)分別管理各自的許可權,避免在單一Bucket Policy中維護複雜的規則。
每個存取點擁有獨立的訪問網域名稱、AP Policy和網路限制配置。使用者通過存取點訪問時,需要RAM Policy與Bucket Policy的合并結果為Allow,且AP Policy也為Allow,請求才通過。
安全防護
阻止公用訪問
阻止公用訪問開啟後,即使ACL或Bucket Policy配置了公開授權也不會生效,防止因誤配置導致資料泄露。可在帳號層級(作用於所有Bucket)、Bucket層級或存取點層級獨立配置,優先順序依次遞減。
儲存敏感性資料且無匿名訪問需求時,建議在帳號層級開啟此功能。
防盜鏈
防盜鏈通過校正HTTP要求標頭中的Referer欄位,阻止未授權網站引用OSS資源。支援白名單模式(僅允許指定網域名稱)和黑名單模式(拒絕指定網域名稱)。適用於防止圖片、視頻等資源被盜用。
Referer可被偽造,如需更高安全性建議使用簽名URL。
跨網域設定
瀏覽器預設禁止網頁JavaScript訪問不同網域名稱的資源。通過配置CORS規則,OSS會在響應中返回允許跨域的頭資訊,使瀏覽器允許存取請求。適用於前端直傳檔案、擷取資源等情境。
授權策略文法
Bucket Policy、RAM Policy和AP Policy均使用JSON格式定義,核心元素包括:
元素 | 說明 |
Effect | 授權效果: |
Principal | 授權對象(RAM Policy不需要) |
Action | 授權操作,如 |
Resource | 授權資源範圍 |
Condition | 生效條件(可選) |
完整的文法說明和Action列表請參見OSS授權文法與元素。