本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
當您的存儲空間(Bucket)被惡意攻擊、流量被惡意盜刷時,會出現高帶寬或者大流量突發的情況,進而產生高于日常消費金額的賬單。如果您希望降低因類似情況帶來的大額資金損失的風險,請參考本文提供的多種安全最佳實踐。
以下最佳實踐遵循通用準則,并不等同完整的安全解決方案。這些最佳實踐可能不適合您的環境或不滿足您的環境要求,僅建議將其視為參考因素。請您在日常使用中提高數據安全意識并時刻做好內容安全防范措施。
大額資金損失風險
當您的Bucket被惡意攻擊、流量被惡意盜刷時,會產生以下大額資金損失風險:
高額賬單:當您的Bucket被惡意攻擊、流量被惡意盜刷時,實際消耗了OSS的帶寬資源,因此您需要自行承擔攻擊產生的流量帶寬費用。
超出賬戶余額的賬單:OSS按量計費,其賬單金額受計費周期和賬單處理時延等因素的影響,無法做到賬戶余額為0的情況下立即停機,因而可能會出現欠費金額大于0,或者單條賬單的欠費金額直接超出您的延期免停權益范圍。當您的存儲空間(Bucket)被惡意攻擊、流量被惡意盜刷時,極易出現高額賬單,連帶出現的風險是賬單金額往往會超出您的賬戶余額。
阻止公共訪問
OSS支持通過設置Bucket Policy以及ACL的方式實現公共訪問。公共訪問是指無需特定權限或身份驗證即可對OSS資源進行訪問。公共訪問容易引發數據泄露以及被惡意訪問而產生大量外網下行流量的風險。為避免公共訪問可能帶來的風險,OSS支持在OSS全局、單個Bucket、單個接入點和單個對象FC接入點的維度一鍵開啟阻止公共訪問。開啟阻止公共訪問后,已有的公共訪問權限會被忽略,且不允許創建新的公共訪問權限,以此關閉數據的公開訪問渠道,確保數據安全。具體步驟,請參見阻止公共訪問。
通過終端節點私網訪問OSS資源
使用終端節點私網(PrivateLink)允許您將VPC與OSS進行安全的私有連接,避免通過公網訪問帶來的各種潛在安全風險。這種連接方式不僅可以提高數據安全性,還可以降低因惡意訪問流量導致的大額資金損失的可能性。具體說明如下:
隔離性:使用終端節點私網訪問OSS資源,可以將OSS與公共互聯網隔離。確保只有在您明確授權的VPC內,才能訪問到您的OSS資源,避免了來自公共互聯網上的惡意訪問和攻擊。
控制權限:通過VPC內的終端節點,您可以更精細地控制對OSS資源的訪問權限。例如,限制某些IP地址或子網的訪問,或者設置特定的安全組規則等,進一步增強了安全性。
流量監控:在VPC內部署服務,您可以更好地監控和管理網絡流量,及時發現并處理異常流量,防止惡意訪問帶來的風險。
具體步驟,請參見通過終端節點私網訪問OSS資源。
修改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為私有訪問權限之前,請自行確認業務本身不受影響。
具體步驟,請參見設置存儲空間讀寫權限ACL和設置文件讀寫權限ACL。
通過云監控配置報警規則
當您需要監控OSS資源的使用和運行情況時,可以通過云監控創建閾值報警規則,實現監控指標超過靜態閾值或動態閾值后自動發送報警通知的功能,幫助您及時了解監控數據異常并快速進行處理。
例如,您可以為某個Bucket配置報警規則,并在報警規則中指定當連續一個周期(1周期=1分鐘)出現公網流入流量、公網流出流量、CDN流入流量、CDN流出流量等在其大于或等于100 Mbytes,將告警信息寫入日志服務指定的Logstore中。
以公網流入流量大于或者等于100 Mbytes時觸發報警為例,其報警規則配置如下:
您可以基于Bucket的維度配置報警規則,您還可以為當前阿里云賬號下的所有OSS資源配置報警規則。具體步驟,請參見創建報警規則。
配置防盜鏈
通過在OSS中配置基于請求標頭Referer的訪問規則,可以阻止某些Referer訪問您的OSS文件,從而防止其他網站盜用您的文件,并避免由此引起的不必要的流量費用增加。
當瀏覽器向OSS發送請求時,請求標頭中將包含Referer,用于告知OSS該請求的頁面鏈接來源。如果配置了防盜鏈,OSS將根據請求的Referer與配置的Referer規則來判斷是否允許此請求:
如果瀏覽器附帶的Referer與黑名單Referer匹配,或與白名單Referer不匹配,則OSS將拒絕該請求的訪問。
如果瀏覽器附帶的Referer與白名單Referer匹配,則OSS將允許該請求的訪問。
例如,某個Bucket配置了白名單Referer為https://10.10.10.10
。
用戶A在
https://10.10.10.10
嵌入test.jpg圖片,當瀏覽器請求訪問此圖片時會帶上https://10.10.10.10
的Referer,此場景下OSS將允許該請求的訪問。用戶B盜用了test.jpg的圖片鏈接并將其嵌入
https://192.168.0.0
,當瀏覽器請求訪問此圖片時會帶上https://192.168.0.0
的Referer,此場景下OSS將拒絕該請求的訪問。
更多信息,請參見防盜鏈。
設置跨域資源共享
跨域資源共享CORS(Cross-Origin Resource Sharing)簡稱跨域訪問,是HTML5提供的標準跨域解決方案,允許Web應用服務器進行跨域訪問控制,確保跨域數據傳輸的安全性。跨域訪問是瀏覽器出于安全考慮而設置的限制,是一種用于隔離潛在惡意文件的關鍵安全機制。當A、B兩個網站屬于不同域時,來自于A網站頁面中的JavaScript代碼訪問B網站時,瀏覽器會拒絕該訪問。
OSS支持根據需求靈活配置CORS規則,實現允許或者拒絕相應的跨域請求。例如,您希望僅允許來源為www.aliyun.com
、跨域請求方法為GET
的請求,則CORS規則配置如下:
具體步驟,請參見設置跨域資源共享。
避免使用順序前綴的方式命名文件
當您上傳大量文件時,如果使用順序前綴(如時間戳或字母順序)、日期、數字ID等可以被遍歷的方式來命名文件,攻擊者可通過總結規律以及編寫腳本的方式獲取全部的文件,最終造成數據泄露。強烈建議您通過向文件名添加十六進制哈希前綴或以反轉文件名的方式命名文件,從而有效降低文件名被遍歷的風險。具體操作,請參見數據安全。