基於容器特點和傳統網路安全能力進行容器雲安全規劃設計

danny_2018發表於2022-09-05

相比於傳統應用而言,容器天然是弱安全的,這些不足隨著容器一起跑在企業內網中,如果不能很好地識別並修復,分分鐘就會成為“馬奇諾防線”上的缺口,發生資料洩露、安全漏洞等,給企業帶來不可估量的損失。很多早期建設容器雲的企業已經深深感知到,面對容器技術的全新架構,“高築城牆以御外敵”的傳統安全方案已經不合時宜,更多的攻擊面、監控和防護難度大、安全管控難度高,企業必須重新審視容器雲環境的安全策略。

容器安全防護範圍需要前移,防護粒度需要更細,也需要靜態安全與動態安全防護相結合。具體體現在容器的開發、部署、執行的全生命週期中,從容器雲平臺的大邊界,到租戶小邊界,再往內深入到虛擬機器容器的微邊界,對10+層的潛在攻擊面進行安全防護加固,覆蓋到程式碼安全審計、主機安全、映象安全、容器執行時安全、容器網路微隔離、編排環境合規安全、容器監控自學習引擎等領域。聯盟容器雲安全課題組的目標是幫助企業健全容器安全防護工作體系,提供映象安全、基礎設施安全、執行時安全等能力建設參考,減少摸索時間,讓更多重要生產應用執行在安全的容器環境中。

本期介紹聯盟容器雲安全課題組階段性研究成果“容器雲安全規劃”。

容器雲安全規劃

導 讀

本文是基於筆者在容器雲安全平臺應用實踐過程中對遇到的問題及方案的總結和思考,僅作為同行或朋友們在規劃容器雲安全時的參考。容器作為雲原生技術體系中的關鍵技術,對其的不同定位會帶來安全規劃的不同要求。雲原生安全和傳統安全能力的需求也有不同,因此認識到容器和雲原生安全的特點來規劃容器雲安全,會更有針對性。本文的方案可以作為容器雲安全規劃時的參考,同時需要理解筆者所整理的《你需要知道的雲原生架構體系內容》和《雲原生架構實施路線圖》,才能更好的理解本文內容。

執筆專家

汪照輝 容器雲安全使用者委員會委員

雲原生應用創新實踐聯盟——容器雲安全方向課題組專家。專注於容器雲、微服務、DevOps、資料治理、數字化轉型等領域,對相關技術有獨特的理解和見解。擅長於軟體規劃和設計,提出的“平臺融合”的觀點越來越得到認同和事實證明。發表了眾多技術文章探討容器平臺建設、微服務技術、DevOps、數字化轉型、資料治理、中臺建設等內容,受到了廣泛關注和肯定。

顧問專家

羅文江 容器雲安全使用者委員會委員

雲原生應用創新實踐聯盟——容器雲安全方向課題組組長。招商銀行雲端計算架構師,當前從事銀行私有云和公有云基礎設施、以及混合雲架構的建設,參與包括容器雲等相關雲服務的規劃、技術選型、架構設計和實施,以及業務連續性等保障體系的建設工作。

常青 容器雲安全使用者委員會委員

雲原生應用創新實踐聯盟——容器雲安全方向課題組專家。任職於中國光大銀行資訊科技部,主要負責專案管理和開發安全體系建設方面的相關工作。主要擅長web應用安全威脅與防治,容器雲安全風險排查與評估。

越來越多的人關注雲原生安全。作為雲原生核心內容的微服務、容器、DevOps的安全是構建雲原生安全體系的關鍵組成部分。雲原生的核心是雲原生應用,而基於容器技術所構建的容器雲平臺則由於其自身是雲原生應用的執行和管理工具平臺,使其成為雲原生安全中的核心平臺支撐。從雲原生應用和雲原生架構上來說,圍繞容器雲平臺來構建雲原生安全體系也是相對清晰、容易落地和容易實施的方案。

一、容器雲定位

不同的人對容器雲的理解和定位會有所不同。從容器為微服務應用提供的標準化的執行時環境來說,它支撐的是應用生命週期過程中的執行階段的需求。最初筆者提出的“以應用管理為核心”的容器雲平臺建設思路,也在信通院剛剛釋出的《雲原生 新一代軟體架構的變革》白皮書中的“一箇中心”得到了體現。因此可以說容器雲平臺是應用執行時的支撐和管理平臺。不過要實現應用的可見性、可管理性等,需要圍繞容器雲平臺構建額外眾多的基礎設施工具和平臺支撐,比如日誌平臺、監控平臺、認證許可權平臺、訊息平臺等等。需要將容器雲平臺置於整個雲原生DevOps體系之中,它承擔的是應用生命週期過程中的執行階段。在這個體系中,每個平臺、元件和工具都會涉及安全的問題。而安全又分了不同的層次和機制,比如認證授權、加密解密、網路防護、病毒防護、應用安全等等;採用容器又帶來了新的物件、新的流程和新的問題,比如映象安全、容器安全、DevOps安全等。這是一個相互關聯、相互影響而又相輔相成的一個體系。

