云安全的未來是云原生安全
云計算的概念從提出到現在已經近 15 年時間。最初,業界大多將云計算架構分為基礎設施即服務(IaaS)、平臺即服務(PaaS)和軟件即服務(SaaS),這種基于虛擬主機(VM)為主體的虛擬化技術,從 IT 架構視角進行劃分的方法雖然清晰但有局限性,因為它并不是完全站在應用和業務視角。等到容器虛擬化技術普及以后,一套以容器化、微服務、開發運營一體化(DevOps)和持續交付為主要要素,從云應用視角、全新的、專門為云計算設計的架構發展起來,這套架構就是云原生。
云原生產業聯盟(CNIA)在《2020 年云原生發展白皮書》指出,2019 年中國云原生市場規模已達 350.2 億元。云原生市場的快速發展有賴于其相對傳統云技術的重要優勢。從技術特征來看,云原生擁有極致的彈性能力、服務自治、故障自愈能力和大規模可復制能力;從應用價值方面來看,云原生異構資源標準化,加速了數字基礎設施解放生產力,提升業務應用的迭代速度,在賦能業務創新方面有重要價值;從產業效用來看,云原生極大地釋放了云的紅利,成為驅動業務的重要引擎。
云原生以其技術優勢以及不斷擴大的應用場景,逐步普及到各行各業的敏捷開發與業務創新中,可以說“云原生正在吞噬一切”。

圖1 云原生正在吞噬一切
一、云原生安全的特點
云原生作為云計算的未來階段,其安全勢必成為云安全的主要戰場。云原生安全的需求主要體現在兩個方面。一是新的組件面臨新的風險,如容器的隔離性不如虛擬機(VM)而導致其更容易發生逃逸攻擊等,這就需要新的產品及解決方案。二是傳統的云安全需求(例如訪問控制)在新的架構中需要改進以適應新的架構。
在以前的云計算時代,安全和云平臺的結合不算緊密,大部分以安全資源池這種外掛形式來實現云安全,而云原生安全需要安全能力和云原生平臺緊密結合,真正成為內生安全,這將是云安全的巨大挑戰和機遇。
(一)不可變的基礎設施
“不可變的基礎設施”是云原生中非常重要的一個理念,可以說是云原生整個架構的核心思想,其貢獻不亞于應用商店對智能手機的貢獻。云原生對一個容器實例的更新是替換,而不是修改。這種方式保證了多實例間的一致性,有利于應用的彈性擴容。為了解決隨之而來的效率問題,云原生用編排工具、微服務架構和 DevOps 一系列技術來保證替換的效率。相應地,“不可變的基礎設施”也帶來了安全防護思路的變化。
1. 資產識別的變化
一個容器中包括的軟件及其運行方式,在打包鏡像的時候已經確定。鏡像是一個全量的軟件包集合,對容器內的應用等資產識別,通過鏡像便可了解全貌。基于不可變基礎設施的思想下,一個軟件的更新,會生成一個全新的鏡像。
在容器運行狀態時,需更多關注容器動態的變化,應該從集群視角,通過標簽、命名空間(Namespace)等識別資產的業務屬性。另外,需要對容器運行歷史狀況進行重點關注,各個架構下資產的生命周期完全不同,物理機是以年為單位、虛擬機是以月為單位、容器以分鐘級為單位,而無服務器(Serverless)以秒級為單位。不同類型資產的特點如圖 2 所示。

圖2 不同類型資產的特點對比
2. 防護起點的變化
通俗的理解,云原生架構中的操作系統應該是基于容器技術的分布式架構解決方案Kubernetes,而不是主機操作系統(OS)。在云原生中,沒有主機的概念,只有節點的概念,這個節點就是一個計算單元,可以是物理機、虛擬機、物聯網設備等,所以在節點這一側的安全防護可以通過收縮風險面來實現。各大云廠商都推出了云原生專用的 OS,如 CoreOS/Container Linux、Photon OS、RancherOS、Red Hat CoreOS (RHCOS)、Fedora CoreOS 等,這些專用操作系統極度精簡,只保證基本的 Kubernetes 能運行,要求其他所有第三方的應用都運行在容器中,這一層的安全風險可以降到極小。每一個組織通過最小授權原則,都可以基于標準的操作系統進行加固后,制定自己的云原生 OS,從而解決 OS 一層的安全問題。在縮小風險面的同時,減少管理成本。
所以云原生安全的起點應該是 Kubernetes,從 Kubernetes 的容器層面向下覆蓋節點安全,向上覆蓋微服務安全,而不是從底層的節點向上覆蓋。因為節點向上的覆蓋能力不足,特別是針對集群、網絡策略和微服務等云原生特有的組件和功能的防護。
(二)防護邊界的變化
云原生的整個架構是以服務云原生應用,以容器為主的虛擬化技術構建的,其秉承了軟件定義一切的思想,相對于傳統架構,其邊界變得更加模糊。

