對象存儲服務訪問控制原理介紹(二):身份認證
OBS身份認證簡略流程如下圖:
1、用戶使用在華為云注冊的賬號名/密碼登錄華為云;
2、登錄成功后,在IAM Console申請AK/SK;
3、利用申請到的SK計算出單次OBS HTTP 請求的簽名;
4、將AK和簽名隨HTTP請求發送到OBS;
5、OBS使用HTTP請求攜帶的AK到IAM獲取用戶SK;
6、IAM返回用戶AK對應的SK;
7、OBS使用和第3部完全相同的方式計算出簽名,并驗證簽名是否相同;
8、驗證通過,請求成功,返回對象數據。
這其中有3步涉及到了身份認證:
1、第1步,用戶和IAM之間的身份認證;用戶只有通過了認證才能生成并下載到AK/SK;
2、第5步,OBS和IAM之間的身份認證;OBS只有通過了認證才能通過AK查詢到對應的SK;
3、第7步,用戶和OBS之間的身份認證;用戶只有通過了認證才能訪問到對象數據
注:實際過程中,這些操作還需要進行鑒權,確認該用戶是否有執行操作的權限,這里為了防止誤解,沒有在描述中說明。
從上面的過程也可以看出,認證的目的最終其實還是保護數據,上面分別保護:SK、SK、Object Content。
有了簡略流程,我們再回過頭來講認證方案:
認證(Authentication)是指通過一定的手段,完成對用戶身份的確認。
身份認證的目的是確認當前所聲稱為某種身份的用戶,確實是所聲稱的用戶。一般來說,有如下3種因素能夠用于身份認證:
·???????? 某人所知道的內容
根據知識進行身份認證,可以是:密碼、PIN、短語或家里小狗的名字。
優點:實現簡單、經濟實惠
缺點:易丟失
·???????? 某人所擁護的物品
根據所有權進行身份認證,可以是:鑰匙、門卡、身份證等。
優點:安全性較高
缺點:需要物理接觸攜帶不方便
·???????? 某人的身份
根據生物特征進行身份認證,可以是:指紋、虹膜、聲紋、行為等。
優點:安全性最高
缺點:成本高,依賴硬件,不正確的實現將導致憑證永久丟失
實際實現中,為追求更高級別的安全性,一般會使用上訴兩種甚至三種方式的組合,對應我們通常所說的“雙因素認證Two-factor authentication (TFA or 2FA)?”“多因素認證Multi-factor authentication (MFA)”。
上訴簡略流程中的3步認證,均使用到了“某人所知道的內容”(注:IAM還支持雙因素認證,這里不詳細解釋)。該方式一般有如下實現方案:
·???????? 基于賬號口令的認證
·???????? 基于預共享密鑰的認證
·???????? 基于公鑰的認證
·?????????基于數字證書的認證
IAM使用“基于賬號口令的認證”方案,對用戶和對OBS均通過分發賬號口令,登錄時驗證來完成身份認證,由于這部分主要由IAM控制,這里不做詳細解釋。
OBS使用“基于預共享密鑰的認證”方案,一般場景下,有如下要點:
·???????? 算法選擇:對稱加密算法 or 密碼校驗函數
·???????? 連接場景:長連接 or 短連接
·???????? 時變參數:隨機數 or 時間戳
·???????? 認證模型:雙向認證 or 單向認證
OBS業務不同于傳統B/S場景,業務上下文無強制依賴,無需維護復雜的會話生命周期,連接場景基于:短連接;業務對性能要求極高,對稱加密算法雖然具有同時實現認證和加密的優點,但性能較低,因此算法選擇:密碼校驗函數;業務要求單次短連接,時變參數不適合需要多次交互的隨機數,因此時變參數選擇:時間戳;同時因為單次短連接原因,認證模型也不適合需要多次交互的雙向認證,因此認證模型選擇:單向認證。
總結起來:OBS使用的是一種:基于預共享SK使用密鑰校驗算法包含時間戳的單向單次認證方式。
·???????? 預共享SK:用戶在IAM申請AK/SK并僅有一次下載機會。
·???????? 密鑰校驗算法:基于RFC2104 HMAC算法。
·???????? 時間戳:請求訪問的時間會包含在算法簽名中。
·???????? 單向:服務端認證客戶端。
·???????? 單次:短連接,每次訪問都進行認證。
方案的安全機制:
通過比較簽名的形式來確認身份。客戶端在發起請求前,需要將頭域和內容hash進行HMAC計算,得到的字符竄就是簽名??蛻舳藢⒑灻SHTTP頭域一同發給服務器端,服務器端將按照同樣的方式再計算一次,相同則認證通過。有如下優點:
·???????? 防仿冒:只有持有正確預共享SK的用戶才能通過認證,訪問指定資源;
·???????? 防竊聽:SK作為密鑰參與簽名,但不需要在網絡傳輸,無法被竊聽;
·???????? 防篡改:內容hash值也參與簽名,若被篡改,服務器端將拒絕請求;
·???????? 防重放:時間也參與簽名,超時服務器端將拒絕請求;
對象存儲服務
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。