對象存儲服務訪問控制原理介紹(四):使用場景
本想介紹一下StringToSign的生成規則,但OBS官網已有詳述,因此本章介紹使用場景。
https://support.huaweicloud.com/api-obs/zh-cn_topic_0100846721.html
只要用戶想要限制對數據的訪問,那么就需要進行身份認證。換句話說:除非這個數據就是為了給全世界看的,否則都需要做身份認證。
具體到OBS,數據也分為內部數據和租戶數據:
·???????? 內部數據包括:配置類數據、運維類數據、運營類數據、監控類數據等。
·???????? 租戶數據包括:桶/對象數據、桶/對象元數據、日志數據等。
OBS除了給互聯網租戶提供服務之外,同時也給華為云內部服務提供存儲能力,因此涉及數據的訪問場景分為如下:
·???????? OBS內部數據訪問場景
·???????? 華為云內部數據訪問場景
·???????? 租戶數據訪問場景
OBS內部數據訪問場景
OBS運行過程中,需要完成復雜的解決方案場景,在這些場景中,OBS同樣有訪問數據的訴求:
·???????? 話單、日志等數據存儲
OBS產生的話單、日志數據會存儲在內部租戶的特定桶中,由特定的AK/SK訪問,AK/SK的規則和租戶規則相同。區別在于內部租戶的AK/SK由OBS自行管理;
租戶的請求會產生訪問日志和話單,這些日志和話單分散在各個集群節點,節點將按各種觸發條件將數據存儲到內部桶中。用于安全審計和計費。
·???????? 對象復制等需要跨集群、跨Region數據訪問功能
因OBS跨Region/AZ的部署形式,會出現多種類型的跨Region/AZ訪問請求,這些請求由用戶發起,但完成功能需要內部集群相互配合,配合的過程中,也需要進行身份認證。憑證和上一場景相同。
用戶發起復制請求,想要把位于Region2桶bucket2中的obj002對象,復制為位于Region1桶bucket1的obj001對象。
Region1中的OBS節點,會以內部請求的形式訪問Region2的OBS節點,并將獲取到的對象數據寫入到Region1中的桶。
華為云內部數據訪問場景
為保證數據的高可靠性,華為云內部服務通常也會將OBS作為數據中轉設備或最終的數據存儲基礎設施。同時,解決方案場景下,OBS也將作為其中的組成部分,和其它服務共同組成行業解決方案。
·? ??? ??云硬盤備份
為云硬盤提供在線備份,通過備份快速恢復數據,保證業務安全可靠。OBS作為存儲數據的終點。提供最終的可靠性保證(11個9)。
通常華為云內部服務在IAM會有自己的特定租戶,訪問OBS將會通過這部分租戶的憑證發起請求,而OBS針對這些租戶的處理流程大致和普通租戶相同。
·?? ??? ??大數據分析
OBS作為存儲數據的中轉和終點,快速、可靠傳遞和存儲數據。
租戶數據訪問場景
租戶數據訪問是OBS的核心業務場景,按照業務場景大致歸類為如下3類:
·???????? 匿名訪問
租戶可以通過設置桶為公共讀的方式,將數據在互聯網公布,此時,任何人都可以通過特定的URL訪問到該桶的數據。比如:企業門戶網站、公開文檔等。
顧名思義,匿名訪問場景下訪問者不需要攜帶任何憑證信息。直接通過HTTP GET URL的形式就可以訪問。
通常情況下,如果用戶HTTP REQUEST中沒有攜帶“Authorization”頭域,則認為本次是匿名訪問,匿名訪問不會進行身份認證,請求將進入權限判斷,如果請求訪問的數據不是“公共讀”的數據,則請求會被拒絕。
·???????? 臨時認證
某些場景下,用戶訪問OBS時沒有或不適合使用永久憑證,那么此時可以使用臨時憑證進行認證。比如:租戶對他自己的客戶提供服務,但是這個服務需要他的客戶直接訪問OBS。
舉一個較實際的例子:
A公司是一個游戲公司,開發的手游風靡全國。A公司將游戲服務器端部署在了華為云ECS,并使用OBS存儲數據。時間到了7月,A公司為了增強游戲可玩性,發布了新補丁并將補丁推送到了OBS。A公司希望他的客戶可以直接訪問OBS下載補丁,因為這樣可以省去ECS做中轉,防止服務器因流量過大而崩潰。但不希望任何人都能下載這個補丁,因為下載補丁會產生流量和訪問次數費用。
此時,可以使用臨時憑證,服務器端為每個客戶端申請限時的臨時憑證,并將憑證返回給手機端,手機端使用該憑證直接訪問OBS獲取升級補丁。
具體流程如下:
1、? 用戶使用SK和String To Sign生成簽名Signature;
2、? 將Signature和AK合并為Authorization頭域;
3、? STS Token作為臨時憑證直接作為x-amz-security-token頭域;
4、? OBS接收到本次請求后,將Authorization頭域拆分為Signature和AK;
5、? 按照String To Sign的規則在OBS服務器端再計算一次;
6、? 將AK和STS Token傳遞給IAM Server;
7、? IAM Server解析后返回SK,該SK即為用戶簽名時使用的SK;
8、? 使用SK和String To Sign再計算一次簽名Signature;
9、? 比較Signature1和Signature,如果相等則Allow,否則Deny。
注1:STS Token由IAM生成,在申請臨時憑證時,會隨響應返回,所以,臨時憑證其實包含3個組成部分:AK/SK/STS Token,這也是和標準憑證的主要區別。
注2:STS Token起什么作用呢?主要是解決IAM存儲瓶頸問題。設想這樣一個場景,一個正常用戶頻繁申請臨時憑證,而IAM為了后續能夠解析AK/SK,必須在本地數據庫存儲這個臨時AK/SK,每次訪問就是一條AK/SK記錄,臨時憑證的不重復和接口調用不受限的特性,會導致IAM數據庫無限膨脹下去。為了解決這個問題,STS Token應運而生,IAM會將SK信息直接加密放到STS Token中,IAM自身不維護任何持久化信息。解析時,IAM只需要將STS Token解密(當然,也只有IAM可以解密這個數據。),然后把解密后的SK返回給調用方即可。這也是上述步驟為什么要傳入STS Token的原因。
·???????? 標準認證
主要的OBS使用場景,如果用戶持有AK/SK直接訪問OBS,都屬于該場景。
具體的應用場景可參考:
https://www.huaweicloud.com/product/obs.html
具體流程如下:
1、? 用戶使用SK和String To Sign生成簽名Signature;
2、? 將Signature和AK合并為Authorization頭域;
3、? OBS接收到本次請求后,將Authorization頭域拆分為Signature和AK;
4、? 按照String To Sign的規則在OBS服務器端再計算一次;
5、? 將AK傳遞給IAM Server;
6、? IAM Server解析后返回SK,該SK即為用戶簽名時使用的SK;
7、? 使用SK和String To Sign再計算一次簽名Signature;
8、? 比較Signature1和Signature,如果相等則Allow,否則Deny。
總結
講了這么多場景,可以看出,無論什么樣的場景,最終其實還是歸結到HMAC算法結果的比較。場景的區別在于:
·???????? 憑證由誰維護(OBS維護內部數據訪問場景下的憑證,其余由IAM維護)
·???????? 憑證如何獲取(臨時憑證通常由租戶提供給租戶的客戶,標準憑證由IAM提供給租戶)
·???????? 憑證如何解析(臨時憑證由IAM解密后返回,標準憑證由IAM從數據庫查詢)
所以,若分析安全風險,除了算法本身的弱點之外,還需要考慮場景使用的弱點。類似于登錄口令再復雜,如果用戶寫到紙上貼到墻上,那安全性同樣無法保證。下一章節將分析OBS身份認證的攻擊場景。
對象存儲服務
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。