國家保密局網站>>保密科技

云原生中的容器安全防護和實踐

2021年11月04日    來源:國家保密科技測評中心【字體: 打印

【摘   要】 本文從容器技術、鏡像、網絡和運行環境等維度分析了應用容器帶來的4個安全挑戰,總結了5項應對舉措,并從容器全生命周期保護出發,提出了容器安全解決方案。

【關鍵詞】 云原生 容器安全

1 引言

隨著云計算的發展,以容器和微服務為代表的云原生技術,受到人們的廣泛關注,其中Docker和Kubernetes (K8S)是企業容器運行時和容器編排的首要選擇。然而,在應用容器和K8S過程中,大多數企業都遇到過不同程度的安全問題,如何保障容器安全,已成為企業最關心的問題。

2 應用容器帶來新挑戰

容器應用之前,云中應用系統多數運行于虛擬機上,但虛擬機仍會有額外的資源浪費和維護成本,而且其啟動速度較慢。為進一步提升應用交付效率和資源利用率,因具有占用資源少、部署速度快和便于遷移等特點,容器技術開始受到企業青睞。在典型的云原生環境中,通常包括主機、鏡像、容器、容器編排平臺、網絡和微服務等對象,但由于目前多數企業使用容器技術部署業務應用,故下面將重點分析與容器相關的安全挑戰。

2.1 容器技術風險

作為一種操作系統虛擬化技術,容器共享操作系統內核,但并未實現完全隔離,若虛擬化軟件存在漏洞,或宿主機被攻擊,將會造成容器逃逸或資源隔離失效,影響某個容器或多個容器的安全。

◎容器逃逸:利用虛擬化軟件存在的漏洞,攻擊者通過容器獲取主機權限,可攻擊容器所在主機,甚至是該主機上的其他容器。過去幾年內已經發現了多個相關漏洞,其中CVE-2019-5736是RunC的一個安全漏洞,它會導致18.09.2版本前的Docker允許惡意容器覆蓋宿主機上的RunC二進制文件,使攻擊者能夠以根用戶身份在宿主機上執行任意命令。

◎資源隔離失效:攻擊者只要攻破容器操作系統內核,就可訪問到主機上的文件系統,或進入其他容器,導致容器隔離失效。如果把主機的文件系統掛載到多個容器的目錄里,容器就可以訪問同一個目錄,將會引起信息泄露或內容篡改等安全問題。

2.2 不安全的鏡像

鏡像是一個包含應用/服務運行所必需的操作系統和應用文件的集合,用于創建一個或多個容器,它們之間緊密聯系,鏡像的安全性將會影響容器安全。根據鏡像創建和使用方式,通常有3個因素影響鏡像安全。

◎現有鏡像不安全:鏡像通常是開發者基于某個現有鏡像創建的,無論是攻擊者上傳的惡意鏡像,還是現有鏡像存在的安全缺陷,基于它創建的鏡像都將會是不安全的。

◎使用包含漏洞的軟件:開發者經常會使用軟件庫的代碼或軟件,如果它們存在漏洞或惡意代碼,一旦被制作成鏡像,也將會影響容器的安全。

◎鏡像被篡改:容器鏡像在存儲和使用的過程中,可能被篡改,如被植入惡意程序和修改內容。一旦使用被惡意篡改的鏡像創建容器后,將會影響容器和應用程序的安全。

2.3 東西向攻擊

網絡實現了容器之間、容器與外部之間的通信,以及應用之間的交互,但在虛擬化的容器網絡環境中,其網絡安全風險較傳統網絡更復雜、嚴峻。以Docker環境為例,它支持Bridge、Overlay和Macvlan等網絡,盡管實現方式不同,但有一個共同和普遍的問題:如果容器之間未進行有效隔離和控制,則一旦攻擊者控制某臺主機或某臺容器,可以以此為跳板,攻擊同主機或不同主機上的其他容器,也就是常提到的“東西向攻擊”,甚至有可能形成拒絕服務攻擊。

2.4 運行環境未加固

作為容器的載體和編排管理軟件,主機和容器編排平臺等運行環境也是容器安全的重要因素之一。如前所述,主機上的容器并未實現完全隔離,如果主機未進行安全加固,一旦攻擊者發起提權攻擊,將會控制主機上其他容器。對于不安全的容器編排平臺同樣如此,某汽車制造企業就曾深受其害,由于其公有云環境中的K8S Master節點未設置密碼保護,攻擊者在盜取訪問權限后,使用K8S集群挖掘加密貨幣。

3 容器安全應對舉措

容器就利用了大部分Linux通用的安全技術,它們構成了容器安全的基礎。面對新挑戰,無論傳統的安全加固,還是新的鏡像組成分析,鏡像、容器技術、網絡和主機等不同層面的安全措施,都將有助于提升容器安全性。

3.1 Linux內核安全

Linux通用的安全技術包括命名空間(Namespace)、控制組(Cgroups)、系統權限(Capability)、強制訪問控制(MAC)系統以及安全計算(Seccomp)等。一個好的容器平臺,應該具備這些能力,下文將聚焦前3種能力。

