你據說過Service Mesh(服務網格)嗎?安全
我相信你據說過。Service Mesh正成爲容器生態圈愈發重要的一部分。網絡
本文將簡要概述Service Mesh的做用,並深刻探討它們對於企業安全性的意義。架構
鏈接問題負載均衡
要想理解Service Mesh的存在緣由,首先考慮一下容器環境中的網絡鏈接。框架
想象一下當你運行一個雲原生應用時會發生什麼。但凡它具備必定的規模和複雜性,它一般都須要由大量單獨的服務組成,這些服務間爲了可以像一個單體桌面應用程序組件同樣高效地運行,須要相互進行協調。微服務
再加上在任何指定時間運行的每一個服務的實例數量,以及這些實例的狀態及可用性的變化,不難看出,簡單的將一個服務鏈接到另外一個服務的行爲,在這樣的情形下會變成多麼恐怖的組合問題。工具
編排是基礎性能
多虧了有Kubernetes等編排工具,雲原生應用程序不會出現混亂或者從內部logjams出現凍結,它們將服務和實例組織成方便管理和尋址的單元,這樣就能夠經過系統化的方式找到並訪問這些單元。優化
這些編排工具就好像一個房屋開發商,他們鋪設街道,在新的社區建造房屋——它們創建了框架和交通線路,然而大多數狀況下,處理社區的交通細節並非它們的工做。加密
管理流量
這就是須要Service Mesh的地方。當一個服務須要向另外一個服務發送請求時,Service Mesh提供了一個標準化的接口,容許請求發送,而且管理這一個過程。
Service Mesh(如lstio和Linknerd)一般充當微服務之間的請求和其餘流量的代理,負責服務發現和執行各類相關任務,包括入口、出口、負載均衡和故障處理。當它接收到服務請求時,它會找到一個服務的可用實例,這個實例需知足一組可配置的規則以及在請求服務和目標服務之間的路由流量。
接手複雜的工做
這意味着你能夠將服務發現和與其關聯的大多數任務從應用程序設計和代碼(以及架構腳本)中移出來,並交給Service Mesh處理它們。請求服務只須要使用目標服務的抽象標識符來提出請求;而Service Mesh將負責剩下的部分。
固然,Service Mesh可以處理的不止這些,還包括了跟蹤、度量、加密、認證以及其餘與性能和安全相關的任務。lstio和linkerd能夠一同使用,把二者包中最強大的特性集成在一塊兒,進行微服務相關的流量管理優化。
上文所說的這一切,對於企業安全意味着什麼呢?
Istio和Linkerd等平臺的安全性和總體流量管理功能是否可以提供足夠的保護?或者偏偏相反,他們是否會暴露出新的攻擊面,給入侵者提供了後門攻擊的機會?
事實是,任何控制基礎設施的新元素都有可能包含這二者。在Service Mesh的情景下,如入口/出口管理、代理和加密等特性將與安全相關的元素添加到系統中。與此同時,這些平臺會管理流量和訪問,而且受到應用程序和其餘基礎設施元素的信任,這使得它們成爲了攻擊目標。
Service Mesh的總體做用是在應用程序的邊界(即入口規則)處提供一些強化,併爲該周邊內的流量建立有效的通道。就企業安全而言,這意味着你須要關注至少兩條(或許更多)的潛在攻擊路線。
當入侵者突破邊界
若是入侵者突破Service Mesh的基本邊界防護,而且甚至侵佔了一個服務的某一個實例,將會發生什麼?若是該服務向Service Mesh發送請求,或它響應Service Mesh的請求,那麼惡意負載可能會被注入系統中,從而利用Service Mesh的高效流量管理將負載傳遞到儘量多的潛在目標。若是Service Mesh將服務表現出來的樣子認定爲「信任」,而應用程序又錯誤地斷定Service Mesh在服務之間傳遞的是非惡意數據,那麼任何的惡意參與者均可以利用這種信任,將本身假裝成有效服務。
固然,實際上像Istio和Linkerd這樣的平臺確實包含了維護安全流量的功能,好比TLC認證;Istio的Role-Based Access Control(基於角色的訪問控制,RBAC)提供了靈活、可定製的多級訪問控制。可是,若是入侵者突破了這些防護,仍然能夠在系統內移動而且形成破壞。
攻擊Service Mesh基礎設施
Service Mesh平臺,就像當下其餘任何基於雲基礎架構的元素同樣,是由代碼構成的,而且和其餘類型的代碼同樣容易受到攻擊。對入侵者來講,最具誘惑力的攻擊面多是控制發現和路由的規則——若是請求能夠從新路由到外部位置,那麼整個系統均可能會受到危害。
固然也會有其餘的攻擊點。入口、出口、代理以及負載均衡等功能均可能會出現先前未監測到的切入點。簡而言之就是,基礎設施的元素越多地控制應用程序和整個系統,那麼它就越容易成爲攻擊的目標,也就越應該關注它。
那麼有沒有最佳策略來處理與Service Mesh有關的安全性問題?有的。
Service Mesh自己提供的防護功能能夠和像白名單這樣強大的邊界防護工做結合起來使用,進一步增強應用程序的入侵防護能力。其中,內部異常檢測提供了更強大的防護。程序中任何不尋常的行爲都會觸發自動響應。網絡安全監控能夠檢測並抵消掉服務網格基礎設施自己受到的攻擊。
在基於雲的領域中,容器化應用程序、Service Mesh都是企業計算中不可或缺的工具。與功能齊全的企業級安全服務結合使用,入侵者就沒有必要,也不會損害到組織的數據安全。