訊
享
務
|
2016 年 9 月 14 日,Envoy 的開源標志著應用技術架構進入到服務網(wǎng)格(Service Mesh)時代,2017 年 5 月 24 日,Google、IBM、Lyft 共同宣布 Istio 開源標志著進入由控制面和數(shù)據(jù)面組成的服務網(wǎng)格成為主流。Istio 是當前最受歡迎的服務網(wǎng)格技術。 什么是服務網(wǎng)格?服務網(wǎng)格(Service Mesh)是管控服務間通信網(wǎng)絡的邏輯隔離空間,提供一致透明的服務發(fā)現(xiàn)、流量和全鏈路觀測管理環(huán)境。同一網(wǎng)格可管理來自多個 Kubernetes 集群,甚至異構 VM 的服務,同一網(wǎng)格內(nèi)的服務默認網(wǎng)絡互通。 Service Mesh 技術的關注點在于服務間通訊,其目標是剝離客戶端 SDK,為應用減負,提供的能力主要包括安全性、路由、策略執(zhí)行、流量管理等。 服務網(wǎng)格是微服務架構的升級,核心的動作是業(yè)務邏輯和網(wǎng)絡通信的拆分。Service Mesh 技術的優(yōu)勢是屏蔽分布式系統(tǒng)通信的復雜性(負載均衡、服務發(fā)現(xiàn)、認證授權、監(jiān)控追蹤、流量控制等等),服務只用關注業(yè)務邏輯。 服務是服務網(wǎng)格管理流量的基本單位,一個服務可對應多個 endpoint 實例,對應關系可來源于服務網(wǎng)格對 Kubernetes 集群的 K8S Service 自動發(fā)現(xiàn),或手動注冊 endpoint 與服務的對應關系。 數(shù)據(jù)面包括邊緣代理網(wǎng)關與 sidecar proxy。邊緣代理網(wǎng)關以獨立 Pod 的形式部署于網(wǎng)格服務發(fā)現(xiàn) Kubernetes 集群中,管控觀測南北向流量;sidecar proxy 部署于業(yè)務 Pod 內(nèi),或業(yè)務虛擬機內(nèi),管控觀測東西向流量。 控制面管理和配置,數(shù)據(jù)面做流量的路由轉發(fā)。 服務網(wǎng)格架構對 安全防御帶來的改變 服務網(wǎng)格在提供微服務間的通信管理、流量控制和安全性方面發(fā)揮了重要作用,但在實施和維護過程中也面臨一些安全挑戰(zhàn): 問題一:服務網(wǎng)格對內(nèi)、對外的網(wǎng)絡訪問策略應該如何管控? 雖然服務網(wǎng)格提供了細粒度的訪問控制策略,但復雜、錯誤的策略可能導致未授權訪問或過度限制合法流量。 網(wǎng)格內(nèi)的訪問控制 Istio 的流量路由規(guī)則可以讓您輕松地控制服務之間的流量和 API 調用。 微服務有特殊的安全需求,包括防止中間人攻擊、靈活的訪問控制、審計工具和相互的 TLS。Istio 包括一個全面的安全解決方案,提供了強大的身份、強大的策略、透明的 TLS 加密,以及驗證、授權和審計(AAA)工具來保護服務和數(shù)據(jù)。 如何在服務網(wǎng)格中管理7層流量? Sidecar 模式是最成熟的服務網(wǎng)格部署模式,已被廣泛采用在生產(chǎn)環(huán)境中,得到了充分的驗證和支持。Sidecar 模式每個服務實例一個 L4 和 L7 的代理,安全性高,因為每個服務實例都是隔離的,減少了潛在的攻擊面。 ●網(wǎng)絡代理:管理服務間的通信,攔截和處理進出服務的流量。 ●日志和監(jiān)控:收集和轉發(fā)日志、指標和追蹤信息。 ●安全性:實現(xiàn)身份驗證、授權和加密。 ●配置管理:動態(tài)加載和更新配置。 Sidecar和控制中心協(xié)同,鑒權處理需要訪問控制中心的服務授權信息,對于日志處理需要攔截日志后將日志寫入到消息中間件。 網(wǎng)格間的訪問控制 一個大的微服務應用需要對外統(tǒng)一暴露API接口服務的時候,這些場景仍然需要使用API網(wǎng)關或微服務網(wǎng)關。 我們可以使用Envoy Gateway 或者 Istio Ingress Gateway,讓開發(fā)人員可以專注于業(yè)務邏輯,簡化了應用程序的開發(fā),通過將灰度發(fā)布、藍綠部署、流量鏡像等運維能力從應用程序中剝離出來,讓運維能力不再依賴開發(fā)團隊。 安全隔離 以 service-based 的認證與授權機制,在容器化動態(tài) IP 場景下,可以實現(xiàn)可控的服務認證與訪問控制管理。支持 JWT 請求身份認證、自動 mTLS 實現(xiàn)零信任網(wǎng)絡,以及基于身份和流量特征限制訪問權限。 實現(xiàn)基于身份認證的旁路阻斷 在服務網(wǎng)格架構中,流量可能繞過服務網(wǎng)格的控制和管理,從而導致安全性、可觀察性和流量管理缺失的風險。 ●直接服務調用風險:如果微服務之間直接通過 IP 地址或其他方式進行調用,而不是通過服務網(wǎng)格的代理(如 Envoy),則會繞過服務網(wǎng)格的流量管理和安全策略。 ●不當?shù)木W(wǎng)絡配置:網(wǎng)絡配置不當(如防火墻規(guī)則、路由設置等)可能導致流量繞過服務網(wǎng)格的代理。 ●依賴外部服務風險:微服務可能依賴于外部服務(如第三方 API),如果這些調用不經(jīng)過服務網(wǎng)格,可能導致旁路風險。 可以通過部署騰訊無侵入旁路風險檢測產(chǎn)品的方式,實現(xiàn)基于身份認證的旁路阻斷: 流量監(jiān)控和異常檢測:實施流量監(jiān)控和異常檢測機制,實時監(jiān)控請求的行為,識別潛在的旁路攻擊?梢允褂脵C器學習算法分析流量模式,及時發(fā)現(xiàn)異常行為。 ●集成身份和訪問管理(IAM):使用 IAM 解決方案來管理用戶和服務的身份驗證和授權。IAM 系統(tǒng)可以提供強大的身份驗證機制,確保只有經(jīng)過驗證的用戶和服務才能訪問資源。 ●實施強身份驗證機制:使用多因素身份驗證(MFA)等強身份驗證機制,增加身份驗證的安全性,防止未授權訪問。 ●部署騰訊NDR套件:通過側栽的方式接入服務網(wǎng)格流量鏡像,識別風險,發(fā)現(xiàn)惡意攻擊和潛在威脅,對攻擊事件進行分析、溯源,并以旁路方式實現(xiàn)精準阻斷,對業(yè)務無侵入。 問題二:高可用環(huán)境下對服務網(wǎng)格安全策略的影響? 在高可用環(huán)境中,服務網(wǎng)格的安全策略需要綜合考慮身份驗證、授權、數(shù)據(jù)加密、流量管理、監(jiān)控與審計等多個方面。 身份驗證與授權 ●服務間身份驗證:在高可用環(huán)境中,服務可能會在多個實例之間進行負載均衡。服務網(wǎng)格需要確保每個服務實例都能安全地驗證其他服務的身份,通常通過使用短期證書(如 mTLS)來實現(xiàn)。 需要確保身份驗證機制的高可用性,以避免單點故障(SPOF)?梢钥紤]使用分布式身份管理系統(tǒng)。 ●細粒度授權:高可用環(huán)境中,服務的訪問控制策略需要靈活且高效。服務網(wǎng)格可以實現(xiàn)基于角色的訪問控制(RBAC)或基于屬性的訪問控制(ABAC),確保只有授權的服務能夠訪問特定資源。 需要定期審查和更新授權策略,以適應動態(tài)變化的服務實例和環(huán)境。 數(shù)據(jù)加密 ●傳輸層加密:在高可用環(huán)境中,服務之間的通信可能會通過多個網(wǎng)絡路徑進行。服務網(wǎng)格應確保所有服務間的通信都經(jīng)過加密(如使用 mTLS),以防止數(shù)據(jù)在傳輸過程中被竊取或篡改。 需要考慮加密證書的管理和更新策略,以確保在高可用環(huán)境中不會因證書過期而導致服務中斷。 ●靜態(tài)數(shù)據(jù)加密:除了傳輸層的加密,靜態(tài)數(shù)據(jù)的加密也至關重要。確保存儲在數(shù)據(jù)庫或其他存儲系統(tǒng)中的敏感數(shù)據(jù)是加密的,以防止數(shù)據(jù)泄露。 流量管理與安全策略 ●流量控制:在高可用環(huán)境中,流量管理策略(如限流、熔斷、重試等)需要與安全策略相結合,以確保在高負載情況下仍能保持服務的安全性和可用性。 例如,流量限制可以防止惡意攻擊(如 DDoS 攻擊),而熔斷機制可以在服務故障時保護其他服務。 ●安全策略的動態(tài)調整:高可用環(huán)境中的服務可能會頻繁變化(如自動擴展、故障轉移等),因此安全策略需要能夠動態(tài)調整,以適應這些變化。 可以使用服務網(wǎng)格的控制平面來動態(tài)更新安全策略,而不需要重啟服務。 安全訪問監(jiān)控與審計 ●安全事件監(jiān)控:在高可用環(huán)境中,監(jiān)控安全事件(如未授權訪問、異常流量等)是確保系統(tǒng)安全的重要環(huán)節(jié)。服務網(wǎng)格可以集成監(jiān)控工具,實時收集和分析安全相關的指標和日志。 需要支持輸出訪問日志、統(tǒng)計指標和調用跟蹤等可觀測性數(shù)據(jù),以便和現(xiàn)有的安全系統(tǒng)進行能力集成。需要設置報警機制,以便在檢測到異;顒訒r及時響應。 ●審計與合規(guī):高可用環(huán)境中的服務需要遵循合規(guī)要求,因此審計日志的收集和分析至關重要。服務網(wǎng)格應能夠記錄所有安全相關的事件,并提供審計功能,以便后續(xù)分析和合規(guī)檢查。
問題三:服務網(wǎng)格如何實現(xiàn)身份管理? 服務網(wǎng)格支持通過多種機制和工具實現(xiàn)身份管理,以確保微服務之間的安全通信和訪問控制。 身份管理在服務網(wǎng)格中主要涉及服務的身份驗證、授權和證書管理。以下是服務網(wǎng)格如何實現(xiàn)身份管理的幾個關鍵方面: ●證書管理:服務網(wǎng)格通常使用 mTLS 來確保服務間的安全通信。管理和輪換證書可能會變得復雜,尤其是在大規(guī)模環(huán)境中。服務網(wǎng)格的控制平面(如 Istio、Linkerd)負責自動化證書的生成、分發(fā)和更新,確保服務實例在運行時始終擁有有效的證書。服務網(wǎng)格通常使用短期證書(如 mTLS)來實現(xiàn)服務間的身份驗證。這些證書的有效期較短,通常為幾小時到幾天,減少了證書被盜用的風險。 ●身份驗證:確保所有服務和用戶都經(jīng)過適當?shù)纳矸蒡炞C是一個挑戰(zhàn),尤其是在動態(tài)環(huán)境中,服務實例可能頻繁變化。服務網(wǎng)格通過代理(如 Envoy)處理服務間的通信,確保所有請求都經(jīng)過身份驗證和授權檢查。盡管 mTLS 提供了加密保護,但如果證書管理不當,仍然可能面臨中間人攻擊的風險。 ●安全監(jiān)控與設計:服務網(wǎng)格可以記錄身份驗證和授權的相關事件,生成審計日志,以便后續(xù)分析和合規(guī)檢查。這些日志可以幫助識別潛在的安全問題和不當訪問行為。通過集成監(jiān)控工具,服務網(wǎng)格可以實時監(jiān)控身份管理相關的指標(如身份驗證失敗次數(shù)、授權請求等),及時發(fā)現(xiàn)異常情況。 ●安全策略的動態(tài)調整:服務網(wǎng)格支持動態(tài)更新身份管理策略,以適應不斷變化的環(huán)境:管理員可以通過服務網(wǎng)格的控制平面動態(tài)更新身份驗證和授權策略,而無需重啟服務。這種靈活性使得服務網(wǎng)格能夠快速響應安全需求的變化。 問題四:安全可觀測性和監(jiān)控 服務網(wǎng)格的安全可觀測性是指在微服務架構中,通過監(jiān)控、日志記錄和追蹤等手段,實時了解和分析服務間的安全狀態(tài)和行為。這種可觀測性對于識別潛在的安全威脅、確保合規(guī)性以及優(yōu)化安全策略至關重要。 ●安全指標監(jiān)控:服務網(wǎng)格可以監(jiān)控與安全相關的指標,例如身份驗證失敗次數(shù)、授權請求的成功與失敗、TLS 連接的狀態(tài)等。這些指標可以幫助識別異常行為和潛在的安全問題。 通過集成監(jiān)控工具(如 Prometheus、Grafana),可以實時可視化這些指標,便于運維團隊進行分析和響應。 ●流量監(jiān)控及異常檢測:監(jiān)控服務間的流量模式,識別異常流量(如 DDoS 攻擊、數(shù)據(jù)泄露等)。服務網(wǎng)格可以提供流量的詳細視圖,包括請求的來源、目的地、協(xié)議等信息。在復雜的服務網(wǎng)格環(huán)境中,識別異常行為和潛在的安全威脅可能變得更加困難。 ●分布式追蹤:服務網(wǎng)格可以實現(xiàn)分布式追蹤,記錄請求在微服務間的流轉情況。這有助于了解請求的完整路徑,識別潛在的安全漏洞。通過追蹤工具(如 Jaeger、Zipkin),可以可視化請求的延遲和錯誤,幫助識別安全問題的根源。 問題五:依賴性管理中的安全問題 在服務網(wǎng)格的依賴性管理中,安全問題是一個重要的關注點。由于微服務架構的復雜性和服務之間的緊密耦合,安全漏洞可能會在不同服務之間傳播,導致嚴重的安全風險。 ●服務間的信任關系問題: 服務網(wǎng)格中的服務可能會建立不必要的信任關系,導致某個服務的漏洞影響到其他服務。 應對策略:實施最小權限原則,確保服務之間的信任關系僅限于必要的服務。使用服務網(wǎng)格的安全策略(如 Istio 的授權策略)來限制服務之間的通信。 ●供應鏈安全問題:服務網(wǎng)格通常依賴于多個第三方庫和服務,這些依賴項可能存在安全漏洞,會影響整個系統(tǒng)的安全性。需要確保所有依賴項都是最新的并且沒有已知漏洞。 應對策略:定期審查和更新第三方依賴,確保使用的庫和服務是最新的,并且沒有已知的安全漏洞。實施供應鏈安全策略,確保所有依賴的來源是可信的。
網(wǎng)格大小的劃分 在設計和實施服務網(wǎng)格時,合理的大小劃分是確保系統(tǒng)可維護性、可擴展性、安全性和性能的關鍵因素。服務網(wǎng)格的大小劃分通常涉及到微服務的劃分、服務之間的關系、流量管理、以及團隊的組織結構等多個方面。 在實際的應用案例中,一般都是基于業(yè)務模塊維度,或者基于單元化原則來進行網(wǎng)格的劃分。過大的網(wǎng)格,會導致管控策略的復雜度大幅升高;而把網(wǎng)格拆的過細,也會導致服務解耦成本的上升。 微服務的功能劃分,總體應基于單一職責原則,即每個微服務應專注于特定的業(yè)務功能或領域,遵循單一職責原則。這樣可以減少服務之間的耦合,提高服務的可維護性。其次,應考慮服務之間的依賴關系,過于復雜的依賴關系可能導致服務網(wǎng)格的管理和維護變得困難。對于高度依賴的服務,可以考慮將它們聚合為一個服務,以減少交互的復雜性。相反,對于功能過于龐大的服務,可以拆分為多個小服務。 也可以根據(jù)流量模式和使用情況劃分服務。例如,某些服務可能會處理大量的請求,而其他服務則相對較少?梢愿鶕(jù)流量需求進行服務的劃分和部署。考慮服務的負載均衡策略,確保服務能夠有效地處理流量。過多的網(wǎng)格,也會帶來更精細的流量管理和安全策略需求,以確?缂旱耐ㄐ虐踩涂煽俊 可以考慮根據(jù)團隊的組織結構劃分服務。每個團隊可以負責一個或多個微服務,確保團隊能夠獨立開發(fā)、測試和部署服務。 總之,服務網(wǎng)格的大小劃分是一個復雜的過程,需要綜合考慮微服務的功能、依賴關系、流量管理、團隊結構、監(jiān)控需求、性能要求、技術棧和基礎設施等多個因素。通過合理的劃分,可以提高系統(tǒng)的可維護性、可擴展性和性能,確保服務網(wǎng)格能夠有效支持業(yè)務需求。 盡管服務網(wǎng)格提供了許多安全功能,但在實施和維護過程中仍然面臨多種安全挑戰(zhàn)。組織需要采取綜合措施,包括合理的配置管理、有效的身份和訪問管理、監(jiān)控和日志分析、以及團隊培訓,以應對這些挑戰(zhàn)并確保服務網(wǎng)格的安全性。 |
|
原標題: / 編輯: |
|