◎命名空間(Namespace):本質上容器是由各種命名空間組成的,它們為容器提供了基礎隔離,讓每個容器擁有獨立的進程ID、網絡棧、根目錄、內存、用戶名和主機名,如圖1所示。

◎ 控制組(Cgroups):控制組負責實現資源審計和限制,讓每個容器公平地分享主機資源,并設置了限制,以免單個容器過度消耗資源,影響到主機系統和其他容器運行,也可以防止拒絕服務攻擊,如圖2所示。

◎系統權限(Capability):root用戶擁有全部的權限,以root身份運行容器很危險;但如果以非root身份在后臺運行容器的話,由于缺少權限會處處受限,系統權限機制可以提供細粒度的權限訪問控制,控制容器運行所需的root用戶權限,即使攻擊者取得了root權限,也不能獲得主機的較高權限,將會限制進一步的破壞,如圖3所示。

3.2 容器隔離

Linux通用安全技術為容器提供了基礎隔離,但未實現100%隔離。安全容器通過增加額外的隔離層可以進一步增加容器的安全性。它是一種容器運行時技術,為容器應用提供一個完整的操作系統執行環境(常常是 Linux ABI),將應用的執行與宿主機操作系統隔離開,避免應用直接訪問主機資源,從而可以在容器主機之間或容器之間提供額外的保護。

gVisor和Kata Containers是兩個有代表性的安全容器實現,其中Kata Containers通過使用硬件虛擬化,利用輕量級的虛擬機為容器提供隔離,每一個Container/Pod運行于獨立的虛擬機上,它們不再從主機內核上獲取相應所有的權限,Kata Containers結構及原理如圖4所示,與VM一樣能提供強隔離性。

3.3 鏡像安全

作為容器運行的基礎,容器鏡像的安全在整個容器安全生態中占據著重要位置。容器鏡像由若干層鏡像疊加而成,通過鏡像倉庫分發和更新。因此,可以從鏡像構建安全、倉庫安全以及鏡像分發安全3個方面實現鏡像安全。

◎鏡像構建安全:在構建鏡像時,驗證所依賴鏡像的完整性和來源,只安裝必要的軟件包,使用恰當的指令,縮小攻擊面,并利用加密技術,保護好密碼、令牌、密鑰和用戶秘密信息等。

◎鏡像倉庫安全:鏡像倉庫分為公共鏡像倉庫和私有鏡像倉庫,使用的公共鏡像倉庫應為官方發布的最新版本鏡像,對下載的鏡像要經過漏洞掃描評估,并保持定時更新。對于私有鏡像倉庫,一方面保持倉庫自身的安全性,如在使用時要配置相應的安全證書;另一方面使用鏡像過程中,利用用戶訪問權限控制確保交互過程的安全性。

◎鏡像分發安全:在鏡像下載和上傳時,利用數字簽名和https來保障容器鏡像的完整性和機密性,抵御中間人攻擊等威脅。

3.4 訪問控制

網絡的基本防護手段是隔離和訪問控制,容器網絡防護可使用容器環境自身安全機制或第三方微隔離產品。對于K8S網絡,其自身安全策略對每個Pod的入口強制執行訪問控制,從而能夠隔離高風險的微服務,但Pod內容器間通信和離開Pod的出口流量無法控制。第三方微隔離產品可以比K8S更詳細地記錄出入網絡連接、深入檢測網絡中威脅和攻擊、檢測數據泄露,以及實現7層微隔離和網絡可視化。

3.5 運行環境加固

利用安全基線對容器主機和K8S進行安全檢查和加固,將會進一步增加容器的安全性。CIS發布的Docker基線已成為Linux主機配置和Docker主機加固的最佳實踐。通過創建一個特權容器,將Docker主機安全配置與CIS基線進行對比,可以發現安全問題并實施加固。同樣,CIS也發布了K8S基線,傳統的漏洞掃描工具和獨立的容器安全產品(如Aqua Security和NeuVector)已經在GitHub上發布了腳本,可實現自動化的K8S安全檢查。

4 容器安全實踐

隨著DevOps興起,軟件開發人員與運維人員之間緊密合作,通過自動化流程來完成軟件開發、測試、發布和維護,整個過程更加快捷、頻繁和可靠,縮短了軟件上線時間,減少了很多重復性和人工工作,F在,針對容器安全風險,已經形成了多種安全控制措施,如何將它們融入DevOps中高效保護應用系統,是容器安全實踐需要考慮的首要問題。

為此,我們秉承DevSecOps理念,提出了容器全生命周期安全保護方案,該方案利用容器安全管理系統,通過容器編排技術將安全容器部署于容器環境中,進行持續的檢測和分析,實現容器環境的資源可視化管理、鏡像風險管理、容器運行時安全管理、合規性檢測和微服務API風險管理,最終保障容器在構建、部署和運行整個生命周期的安全。

4.1 總體架構

