4種微服務系統認證策略
軟體安全本身就是個很複雜的問題,由於微服務系統中的每個服務都要處理安全問題,所以在微服務場景下會更復雜。David Borsos在最近的倫敦微服務大會上作了相關內容的演講,並評估了四種面向微服務系統的身份驗證方案。
在傳統的單體架構中,單個服務儲存所有的使用者資料,可以校驗使用者,並在認證成功後建立HTTP會話。在微服務架構中,使用者是在和服務集合互動,每個服務都有可能需要知道請求的使用者是誰。一種樸素的解決方案是在微服務系統中應用與單體系統中相同的模式,但是問題就在於如何讓所有的服務訪問使用者的資料。解決這個問題大致兩個思路:若使用共享使用者資料庫時,更新資料庫表會成為一個難題,因為所有服務必須同時升級以便能夠對接修改後的表結構;若將相同的資料分發給所有服務時,當某個使用者已經被認證,如何讓每個服務知曉這個狀態是一個問題。
Borsos指出,單點登入(SSO)方案可能看起來是一個好主意,但這意味著每個面向使用者的服務都必須與認證服務互動,這會產生大量非常瑣碎的網路流量,同時這個方案實現起來也相當複雜 。 在其他方面,選擇SSO方案安全性會很好,使用者登入狀態是不透明的,可防止攻擊者從狀態中推斷任何有用的資訊。
分散式會話方案,原理主要是將關於使用者認證的資訊儲存在共享儲存中,且通常由使用者會話作為key來實現的簡單分散式雜湊對映。 當使用者訪問微服務時,使用者資料可以從共享儲存中獲取。 該解決方案的另一個優點是使用者登入狀態是不透明的。 當使用分散式資料庫時,它也是一個高度可用且可擴充套件的解決方案。 這種方案的缺點在於共享儲存需要一定保護機制,因此需要通過安全連結來訪問,這時解決方案的實現就通常具有相當高的複雜性了。
客戶端令牌方案, 此令牌在客戶端生成,由身份驗證服務進行簽名,並且必須包含足夠的資訊,以便可以在所有微服務中建立使用者身份。 令牌會附加到每個請求上,為微服務提供使用者身份驗證。 這種解決方案的安全性相對較好,但身份驗證登出是一個大問題, 緩解這種情況的方法可以使用短期令牌和頻繁檢查認證服務等。 對於客戶端令牌的編碼方案,Borsos更喜歡使用JSON Web Tokens(JWT),它足夠簡單且庫支援程度也比較好。
客戶端令牌與API閘道器結合,這個方案意味著所有請求都通過閘道器,從而有效地隱藏了微服務。 在請求時,閘道器將原始使用者令牌轉換為內部會話ID令牌。 在這種情況下,登出就不是問題,因為閘道器可以在登出時撤銷使用者的令牌。 這種方案雖然庫支援程度比較好,但實現起來還是可能很複雜。
Borsos建議使用客戶端令牌(使用JWT)和API閘道器結合的方案,因為這個方案通常使用起來比較容易,且效能也不錯。 SSO方案雖然能滿足需求,但他認為還是應該避免使用。若分散式會話方案所需要的相關技術已經應用在你的場景上,那麼這個方案也是比較有趣的。他同時強調在選擇解決方案時應著重考慮登出的重要性。
明年的倫敦微服務大會定於2017年11月6日-7日舉行。
相關文章
- 重新認識Java微服務架構-認證服務Java微服務架構
- go-kit微服務:JWT身份認證Go微服務JWT
- 微服務整合springsecurity實現認證微服務SpringGse
- 微服務下認證授權框架的探討微服務框架
- 認識微服務微服務
- .Net Core微服務入門全紀錄(七)——IdentityServer4-授權認證微服務IDEServer
- 認證系統之登入認證系統的進階使用 (二)
- 微服務通訊策略微服務
- 基於JWT規範實現的認證微服務JWT微服務
- DRF內建認證元件之自定義認證系統元件
- 禁用作業系統認證作業系統
- Oracle 作業系統認證Oracle作業系統
- Oracle作業系統認證Oracle作業系統
- 微服務分散式事務4種解決方案實戰微服務分散式
- 四個微服務授權認證的最佳實踐 - thenewstack微服務
- 【.NET Core微服務實戰-統一身份認證】開篇及目錄索引微服務索引
- 微服務電商秒殺系統微服務
- 微服務架構 | 7.1 基於 OAuth2 的安全認證微服務架構OAuth
- 網路認證計費系統
- Oracle中兩種認證方式:OS認證與口令檔案認證Oracle
- 作業系統認證與ORACLE密碼檔案認證方式作業系統Oracle密碼
- 【登陸認證】oracle的作業系統認證和口令檔案認證方式(轉載)Oracle作業系統
- springsecurity透過策略模式設定統一認證介面SpringGse模式
- 小型系統如何“微服務”開發微服務
- 微服務之唯一ID生成策略微服務
- 系統多種使用者角色認證登入授權如何實現?
- 寬頻認證計費系統的認證技術主要有哪些
- 7種微服務反模式微服務模式
- SpringCloud微服務實戰——搭建企業級開發框架(二十三):Gateway+OAuth2+JWT實現微服務統一認證授權SpringGCCloud微服務框架GatewayOAuthJWT
- 微服務架構之「 監控系統 」微服務架構
- 微服務架構下的系統整合微服務架構
- 微服務實踐手冊-服務的拆分策略微服務
- 微服務架構中的服務發現策略微服務架構
- 1.6.4.2. 準備作業系統認證作業系統
- Django 使用者認證系統:註冊Django
- 統一身份認證系統的簡單看法
- 構建微服務的三種重要模式 - DZone微服務微服務模式
- 為什麼無線認證系統能被人們認可