筆者一直也在思考如何來規劃容器雲平臺的安全。一直想解決的一個問題是:安全團隊透過傳統安全工具和方法掃描出來的漏洞如何和跟應用管理人員直接關聯。採用大二層網路,服務的IP對所有人是可見的。由於傳統網路安全往往是基於IP的機制,比如防火牆、白名單設定等,而容器帶來了新的機制,容器IP往往是變化的,而服務是彈性的、可遷移的,往往不會和某個固定IP關聯。這和傳統的網路安全管理模式是衝突的。從安全團隊角度,他們掃描出來的存在漏洞的容器由於IP的可變性無法直接和應用關聯,不得不透過容器雲平臺來查詢、關聯到應用、中轉給應用運維人員。團隊之間的協調是需要時間的,往往等拿到資料,某些容器IP可能已經變化,從而找不到這個IP了,也可能就錯失漏洞的及時修復。因此,容器雲安全可能需要改變傳統的安全管理模式,將安全能力作為基礎設施,提供給容器雲平臺上的租戶使用,自動實現漏洞的掃描和通知,由租戶自服務完成漏洞的修復。這樣則可以簡化並提升容器安全問題處理效率。

二、容器安全基礎設施

傳統網路安全和雲原生安全的模式是有區別的,在雲原生架構中,安全是作為基礎設施能力,需要具備協助應用應對威脅、消除漏洞、增強防護力等能力。在規劃設計雲原生或容器雲安全時,可能需要考慮幾個原則:

1.可見性、可觀察性

容器由於其彈性、生命週期短等特徵,需要實現詳細的監控和視覺化能力,能夠時時看到容器的執行狀況和歷史變化情況。這樣對業務應用運維管理人員來說,在遇到問題時才能快速的定位和分析根因。這也是筆者一再強調日誌、監控等基礎平臺建設的原因之一。

2.可隔離性、可阻斷性

容器由於其輕量性,可能會有眾多容器在執行,為容器的管理和維護帶來挑戰。除了要透過構建可見性、可觀察效能力,還需要在遇到安全異常時能夠隔離容器、阻斷入侵。看得到才能管得住,實現手動或自動的容器隔離或容器網路隔離,從而減少或降低安全風險。

3.自服務性

自服務能力是雲原生基礎設施的關鍵能力要求。應用透過基礎設施的自服務能力,才可以敏捷的實現應用的配置管理和排程執行等。安全的自服務能力將減少應用團隊與基礎設施團隊的互動,從而提升了業務應用的響應能力。

從中臺架構來說,安全能力可以提取為公共的技術服務,可以作為技術中臺服務能力的一部分。比如說認證方式(多因子動態認證)、許可權管理、加密解密、漏洞掃描、合規檢測、病毒防護等等。從不同的視角、不同的架構看,這樣的規劃設計都是可行的、合理的。

三、容器雲安全規劃

容器雲安全規劃可以考慮從應用生命週期過程和應用資源排程管理層次進行劃分,從而實現網格化安全管控能力。

橫向分段

基於DevOps應用生命週期過程,可以將容器安全分為兩段:開發階段和執行階段。開發階段完成應用設計、編碼、單元測試和構建,輸出映象。在這個階段最重要的是儘可能消除安全漏洞,因此需要做到安全左移。執行階段的核心是保障業務應用的安全穩定執行。雖然安全左移儘可能消除潛在的安全隱患,但執行階段該有的安全措施一樣也不能少。漏洞和入侵威脅時時都可能發生,另外容器機制所帶來的運維機制的變化要求下層能力對上層需求提供自服務能力,從而實現敏捷的響應,做到執行階段自服務、自適應。某廠商安全提出的一體兩面四個環節N項能力的容器雲安全體系非常值得參考。

在構建容器雲平臺時,筆者提出了“以映象倉庫為媒介”,將映象作為容器應用標準化輸出,這樣就把開發階段和測試、生產進行了明確分段。測試、生產環境都是以容器雲平臺來支撐和管理應用執行,因此應用部署於容器雲平臺上測試,也可以看作執行階段的一部分。生產追求的是更穩定安全的執行。

1)開發階段(Dev),遵循“安全左移”,做到交付安全

開發階段交付的映象是安全的。這需要將傳統的安全能力左移,透過開發階段的安全檢查和檢測,及時修復潛在的安全問題,減少攻擊面,將安全隱患消滅在部署執行之前,做到“交付安全、上線即安全”,而不是把安全問題都留到生產環境中去進行解決。安全左移核心是做安全管理,以映象為標準化交付物,以映象倉庫為媒介,實現開發、測試、生產節點的安全管控。在實際落地的時候透過在軟體生命週期過程中設定“安全卡點”來實現,以“准入”和“準出”來實現安全管控

2)執行階段(Ops),遵循“持續監控&響應”,做到自適應安全