容器安全防護方案采用模塊化和分層設計,通過與容器運行環境進行對接,實時獲取容器環境中的鏡像和容器等對象的相關信息,利用各種安全能力進行監控和分析,實施統一的安全管理,最后通過圖形化方式為用戶展示容器環境的安全態勢,如圖5所示。

◎安全管理層:負責安全管理功能,包括容器環境的資產管理、策略管理和安全能力管理等,通過安全能力適配將各種管理信息下發給各種安全能力,以及收集各種安全信息,經集中分析和處理后,集中對用戶展示容器環境的主機、容器、鏡像和網絡等對象的安全狀態。

◎安全能力層:負責提供具體安全能力,為容器環境提供安全保護,安全能力涉及系統安全掃描、鏡像文件分析、惡意文件分析、入侵檢測和微隔離等。

◎運行環境層:負責提供容器鏡像、容器編排管理等功能,以及運行應用程序的容器,并與容器能力層進行交互,共同實現容器安全防護。

4.2 容器全生命周期保護

根據容器安全防護架構,本方案將各種安全能力與DevOps流水線相結合,從持續集成/持續部署和運行時進行安全防護,為容器提供構建、部署和運行的全生命周期保護,到最終實現應用系統的安全運行,如圖6所示。

4.2.1 構建安全

在應用程序構建階段,通過與CI/CD流水線集成,分析構建鏡像時所使用的命令和配置參數,還原鏡像文件構建過程,掌握命令使用的敏感操作,以及分析鏡像文件是否包含密碼、令牌、密鑰和用戶私密信息等敏感信息。同時,分析鏡像的軟件組成,發現鏡像文件中包含的惡意文件、病毒,以及所使用的依賴庫和組件存在的安全漏洞,避免帶病交付。

4.2.2 部署安全

分析鏡像無風險后,鏡像被提交至鏡像倉庫。在該階段,將檢查容器環境的鏡像倉庫配置,確保使用加密方式連接鏡像倉庫。通過與K8S聯動,當鏡像倉庫中新增鏡像或使用鏡像創建容器時,自動化校驗鏡像簽名或MD5值,確保鏡像來源可信且未被篡改,一旦發現鏡像來源不可信或被篡改,禁止使用該鏡像創建容器。

4.2.3 運行安全

當確認鏡像安全后,進入到容器運行階段。在該階段利用系統安全掃描能力,基于Docker和K8SCIS基線,對主機和容器編排工具K8S進行合規性檢查,檢查范圍包括主機安全配置、Docker守護進程配置、Docker守護程序配置文件、容器鏡像和構建、容器運行安全和Docker安全操作等,確保容器運行環境安全。

同時,利用微隔離對容器進行網絡隔離,通過入侵檢測能力實時監測容器運行狀態,監測對象包括容器內運行進程(如netlink socket、perf event和eBPF)和文件系統,以及主機環境的權限提升和破壞容器隔離性等行為。當發現容器運行異常時,利用訪問控制機制限制容器進一步的行為和通信。

5 結語

伴隨著云原生應用發展,企業通過微服務來交付應用系統的比例在增加,容器安全也將不僅僅是容器自身和容器環境安全,將延伸到微服務安全和應用安全,企業在應用云原生技術時,應整體考慮容器安全,讓安全與云原生相融合,更好地保護應用系統。

 

(原載于《保密科學技術》雜志2021年1月刊)

 


主站蜘蛛池模板: 伊人色综合九久久天天蜜桃| 一本色道久久88综合日韩精品| 婷婷丁香五月天综合东京热| 亚洲Av综合色区无码专区桃色| 国产成人亚洲综合一区| 亚洲国产欧洲综合997久久| 一本一本久久aa综合精品| 亚洲精品第一国产综合精品99| 国产综合内射日韩久| 综合偷自拍亚洲乱中文字幕| 婷婷四房综合激情五月在线| 久久久久综合一本久道| 亚洲综合免费视频| 亚洲伊人成无码综合网| 99久久亚洲综合精品成人网| 狠狠色丁香婷婷久久综合不卡| 国产成人综合亚洲亚洲国产第一页| 久久综合伊人77777| 亚洲欧洲日韩综合| 伊人色综合久久天天| 国产成人亚洲综合一区| 久久青青草原综合伊人| 久久综合综合久久97色| 色综合99久久久无码国产精品| 亚洲国产综合AV在线观看| 婷婷综合另类小说色区| 国产一区二区三区亚洲综合| 成人综合婷婷国产精品久久蜜臀| 亚洲国产精品成人AV无码久久综合影院| 久久丁香五月天综合网| 亚洲狠狠综合久久| 开心五月激情综合婷婷| 色偷偷91久久综合噜噜噜噜| 综合久久国产九一剧情麻豆| 久久国产精品亚洲综合| 狠狠做深爱婷婷久久综合一区| 久久综合狠狠综合久久| 国产香蕉久久精品综合网| 亚洲精品第一综合99久久| 一本大道久久a久久综合| 一本久久a久久精品综合香蕉|