OSS訪問的安全性
對OSS的HTTP請求可以根據是否攜帶身分識別驗證資訊分為兩種請求。一種是帶身分識別驗證的請求,一種是不帶身分識別驗證的匿名請求。帶身分識別驗證的請求有如下兩種情況:
- 要求標頭部中帶Authorization,格式為OSS + AccessKeyId + 簽名字元串。
- 請求的URL中帶OSS AccessKeyId和Signature欄位。
OSS訪問驗證流程
匿名請求的訪問流程
- 用戶的請求被發送到OSS的HTTP伺服器上。
- OSS根據URL解析出Bucket和Object。
- OSS檢查Object是否設定了ACL。
- 如果沒有設定ACL,那麼繼續4。
- 如果設定了ACL,則判斷Object的ACL是否允許匿名使用者存取。
- 允許則跳到5。
- 不允許則拒絕請求,請求結束。
- OSS判斷Bucket的ACL是否允許匿名使用者存取。
- 允許則繼續5。
- 不允許則返回,請求結束。
- 許可權驗證通過,返回Object的內容給用戶。
帶身分識別驗證請求的訪問流程
- 用戶的請求被發送到OSS的HTTP伺服器上。
- OSS根據URL解析出Bucket和Object。
- OSS根據請求的OSS的AccessKeyId獲取要求者的相關身份資訊,進行身份鑒權。
- 如果未獲取成功,則返回,請求結束。
- 如果獲取成功,但要求者不被允許訪問此資源,則返回,請求結束。
- 如果獲取成功,但OSS端根據請求的HTTP參數計算的簽名和請求發送的簽名字元串不匹配,則返回,請求結束。
- 如果身份鑒權成功,那麼繼續4。
- OSS檢查Object是否設定了ACL。
- 如果Object沒有設定ACL,那麼繼續5。
- 如果Object設定了ACL,OSS判斷Object的ACL是否允許此用戶訪問。
- 允許則跳到6。
- 不允許則拒絕請求,請求結束。
- OSS判斷Bucket的ACL是否允許此用戶訪問。
- 允許則繼續6。
- 不允許則返回,請求結束。
- 許可權驗證通過,返回Object的內容給用戶。
帶身分識別驗證訪問OSS的三種方法
-
使用控制台訪問OSS:控制台中對用戶隱藏了身分識別驗證的細節,使用控制台訪問OSS的用戶無需關注細節。
-
使用SDK訪問OSS:OSS提供了多種開發語言的SDK,SDK中實現了簽名演算法,只需要將AK資訊作為參數輸入即可。
-
根據API訪問OSS:如果您想用自己喜歡的語言來封裝調用RESTful API介面,您需要實現簽名演算法來計算簽名。具體的簽名演算法可以參考API手冊中的在Header中包含簽名和在URL中包含簽名。
關於AccessKey相關的解釋及更詳細的身分識別驗證的操作請參見存取控制。