OSS訪問的安全性

對OSS的HTTP請求可以根據是否攜帶身分識別驗證資訊分為兩種請求。一種是帶身分識別驗證的請求,一種是不帶身分識別驗證的匿名請求。帶身分識別驗證的請求有如下兩種情況:

  • 要求標頭部中帶Authorization,格式為OSS + AccessKeyId + 簽名字元串。
  • 請求的URL中帶OSS AccessKeyId和Signature欄位。

OSS訪問驗證流程

匿名請求的訪問流程



  1. 用戶的請求被發送到OSS的HTTP伺服器上。
  2. OSS根據URL解析出Bucket和Object。
  3. OSS檢查Object是否設定了ACL。
    • 如果沒有設定ACL,那麼繼續4。
    • 如果設定了ACL,則判斷Object的ACL是否允許匿名使用者存取。
      • 允許則跳到5。
      • 不允許則拒絕請求,請求結束。
  4. OSS判斷Bucket的ACL是否允許匿名使用者存取。
    • 允許則繼續5。
    • 不允許則返回,請求結束。
  5. 許可權驗證通過,返回Object的內容給用戶。

帶身分識別驗證請求的訪問流程



  1. 用戶的請求被發送到OSS的HTTP伺服器上。
  2. OSS根據URL解析出Bucket和Object。
  3. OSS根據請求的OSS的AccessKeyId獲取要求者的相關身份資訊,進行身份鑒權。
    • 如果未獲取成功,則返回,請求結束。
    • 如果獲取成功,但要求者不被允許訪問此資源,則返回,請求結束。
    • 如果獲取成功,但OSS端根據請求的HTTP參數計算的簽名和請求發送的簽名字元串不匹配,則返回,請求結束。
    • 如果身份鑒權成功,那麼繼續4。
  4. OSS檢查Object是否設定了ACL。
    • 如果Object沒有設定ACL,那麼繼續5。
    • 如果Object設定了ACL,OSS判斷Object的ACL是否允許此用戶訪問。
      • 允許則跳到6。
      • 不允許則拒絕請求,請求結束。
  5. OSS判斷Bucket的ACL是否允許此用戶訪問。
    • 允許則繼續6。
    • 不允許則返回,請求結束。
  6. 許可權驗證通過,返回Object的內容給用戶。

帶身分識別驗證訪問OSS的三種方法

  • 使用控制台訪問OSS:控制台中對用戶隱藏了身分識別驗證的細節,使用控制台訪問OSS的用戶無需關注細節。

  • 使用SDK訪問OSS:OSS提供了多種開發語言的SDK,SDK中實現了簽名演算法,只需要將AK資訊作為參數輸入即可。

  • 根據API訪問OSS:如果您想用自己喜歡的語言來封裝調用RESTful API介面,您需要實現簽名演算法來計算簽名。具體的簽名演算法可以參考API手冊中的在Header中包含簽名在URL中包含簽名

關於AccessKey相關的解釋及更詳細的身分識別驗證的操作請參見存取控制。