全部產品
Search
文件中心

Object Storage Service:降低因帳號密碼泄露帶來的未授權訪問風險

更新時間:Jun 19, 2024

如果因個人或者企業帳號密碼泄露引發了未經授權的訪問,可能會出現非法使用者對OSS資源進行違法操作,或者合法使用者以未授權的方式對OSS資源進行各類操作,這將給資料安全帶來極大的威脅。為此,OSS提供了在實施資料安全保護時需要考慮的多種安全最佳實務。

重要

以下最佳實務遵循一般準則,並不等同完整的安全解決方案。這些最佳實務可能不適合您的環境或不滿足您的環境要求,僅建議將其視為參考因素。請您在日常使用中提高資料安全意識並時刻做好Alibaba Content Security Service防範措施。

修改ACL為私人存取權限

除非您明確要求包括匿名訪問者在內的任何人都能讀寫您的OSS資源,包括儲存空間(Bucket)以及檔案(Object),否則請勿將Bucket或者Object的讀寫權限ACL設定為公用讀取(public-read)或者公用讀寫(public-read-write)。設定公用讀取或者公用讀寫許可權後,對訪問者的許可權說明如下:

  • 公用讀寫:任何人(包括匿名訪問者)都可以對該Bucket內的Object進行讀寫操作。

    警告

    互連網上任何使用者都可以對該Bucket內的Object進行訪問,並且向該Bucket寫入資料。這有可能造成您資料的外泄以及費用激增,若被人惡意寫入違法資訊還可能會侵害您的合法權益。除特殊情境外,不建議您配置公用讀寫許可權。

  • 公用讀取:只有該Bucket的擁有者可以對該Bucket內的Object進行寫操作,任何人(包括匿名訪問者)都可以對該Bucket內的Object進行讀操作。

    警告

    互連網上任何使用者都可以對該Bucket內的Object進行訪問,這有可能造成您資料的外泄以及費用激增,請謹慎操作。

鑒於公用讀取或者公用讀寫許可權對OSS資源帶來的資料安全風險考慮,強烈建議您將Bucket或者Object的讀寫權限設定為私人(private)。設定為私人許可權後,只有該Bucket擁有者可以對該Bucket以及Bucket內的Object進行讀寫操作,其他人均無存取權限。因此,在修改ACL為私人存取權限之前,請自行確認業務本身不受影響。

您可以通過多種方式將Bucket或者Object的讀寫權限設定為私人,具體步驟請參見設定儲存空間讀寫權限ACL設定檔案讀寫權限ACL

避免代碼明文使用AccessKey或本地加密儲存AccessKey

代碼中明文使用AccessKey會由於各種原因的代碼泄露導致AccessKey泄露。而本地加密儲存AccessKey也並不安全,原因是資料的加解密內容會存放在記憶體中,而記憶體中的資料可以被轉儲。尤其是移動App和PC案頭應用極易出現此類問題,攻擊者只需要使用某些注入、API HOOK、動態調試等技術,就可以擷取到加解密後的資料。

服務端可以通過阿里雲SDK託管憑據外掛程式的方式規避代碼明文使用AccessKey,解決因源碼或編譯產物泄露而導致的AccessKey泄露問題。有關阿里雲SDK託管憑據外掛程式的工作原理及使用方式的更多資訊,請參見多種阿里雲SDK的託管憑據外掛程式

重要

此方案不適用於用戶端,請不要以任何方式在用戶端內建任意形式的AccessKey。

以RAM使用者的方式訪問OSS

阿里雲帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM使用者進行API訪問或日常營運。

建立RAM使用者後,您可以控制這些RAM使用者對資源的操作許可權。當您的企業存在多使用者協同操作資源的情境時,可以讓您避免與其他使用者共用阿里雲帳號密鑰,按需為使用者指派最小許可權,從而降低企業的資訊安全風險。建立RAM使用者的具體步驟,請參見建立RAM使用者