執行階段的核心是互動式檢測和實時防護。雖然安全左移儘可能消除了安全隱患,但容器應用執行時環境依然會存在很多潛在安全問題,比如說容器虛擬化或者物理伺服器節點漏洞、網路入侵、病毒入侵等。因此在執行階段需要實現持續的安全監控和實時響應,能夠實現自服務和自適應安全能力。持續監控和響應首先要做到“心中有數”,對自己的容器雲平臺的資產做到一目瞭然,看得見;然後對這些資產執行狀態和執行情況也要看得清、能檢測;在出現異常時能夠有工具、有手段可用。需要將傳統網路安全的能力透過介面等方式暴露給容器雲平臺,無縫融合在一起,使容器雲平臺可以以自服務的形式實現安全資產可見、自動化互動防護、異常隔離、入侵檢測、溯源分析等。雖然使用的是傳統的安全手段和能力,但卻面向的不是傳統的網路安全人員,也不是以傳統網路域和網路IP進行管理,容器雲執行階段更重要的對應用管理人員提供安全服務能力,同時由網路安全人員提供後援支援。

縱向分層

基於資源層次和型別可以將容器雲安全分為網路層安全、節點安全、容器/服務例項層安全、平臺工具層(基礎設施)安全、應用安全五個層次。縱向分層也是DevOps組織設計職責劃分的參考。

容器雲可採用二層或三層網路,不同的網路模式安全防護上會有不同,不過整體思路是一致的。網路層安全和節點/主機安全要基於傳統的網路安全能力。不過傳統網路域管理可能會對不同域的容器雲叢集或節點管理帶來一些麻煩,相當於要實現虛實混合的網路管理;容器安全主要是圍繞應用執行時的防護和檢測;容器雲平臺和基礎設施工具可以作為獨立的元件實現安全能力;應用層安全則從業務應用角度來考慮,比如應用訪問授權、通訊加密、防SQL隱碼攻擊、API介面安全等等。

1)網路層安全(網路安全)

網路層安全並不只是指容器網路。容器網路相對要簡單些,不過目前大多數公司的容器雲平臺都難以獨立於傳統網路。比如說多叢集可能跨機房、跨網段,容器虛擬網路和公司物理網路相交叉,帶來了網路管理和網路安全管理的複雜度。這可能需要結合傳統網路安全手段和容器網路安全手段來實現網路安全。

2)節點層(節點/主機安全)

容器節點層安全其實也等同於傳統的主機安全,和網路安全緊密相關。容器以程式的方式執行在容器節點上,保障節點安全是容器安全的重要部分。節點執行時入侵檢測、病毒防護、互動測試、系統漏洞修復、安全更新、版本升級等是節點安全的重要工作。

3)容器層/應用服務例項層(容器安全、服務安全)

容器可以看作是一個輕量的作業系統核心,比傳統應用管理多了一層封裝。容器安全需要用到傳統主機安全的技術和手段,比如入侵檢測、病毒查殺等,同時由於容器中執行著應用服務例項,需要對執行中的服務例項進行實時的監控和檢測,比如有新的漏洞出現,漏洞庫更新,容器就可能面臨著漏洞威脅。需要實現映象安全掃描、容器漏洞檢測、容器安全隔離、入侵阻斷等能力。

4)平臺工具層(基礎設施安全)

容器雲平臺實現容器的排程和管理、服務的治理和管控。可以利用Kubernetes的安全機制來擴充套件實現容器雲平臺的安全管控能力,比如Kubernetes的認證、授權、准入機制和容器雲平臺的認證、授權排程管控結合起來,不同租戶不同使用者對不同資源有不同的訪問許可權。擴充套件開來,可以和應用層的認證、許可權管理、訪問控制對映起來,使安全的訪問控制成為一體多層。

5)應用層(應用安全)

應用層安全需要從開發階段程式碼安全檢查開始,貫穿應用整個生命週期過程。開發階段關注的是程式碼安全、映象安全等,執行階段關注的攻擊防護、溯源分析等。和傳統應用安全手段沒什麼區別。

容器雲安全規劃從縱向層次安全劃分和橫向生命週期階段劃分從而將安全問題網格化,縮小安全問題範圍,可以有針對性地採取安全措施和手段來解決存在的問題。不過容器雲平臺依然有不少的問題需要解決,比如說新漏洞的修復。業務開發團隊往往基於同一個基礎映象來構建應用服務映象,如果基礎映象中發現新的漏洞,可能會影響到執行中的眾多租戶的眾多容器和服務,需要重新構建映象新版本,重新發布替換執行中的服務。這往往也是不可避免的日常運維工作。如果容器服務的量達到一定的程度,人工是難以處理,就需要自動化、自服務的機制來完成升級和漏洞修復。另外可能還有一些緊急的安全事項處理,比如說攻擊事件,需要和安全團隊能協同協作,對容器雲平臺應用運維、容器雲平臺運維和安全團隊都需要做到可見、可管理。

四、總結

總的來說,安全防護是一種被動的機制,難以確保萬無一失,越來越需要在動態變化過程中實現安全防護能力,減小安全暴露面,有針對性地完善安全能力,提升安全防護效果。容器雲安全的規劃需要基於容器特點和傳統網路安全能力來進行設計,儘可能消除安全隱患,提升安全能力。

來自 “ twt社群 ”, 原文作者:twt社群;原文連結:https://mp.weixin.qq.com/s/Yo5D8O8HphWBEn1Nlx0fxg,如有侵權,請聯絡管理員刪除。

相關文章