圖3 不同架構的邊界特點
如圖 3 所示 , 在傳統數據中心(IDC)的環境中,系統的邊界非常清晰,以網絡設備上的邊界劃分為主。對外的邊界由防火墻、路由器等來實現 ,內部的邊界以虛擬局域網等措施來保證。所以傳統 IDC 是以物理的網絡設備作為邊界區分,區分的標記主要使用物理地址(MAC),互聯網協議地址(IP)。在以虛擬機為主的云計算環境中,以虛擬機為最小單元,以虛擬化網絡的訪問控制措施作為邊界劃分,顆粒度到虛擬機級別,以 IP地址或者內部域名來識別不同資產。
而在云原生環境下,資產視角變成業務視角和應用視角,主要通過命名空間進行區隔,而識別資產的方法主要以標簽為主,所以整個邊界變得模糊而且更細粒度,優勢是天然對業務和應用進行了區分,但同時讓安全控制和管理更為復雜,以 IP 或域名為主的安全防護措施勢必需要調整。
此外,云原生的管控措施基于白名單機制,包括 Kubernetes 支持的網絡策略就是白名單機制。云原生架構下的安全是基于零信任的思路進行防控,所以云原生是零信任在生產環境下落地實現的最佳 IT 架構。
(三)高度的流程化、自動化
上文中提到,DevOps 保證了云原生應用的發布效率,但安全防護往往和效率有一定沖突。傳統的安全措施對效率的影響在非全自動化流程中可能不明顯,例如業務上線的安全測試和檢測一般是在質量保證(QA)完成后進行,等安全測試完成再確認上線。這些工作往往通過內部郵件來流轉,內部對其及時性有一定的容忍度。
但在云原生下,DevOps 作為云原生應用的生命周期管理流程,安全管控需要無縫植入到這個流程中,也就是當前流行的開發安全運營一體化(DevSecOps)。DevSecOps 作為一個大的體系,除了代碼安全測試,還應包括制品庫安全管理,運行安全策略等。所以將云原生安全產品或者工具嵌入到 DevOps 流程,成為一個必選項。
(四)全新攻擊手段
當前針對云原生的攻擊手段越來越多樣,無論是前兩年爆出的特斯拉集群入侵事件,容器官方鏡像倉庫被投毒,還是在近年的攻防演練出現通過攻擊容器得分的情況,都印證了這一趨勢。2022 年,對于云原生的攻擊開始增多,由于當前云原生系統普遍欠缺安全防護手段,攻擊的得手率極高。在云原生安全領域的攻防不對等情況,比其他架構嚴重得多。針對云原生的攻擊手段還有其獨特性, 因此安全組織 MITRE 的對抗戰術和技術知識庫(ATT&CK 框架)推出了專門針對容器的攻擊模型。
二、云原生安全典型應用案例
以小佑科技服務的某股份制銀行云原生安全應用案例,來看云原生安全的典型應用場景。該銀行全棧云容器平臺基于 IaaS 私有云“兩地三中心”架構部署于北京香山、酒仙橋、武漢三個數據中心,底層使用 IaaS 提供的節點約 2000 臺,運行容器數量達到 2 萬余個,涉及開發、測試、預投產、生產環境的近 50 個 Kubernetes 集群。在全棧云容器平臺上承載的業務系統 43 個,包括手機銀行系統、統一支付平臺、金融服務開發平臺、多方安全計算平臺、5G 線上超市系統等金融業務系統。
(一)需求描述
該銀行對云原生安全的需求如下。
1. 全生命周期自適應安全
對容器安全涉及的所有對象都進行防御,包括操作系統、Kubernetes 平臺、容器、容器鏡像、鏡像倉庫、微服務。在每一個資產對象的防護方案中,均考慮資產盤點、加固、檢測、響應、預測這樣的安全框架,形成安全運營的閉環。
2. 監測智能化
基于動態學習業務系統進程與網絡流量的方法,采用機器學習技術,構建安全基線模型,實現風險識別和風險態勢感知。配合傳統基于規則的分析識別技術,加上機器學習技術從而較全面發現安全漏洞和風險。
3. 安全內生化
全棧云容器平臺不僅僅提供基礎運行環境,還直接集成安全能力。在創建 Kubernetes 集群時,便將防御容器以服務守護進程(Daemonset)的方式進行同步創建,每個集群節點運行一個防御容器,提供檢測與防護能力。當集群擴容或縮容時,防御容器可以隨著節點數量變化而自動做相應調整,減少安全運維成本。
4. 流程敏捷化
基于安全左移的思路,實現 DevSecOps。即在軟件研發階段便同步介入安全檢查。通過在軟件的整個生命周期中支持多個卡點,將風險盡早暴露,降低安全運維的成本。安全卡點包括 編排文件掃描、鏡像安全掃描、鏡像構建入庫、鏡像運行攔截等。安全左移能夠盡早發現問題,有助于降低修復成本。
5. 零信任
按照零信任的思想,持續信任評估,動態訪問控制。零信任的其中一條技術路線是微隔離。在容器網絡中,需要采用微隔離技術來緩解風險。
(二)解決方案
結合該銀行其系統特點和需求,設計了如下的云原生安全架構。

