如何保障微服務安全

2021-08-10 17:53:01 字數 1978 閱讀 8422

原文:securing microservices
摘要:如何保護微服務,確保微服務的安全,作者從保護應用程式安全和保護容器的安全兩個方面進行了闡述,以下是譯文

實現乙個微服務很難。部署乙個微服務應用程式複雜性也很高。保護微服務的安全就更難更複雜。從**開始呢?腦海中首先出現的一些詞是身份驗證和授權、防火牆、授信、會話、令牌。我們需要保護應用程式的安全,也需要保護容器的安全。

一種方法是構建乙個單點登入(sso)閘道器,像普通的閘道器一樣,它位於應用程式的前端,但需要考慮到其與sso伺服器的握手,並執行url重定向操作。可以用http報文頭髮送授權和認證資訊給服務。但是除非使用https,否則這樣做是不安全的。但是我們知道https有證書,維護多個微服務的證書可能會成為問題,尤其是需要補發或撤銷這些證書的時候,複雜性將進一步增加,我們盡量避免這種情況。

另一種方法是用hmac(基於雜湊的訊息**)。這個請求的主體帶有雜湊私鑰,結果是隨著請求傳送的。然後,伺服器通過使用其私鑰和請求主體的副本重新建立雜湊,並將其與接收到的雜湊進行比較。如果一切都匹配,那就意味著訊息沒有被篡改,請求可以通過。這種模式由jwt(json web tokens)實現。但是,事實上網路偵聽器仍然可以看到資料。

twitter,google等使用api金鑰。使用api金鑰,服務可以識別誰在呼叫,並可以對其設定限制。金鑰是成對的(公鑰和私鑰),它們必須集中管理。

假定一切都準備就緒了,但是還是有乙個問題,如何確保使用者無法訪問其他使用者的資料呢?那就需要做更多的限制,可以通過限定使用者只能訪問他自己的資料來保護我們的服務,但是將導致在許多地方產生大量的樣板**。不幸的是,沒有更好的辦法。微服務意味著複雜性和一些重複預期會被減少。

還是沒有解決嗅探器(sniffer,也叫資料抓包軟體)的問題。怎樣才能確保sniffer看不到資料呢。答案是加密。先加密,然後根據需要進行解密。這就是微服務複雜系統的另乙個元件:金鑰服務。

有很多庫可以用,最好的選擇是使用成熟的庫,如oauth或saml。

服務可以有狀態引數。為閘道器中初始化的所有服務保持乙個全域性會話,並將其傳播到所有其它服務。會話可以從像keycloak這樣的**認證和授權伺服器(sso)獲得。

我們更希望服務沒有狀態引數。這意味著需要將狀態從伺服器轉移到客戶端。json的 web令牌(jwt)非常符合這種需求。這是一種在雙方之間轉移宣告的安全方式。基本上它的乙個json作為json web簽名(jws)的主體或json web加密(jwe)的明文傳遞。宣告可以進行數字簽名,幷包含發行者,使用者的身份,到期時間,還可以包含自定義屬性。

舉乙個例子,流程看起來如下圖:

客戶端應用程式將與uaa(使用者認證和授權)伺服器進行互動。它為包含乙個jwt令牌的重定向url交換其證書。令牌將提交到閘道器,在uaa伺服器進行驗證。如果一切正常,它會將該jwt令牌**到所請求的服務,將會解碼它並授予其對所請求資源的訪問許可權。

現在已經知道如何保護應用程式了,是時候關注容器的安全了。docker是乙個廣泛使用的容器。可以做些什麼來保護它們呢?

答案是深度防禦。這意味著需要防火牆;這意味著需要小心記錄在日誌中的資訊(被攻擊後,日誌有助於快速恢復系統);這意味著需要監視集群的可疑行為(入侵檢測系統和入侵防禦系統);這意味著需要將服務分開並將它們放在不同的位置(虛擬私有雲),並建立一組規則,確保它們仍然能夠相互通訊;這意味著保持作業系統更新(特別是安全更新)。

aaron grattafiori在docker con 2023年的演講中談到三個原則:

這裡有篇文章有更多的相關細節。假設已經遵循了上述三原則,想到的下乙個問題是:使用的docker影象安全嗎?怎麼知道它們沒有包含惡意**呢?幸運的是,在docker 1.8中引入了docker content trust ,與此同時,docker影象的發布者在將其推送到登錄檔之前進行了驗證。

現在你應該有足夠的資訊來啟動你的微服務安全保護了。

如何保障業務安全

保障業務安全是企業發展的基礎。而面對如此複雜的安全危機,靠人力是永遠無法保障的。唯一的途徑就是完善網路自身的安全效能。通過技術保障的網路安全的同時,配合網路安全解決方案提供商的商務安全策略和技術支援服務,加強管理和安全策略的制定。乙個業務安全永續的商務藍圖完全可以實現。當然,網路業務安全,加強管理也...

如何保障資料安全

企業無需對資料中心機櫃或機架進行全面改造,即可進行更好的機架級控制和審計。選擇附件的良好試驗計畫可以為組織提供所需的實際操作,以確保在準備執行更完整的部署時取得成功。資料中心管理人員每天都會時刻關注資料中心的安全運營情況。因此無論如何,安全性是其最重要的關注事項 保持網路安全,保障資產不受網路攻擊的...

LikeLib如何保障資訊保安?

區塊鏈技術中採用了密碼學,這樣也是保護數字資產不會被輕易竊取,當然目前區塊鏈技術還不是很成熟,所以數字貨幣在安全方面也是值得推敲的,區塊鏈技術也是一種高度密集工程,所以在運作的過程中也難免會出現錯誤,而且即便是理論上很完備的演算法,也會有各種實現上的錯誤。區塊鏈本身強大的資訊儲存和共享機制也是給資訊...