RAM使用者建立完成後,您可以通過RAM Policy為RAM使用者授權的方式來集中管理您的使用者(例如員工、系統或應用程式),以及控制使用者可以訪問您名下哪些資源的許可權。例如,您可以通過以下RAM Policy阻止指定RAM使用者訪問目標儲存空間examplebucket及examplebucket內的檔案或目錄。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "oss:*",
            "Resource": [
                "acs:oss:*:*:examplebucket",
                "acs:oss:*:*:examplebucket/*"
            ]
        }
    ]
}

您還可以通過RAM Policy拒絕RAM使用者刪除某個Bucket下任意檔案、或者授權RAM使用者僅擁有讀取某個Bucket資源的許可權等。有關RAM Policy常見情境的授權樣本,請參見RAM Policy常見樣本

啟用多因素認證

多因素認證MFA(Multi Factor Authentication)是一種簡單有效最佳安全實踐。啟用MFA後,登入阿里雲控制台時需要輸入帳號密碼和MFA裝置即時產生的動態驗證碼,在帳號密碼泄露時也可以阻止未授權訪問,提高帳號安全性。

您可以選擇為阿里雲帳號啟用MFA,具體步驟請參見為阿里雲帳號綁定MFA裝置。您還可以選擇為RAM使用者啟用MFA,具體步驟請參見為RAM使用者綁定MFA裝置

STS臨時授權訪問OSS

您可以通過STS服務給其他使用者頒發一個臨時訪問憑證。該使用者可使用臨時訪問憑證在規定時間內訪問您的OSS資源。臨時訪問憑證無需透露您的長期密鑰,使您的OSS資源訪問更加安全。

有關STS臨時授權訪問OSS的具體步驟,請參見開發指南中的使用STS臨時訪問憑證訪問OSS

Bucket Policy

Bucket Policy是阿里雲OSS推出的針對Bucket的授權策略,您可以通過Bucket Policy授權其他使用者訪問您指定的OSS資源。通過Bucket Policy,您可以授權另一個帳號訪問或管理整個Bucket或Bucket內的部分資源,或者對同帳號下的不同RAM使用者授予訪問或管理Bucket資源的不同許可權。

配置Bucket Policy時,請遵循以下許可權最小化原則,從而降低資料安全風險。

  • 避免授權整個Bucket

    資源授權過大容易導致其他使用者資料被非法訪問,所以在實際生產業務中請限制指定資源途徑,避免授權整個Bucket。

  • 不授權匿名訪問

    允許匿名訪問意味著使用者只需要知道Endpoint和Bucket名稱就可以正常訪問OSS,而EndPoint是可以枚舉的,Bucket名稱也可以從已授權的訪問檔案URL中提取。由此可見,授權允許匿名訪問會帶來極大的安全風險。

  • 設定合理的Action

    通過控制台的圖形化配置Bucket Policy時,簡單設定中的四類授權操作(Action)僅為使用者提供了一種便捷的Policy設定方法,每類Action並不一定完全符合您的業務需求,建議您結合業務需求並通過進階設定的方式給予授權使用者最小的許可權。例如,產生唯讀許可權往往會包含oss:ListObjectsoss:GetObject等。但是一般情境下的檔案下載只需要oss:GetObject許可權即可。

  • 啟用HTTPS訪問

    啟用HTTPS訪問可以解決網路中間人攻擊以及網域名稱劫持等問題。另外Chrome瀏覽器也對HTTP協議進行幹預,例如HTTPS網站預設無法載入HTTP資源。基於以上原因,請務必開啟HTTPS,以最低成本解決多種風險問題。

  • 限定來源的IP地址

    如果訪問OSS資源的IP地址是固定可枚舉的,強烈建議配置IP地址。

例如,通過Bucket Policy授予名為Test的RAM使用者通過SDK或者命令列工具ossutil下載目標儲存空間examplebucket下指定目錄log下所有檔案的許可權:

policy