圖4 云原生安全系統架構
1. 資產中心
資產中心對鏡像、倉庫、容器、集群節點、微服務、Kubernetes 配置信息等容器相關信息進行自動采集和實時更新,支持對每一類資產進行數據分級聚合展示,實現云原生資產的全面可視化,幫助用戶更直觀地了解當前云原生資產情況,消除安全與運維之間的信息壁壘。
2. 漏洞管理
基于漏洞的視角,對整體的風險進行梳理,形成發現漏洞 - 驗證漏洞 - 修復漏洞的閉環。發現漏洞,對業務容器的鏡像和集群進行掃描,得到當前存在的漏洞列表。驗證漏洞,對漏洞進行驗證,以確保掃描結果的正確性。分類分級,從漏洞的嚴重性與相關資產的重要程度,對漏洞進行評級,使得修復工作分得清優先級。修復與驗證,對修復漏洞后的資產重新掃描審核,確認問題得到緩解。
3. 合規審計
在業務系統上線運行之前,對業務系統所在容器、集群以及節點進行合規檢測,以防止不安全的配置導致容器逃逸或者集群入侵事件。全棧云原生安全防護平臺在制定規范要求時,基于 CIS合規進行裁剪與自定義,并提供可視化的基線檢測結果和修復建議,協助用戶修復不合規的配置。
4. 鏡像安全
鏡像作為容器運行的基礎,如果存在安全隱患、風險問題將直接影響到容器環境的安全性。面對鏡像中可能存在的安全問題,需要對業務環境的鏡像資產,進行自動掃描以及支持手動掃描來識別風險,對危險鏡像基于策略進行阻斷,對高危鏡像提供可寫入鏡像源碼文件(Dockerfile)的修復建議。
云原生安全防護平臺支持對容器鏡像制作過程、鏡像運行、鏡像發布進行全方位的監控和檢測,可以自動獲取節點和倉庫中的鏡像,并從官方漏洞庫、木馬病毒、可疑歷史操作、敏感信息泄露、以及是否是可信任鏡像等多個維度對鏡像進行掃描。
5. 容器安全
云原生安全防護平臺通過對容器的調用行為進行自動學習,形成容器的運行模型,同時對容器的調用行為進行監控,當容器出現模型之外的調用動作后,進行實時預警或阻斷。
容器安全防護平臺支持對容器內行為進行檢測。當發現容器逃逸行為、讀取敏感信息、啟動惡意進程、掛載非法設備、映射敏感目錄、修改命名空間等惡意行為時,根據預設策略觸發報警或阻斷容器運行,并對發現異常的 POD進行隔離。
6. 微服務安全
云原生安全防護平臺提供對微服務、應用進行周期性的檢測。支持自動檢測發現 Kubernetes 集群內的微服務以及應用編程接口(API)并通過可視化視角展示出來。能夠通過手動或周期性自動發現的微服務以及 API 進行安全風險掃描。
7. 集群安全
Kubernetes 的多個核心組件均有不同程度的漏洞爆出,其中不乏高危甚至是超危漏洞。除了包含漏洞的組件,不安全的配置也可能使得整個集群處于風險之中。平臺支持對不同類型云的集群的不同版本進行安全風險掃描,如 Kubernetes 版本信息披露、匿名身份驗證、可能遭受的各類攻擊等。
8. 網絡微隔離
容器微隔離用于阻止容器間東西向的攻擊,減小被攻擊面,全自動構建和管理容器層的訪問控制策略。主要通過雙向控制、訪問可視化、訪問過程溯源的功能,對基于容器、容器組和業務視角進行超細粒度的雙向網絡訪問控制,能夠對非法訪問的軌跡監控并溯源整個行為訪問的過程。
三、云原生安全的關注點
企業在建設云原生安全體系時,除需要使用專業的云原生安全產品外,還包括持續的云原生安全運營。所以,企業在云原生安全建設還需重點關注以下三點。
(一)防御能力的有效性
容器運行時安全除了能夠應對已知威脅,還應具備應對未知威脅的能力。在整體上對齊 MITRE的 ATT&CK 框架,增強安全事件分析能力,通過持續運營來優化配置,降低漏報與誤報。風險檢測的準確率提升了,才有可能進一步推進自動處置措施的編排落地。
此外,企業可以考慮部署云原生蜜罐來建立主動威脅情報能力。
(二)安全的左移
在軟件生命周期中,越靠后修復問題的成本越高,越靠前修復問題的越低。安全左移是將安全投資更多地放到開發階段,包括安全需求分析、安全設計、安全編碼、供應鏈(軟件庫、開源軟件等)安全、鏡像安全等。
在云原生環境中,業務需要頻繁調整、上線,安全左移的思路不僅讓 DevOps 團隊能夠及早發現安全風險,還能降低安全投入、提高整體的安全水平,以確保及時解決安全威脅。DevOps 是云原生重要的組成部分,所以 DevSecOps 也是云原生安全的一個重要部分。
(三)工具鏈的整合
Gartner 2021 年技術成熟度曲線中增加了一個新類別云原生應用保護平臺(CNAPP),包含一組集成的安全性和合規性功能,旨在開發和生產過程中保護云原生應用。有些企業使用了 10 個或更多不同的安全工具,手工將 DevSecOps 縫合在一起,每個工具都有獨立的責任和應用程序風險視圖。
在開發階段,靜態應用程序安全測試(SAST,通常所說的代碼審計)、API 安全測試、動態應用程序安全測試(DAST)、基礎架構即代碼(IaC)掃描和威脅建模是保護云原生應用最常用的五種工具。
在生產運維階段,WEB 應用程序防火墻(WAF)、WEB 應用和 API 保護(WAAP)、應用安全監控、云工作保護平臺(CWPP)和云安全態勢管理(CSPM)是保護云原生應用的五種最常用工具。
如果保護云原生應用需要使用來自多個供應商的多個工具,顯然會降低開發和運維的效率,并造成風險的零散可見性。CNAPP 產品允許企業使用單個集成產品來保護云原生應用的整個生命周期。
CNAPP 重構了針對云原生應用安全防護的思路和方法。企業不應將開發和運行視為兩個單獨的部分,而分別使用不同的工具,應將安全性和合規性視為跨越開發和運維的連續統一體,并使用整合的安全工具。企業安全團隊和 DevSecOps架構師可以采用綜合的方法來理解和降低應用程序風險。通過在整個開發生命周期中綜合考慮漏洞、及其運行環境(上下文)關系,以發現更多風險,使開發團隊能夠專注于應用程序中最大風險的部分。
四、總 結
云原生安全發展的趨勢,從基礎設施層面來看分為幾個步驟:首先是“部署容器化”,然后是“容器微服務化”,再到“服務網格化”,最后實現“無服務器化”。對應的安全能力建設,首先是容器安全,然后開始關注微服務應用與數據安全,以及與服務網格(ServiceMesh)配套的安全能力建設。從軟件的生命周期來看,云原生安全建設則會更關注在 DevOps 的開發流程中做到同步的安全需求設計、安全開發、安全測試、安全發布和安全運維,形成整體的 DevSecOps方案。
隨著云原生技術的普及,云原生安全將完成現有云安全的替代,所以將來再討論云安全時,可能指的就是云原生安全。