什麼是容器安全?

容器安全涉及在整個生命週期(從開發到部署和運行時)保護 容器化應用程式 及其基礎架構。它包含弱點掃描、組態管理、存取控制、網路分割和監控。容器安全旨在將應用程式隔離的固有優點發揮到極致,同時將資源共用和潛在攻擊面的相關風險降到最低。透過遵守最佳實務和使用專門的安全工具,組織可以保護其容器環境,防止未經授權的存取和 資料外洩 ,同時維持符合業界規範性。

 

容器安全說明

容器 讓我們有能力 利用微服務架構 ,以更快的速度和更高的可移植性運作。容器也引入了固有的安全優勢。工作負載 隔離、應用程式抽象以及容器的不可變性,都是採用容器的重要因素。

Kubernetes也提供內建的安全功能。管理員可定義以角色為基礎的存取控制 (RBAC) 政策,以協助防止未經授權存取群集資源。他們可以設定 Pod 安全政策和網路政策,以防止 Pod 和連接 Pod 的網路遭到某些類型的濫用。管理員可強制執行資源配額,以減輕攻擊者攻擊群集某個部分所造成的干擾。舉例來說,有了資源配額,攻擊者就無法透過剝奪叢集運作所需的其他資源來執行 拒絕服務攻擊

但正如您可能已經猜到的,沒有任何技術可以避免惡意活動。容器安全,即為保護您的應用程式以及容器化環境(從主機、運行時和登錄到協調平台和底層系統)而實施的技術和實踐,是至關重要的。

視訊:偵測容器映像中的漏洞,並透過容器掃描確保整個開發生命週期的安全性與合規性。

背景資料

容器安全反映了 IT 架構不斷變化的本質。 雲原生運算的 興起從根本上改變了我們建立應用程式的方式。與科技同步發展要求我們調整保護它們的方法。

過去,網路安全意指保護單一周邊。容器使這個概念變得過時,它增加了多層抽象層,需要專門的工具來解釋、監控和保護我們的容器化環境。

與傳統平台相比,容器生態系統的工具眾多,而且解決的問題獨特,因此可能難以理解。與此同時,容器技術的廣泛採用讓我們有機會向左轉移 - 從 CI/CD 管道 的最早期階段到部署和執行時,都能確保容器安全。

但在深入瞭解容器安全的細節之前,有必要先瞭解用於管理容器的平台。我們將專注於最大、最知名的平台之一 Kubernetes。

什麼是 Kubernetes?

Kubernetes 是領先的協調平台之一,有助於優化和實施以容器為基礎的基礎架構。具體來說,它是一個開放原始碼平台,透過自動化應用程式開發、部署和管理等流程,用於管理 container 化工作負載

作為一個被廣泛採用的開源平台,確保 Kubernetes 的安全對於部署容器化應用程式的組織而言至關重要。組織必須建立安全的環境,尤其是在將開放原始碼納入第三方應用程式時。Kubernetes 擁有廣泛的生態系統和許多管理容器的整合,能夠建立自動化、系統化的流程,將安全整合到其建立和部署管道的核心。透過利用 Kubernetes 的本機功能,例如 RBAC、pod 安全政策和網路政策,組織可以利用彈性的容器協調基礎架構,建立並維護穩固的安全勢態。

容器的優點

簡單來說,容器讓雲原生應用程式的建置、部署和擴充變得前所未有的簡單。對於雲原生應用程式開發人員來說,容器的首要優點包括:

  1. 消除摩擦:開發人員可以避免將應用程式碼從測試階段移至生產階段時所產生的許多摩擦,因為包裝為容器的應用程式碼可以在任何地方執行。
  2. 應用程式開發的單一真實來源:與應用程式相關的所有相依性都包含在容器中。這可讓應用程式在虛擬機、裸機伺服器和公有雲上輕鬆且相同地執行。
  3. 更快的建立時間:容器的彈性和可攜性讓開發人員在生產力方面取得以前無法達到的成果。
  4. 開發人員的信心:開發人員可以放心地部署他們的應用程式,因為他們知道他們的應用程式或平台可以在所有作業系統上以相同的方式執行。
  5. 加強合作:使用容器的多個團隊可以處理應用程式或服務的個別部分,而不會擾亂包裝在其他容器中的程式碼。

與任何 IT 架構一樣,雲原生應用程式也要求安全性。容器環境帶來了一系列針對其映像、容器、主機、執行時間、登錄和協調平台的 網路安全挑戰 - 所有這些問題都需要解決。

 

瞭解攻擊面

考慮 Kubernetes 龐大的多層架構。每個層級 - 從代碼和容器到集群和協力廠商雲端服務 - 都會帶來一系列不同的安全挑戰。

確保 Kubernetes 部署的安全需要保護底層基礎架構 (節點、負載平衡器等)、可配置的元件,以及在群集中執行的應用程式 - 包括維護底層節點的勢態,以及控制對 API 和 Kubelet 的存取。此外,防止惡意工作負載在群集中執行,並透過嚴格的 網路控制隔離工作負載通訊也很重要。

容器執行時可能會受到編碼缺陷的影響,導致容器內的權限升級。Kubernetes API 伺服器可能配置不當,讓攻擊者有機會存取假設已鎖定的資源。容器化應用程式或 Kubernetes 節點上執行的作業系統中,可能存在導致 權限升級攻擊的 漏洞。

剖析容器的攻擊面

圖 1:剖析容器的攻擊面

在這個系統中,當另一層有安全問題時,一層的問題就會被放大。

當然,容器也可能隱藏漏洞。同時,集裝箱可能會遮蔽視線。想像一下,一個不安全的映像被實體化為無數次獨立執行的容器。昔日的單一裂縫,如今已成為要塞中一個龐大的裂縫網絡。

隨著您越來越多地部署容器,保持系統作業和安全的可視性的必要性變得越來越具有挑戰性。而這只是維持能見度,是無數目標之一。

圖 1 以及表 1 中概述的擴充詳細資料,為瞭解容器化應用程式的攻擊面提供了一個起點。

值得注意的是,描繪是經過簡化的。實際上,攻擊者在嘗試利用容器化應用程式的漏洞時,有許多進路可以探索。防禦此技術堆棧並不一定比保護其他環境和技術更令人生畏。容器化 只是提出了獨特的安全考量,組織需要處理這些考量,以建立安全且具彈性的基礎架構。

攻擊面面積 攻擊向量 說明 範例
透過網路 惡意網路流量 利用網路漏洞或配置錯誤存取容器環境。 掃描開啟的連接埠,並利用配置錯誤存取工作者節點。
主機設定 配置錯誤的主機系統 利用主機作業系統的配置錯誤存取容器環境。 發現不安全的檔案權限,以存取敏感檔案,例如容器組態檔案。
主機漏洞 未修補的主機漏洞 利用主機作業系統的漏洞存取容器環境。 識別並利用未修補的內核漏洞,以取得工作者節點的 root 權限。
主機應用程式漏洞 未修補的主機應用程式漏洞 利用主機應用程式的漏洞來存取容器環境。 針對較舊版本的 Docker,利用漏洞在工作節點上取得 root 權限。
容器協調漏洞與錯誤配置 配置錯誤的 Container Orchestration 利用集裝箱協調系統中的配置錯誤存取集裝箱環境。 利用 Kubernetes 群組中不安全的存取控制政策來存取 Pod 和服務。
受損的容器映像 攻擊者取得容器映像建立程序的存取權限 破壞容器映像建立程序,將惡意程式碼注入容器映像。 利用 CI/CD 管道 中的漏洞,在容器映像建立過程中注入惡意程式碼。
容器漏洞與錯誤配置 未修補的容器漏洞 利用容器本身的漏洞來存取容器環境。 針對在容器中執行的流行應用程式中未修補的漏洞,以取得存取權限。
貨櫃逃生 攻擊者取得容器的特權存取權 突破容器的隔離並存取主機系統。 利用容器執行時的漏洞或濫用主機系統的配置錯誤,以取得主機系統的 root 權限。

表 1:分解容器的攻擊面

幸運的是,每層攻擊面都可以透過設計和製程考量,以及本機和協力廠商安全選項來強化,以降低工作負載受到攻擊的風險。您需要多方面的策略,但我們本節指南的目標就是為您提供這樣的策略。

圖 2:容器安全跨越整個軟體開發生命週期

圖 2:容器安全跨越整個軟體開發生命週期

 

如何保護容器安全

容器使用者需要確保他們擁有專門打造的 全堆栈安全 ,以解決容器化應用程式的弱點管理、合規性、運行時保護和網路安全要求。

容器網路安全

容器化應用程式所面臨的風險與裸機及 VM 型應用程式相同,例如加密劫持、勒索軟體及 BotNet C2。容器網路安全可主動 限制不需要的通訊,並透過多種策略預防威脅攻擊您的應用程式。網路安全的關鍵元件涉及 微區隔、存取控制、加密和政策,以維持安全且具彈性的環境。持續監控、日誌記錄和定期稽核有助於識別和糾正潛在的安全漏洞,及時的修補程式也能讓您的平台和基礎架構保持最新狀態。

左移安全工具可針對已知漏洞提供部署時保護,而 容器化的新一代防火牆則 可針對未知和未修補的漏洞提供保護。執行 第 7 層 深度封包檢查和掃描所有允許的流量,可辨識並防止惡意軟體進入集群並在集群內擴散,並阻止用於資料外洩和指揮與控制 (C2) 攻擊的惡意向外連線。基于身份的微分段有助于限制第 3 层和第 4 层应用程序之间的通信。

容器運行時安全

雲原生 運行時安全 是識別 運行 容器中的新漏洞並確保應用程式安全的過程。使用容器的組織應利用 增強的運行時保護 ,建立異常偵測所依賴的行為基線。運行時安全可以識別和封鎖偏離基線的惡意程序、檔案和網路行為。

使用纵深防御策略来防止第 7 层攻击,例如 OWASP Top 10,组织除了通过容器化的新一代防火墙来实施容器网络安全外,还应该使用 Web 应用程序和 API 安全来 实施运行时保护。

容器註冊安全

讓安全進入容器建置階段意味著向左移動,而不是在執行時被動地移動。建置階段的安全性應該著重於移除弱點、惡意軟體和不安全的程式碼。由於容器是由程式庫、二進位檔和應用程式碼所組成,因此確保容器註冊表的安全至關重要。

容器註冊安全的 第一步是為您的組織建立官方容器註冊。毫無疑問,已經存在一個或多個註冊處。安全小組的工作就是找到它們,並確保它們得到適當的安全保護,這包括設定安全標準和協定。容器註冊安全標準的首要目標應該以建立可信賴的映像為中心。為此, DevOps 和安全小組需要在政策上保持一致,首先要防止容器從不受信任的註冊表進行部署。

註冊表內的入侵或漏洞可輕易入侵執行中的應用程式。持續監控註冊表的弱點狀態變更仍是核心的安全要求。其他要求包括鎖定託管註冊表的伺服器,並使用安全存取政策。

容器協調安全

容器協調安全 是制定適當存取控制措施的過程,以防範超權限帳號、網路攻擊和不必要的橫向移動所造成的風險。透過利用 身分存取管理 (IAM)最低權限訪問(其中 Docker 和 Kubernetes 活動會被明確列入白名單),安全和基礎架構小組可以確保使用者只根據適當的角色執行指令。

此外,組織需要保護 pod-to-pod 通訊,透過防止攻擊者在環境中橫向移動來限制損害,並確保任何前端服務不受攻擊。

主機作業系統 (OS) 安全性

主機作業系統安全 是保護作業系統 (OS) 免遭網路攻擊的做法。隨著雲端原生應用程式開發技術的發展, 對主機安全性的需求也與日俱增。

說到安全,託管容器環境的作業系統可能是最重要的一層。危害主機環境的攻擊可能會讓入侵者存取堆疊中的所有其他區域。這就是為什麼主機需要掃描漏洞、加強以符合 CIS Benchmarks,並防止弱存取控制(Docker 指令、SSH 指令、sudo 指令等)。

 

容器安全解決方案

保護您的容器化環境需要多層次的方法來處理潛在的弱點和威脅。近年來,組織可賴以在整個開發、部署和執行階段保護其容器化應用程式和基礎架構的容器安全解決方案,已具備更高的精密度和能力。現代安全工具可有效降低外洩與資料洩漏的風險,促進合規性並維護安全環境,同時加速 DevSecOps 的採用。

貨櫃監控

監控註冊表 漏洞的能力對維護容器安全至關重要。由於開發人員會持續撕毀和更換容器,因此當嘗試判斷容器化環境中發生了什麼事時,能讓安全小組將時間序列戳記套用在容器上的監控工具是非常重要的。

用於容器監控的流行工具包括 Prometheus、Grafana、Sumo Logic 和 Prisma Cloud。Prisma Cloud 可為雲原生與傳統應用程式提供執行時威脅偵測與異常分析。它利用機器學習和行為分析來識別整個容器生命週期 (從建立到執行) 中的可疑活動。

貨櫃掃描工具

無論是在生產環境中部署容器之前,還是更換容器之後,都需要持續掃描容器的漏洞。開發人員很容易誤將有已知漏洞的函式庫納入容器中。同樣重要的是要記住,幾乎每天都有新的漏洞被發現。這意味著今天看起來非常安全的容器映像,明天就可能成為散佈各種惡意軟體的工具。這就是為什麼維護 容器映像信任 是容器掃描工具的核心元件。

容器掃描工具包括 Aqua Security、Anchore、Clair 和 Prisma Cloud。Prisma Cloud 可為註冊中心和 CI/CD 管道期間的容器映像提供深層漏洞掃描。它可以偵測已知的漏洞、配置錯誤和惡意軟體,幫助您從一開始就建立安全的容器。

容器網路安全工具

一旦部署,容器需要受到保護,以免有人不斷試圖竊取專屬資料或運算資源。容器化的新一代防火牆、 Web 應用程式與 API 安全 (WAAS)以及微區隔工具可檢查並保護所有進出容器的流量(南北向與東西向),賦予 Kubernetes 環境完整的 第 7 層 可視性與控制。此外, 容器化防火牆 可隨容器基礎架構快速變化的規模和按需動態擴充,保證業務運作的安全性和頻寬。

網路安全工具包括 Calico、Flannel、CNI 外掛程式 (例如 Istio、Cilium)、Kubernetes NetworkPolicy 和 Prisma Cloud。Prisma Cloud 與 Kubernetes 等容器編排平台整合,提供網路威脅檢測。它可確保容器之間的東西向流量安全,並防止環境內未經授權的橫向移動。

政策引擎

現代工具可讓 雲端安全 小組定義政策,這些政策基本上可決定允許何人及何物存取任何指定的微服務。組織需要一個框架來定義這些政策,並確保這些政策在高度分散的容器 Application 環境中得到一致的維護。

受歡迎的政策引擎包括 Cilium、OPA Gatekeeper、Neutrino、Kubernetes Network Policy API 和 Prisma Cloud。Prisma Cloud 可在您的容器部署中執行安全政策,包括網路存取控制、資源限制和映像簽章。這可確保一致的安全勢態,並符合您組織的標準。

選擇正確的解決方案

在選擇解決方案來保護您的容器化環境時,請考慮您組織的需求和風險領域。您需要先進的威脅檢測、弱點管理或嚴格的政策執行嗎?評估與現有工具和基礎架構的整合。與開發管道、協調平台和 SIEM 系統的無縫整合可改變遊戲規則。

請記住,有效的容器安全並不僅限於個別工具。實施具有持續監控、主動掃描、強大政策和可靠網路安全的分層方法,將可大幅提升容器化環境對抗威脅的彈性。

 

容器安全常見問題

政策引擎是一種軟體元件,可讓 DevSecOps 團隊定義、管理和強制執行政策,以規範應用程式、網路和資料等資源的存取和使用。 

政策引擎會根據預先定義的規則和條件評估傳入的要求,並根據這些政策做出決策。它們有助於確保合規性、加強安全性並維持對資源的控制。在容器化環境中,政策引擎在持續維護分散式應用程式和 微服務的存取與安全政策方面扮演重要角色,協助管理複雜、動態基礎架構中的政策執行並加以自動化。

共通漏洞與曝露 (Common Vulnerabilities and Exposures, CVE) 是指一個標準化的系統,用來辨識、編輯及分享公開已知的網路安全漏洞與曝露資訊。CVE 項目由唯一的識別碼、描述和嚴重性分數組成。該系統由 MITRE Corporation 維護,旨在促進不同資料庫、工具和組織間的弱點追蹤、管理和溝通。CVE 為弱點提供共同參考,有助於安全專業人員、研究人員和開發人員更好地瞭解潛在風險、優先執行修復工作,並提升軟體和系統的整體安全勢態。

MITRE ATT&CK 矩陣是一個全面、全球皆可存取的網路敵人策略與技術知識庫。它由 MITRE 開發和維護,MITRE 是一個非營利組織,經營由美國政府贊助的研發中心。ATT&CK 代表敵對策略、技術和常識。

該矩陣可作為瞭解、分類和記錄網路敵人用來入侵系統、網路和 Application 的各種方法的框架。它旨在幫助安全小組、研究人員和組織在網路安全生命週期的各個階段,包括威脅檢測、預防、回應和減輕。

MITRE ATT&CK 矩陣被組織成一系列的類別,稱為戰術,代表敵人攻擊生命週期的不同階段。每種戰術都包含多種技巧,對手會在該階段使用這些技巧來達成目標。這些技術再細分為子技術,提供有關網路攻擊中使用的特定方法和工具的更詳細資訊。

安全上下文是一組與計算系統中的程序、使用者或物件的安全設定有關的屬性或特性。在容器化環境的上下文中,安全上下文定義了容器和 Pod 的安全和存取控制設定,例如使用者和群組權限、檔案系統存取、權限等級,以及其他與安全相關的設定。

Kubernetes 允許您在 Pod 層級或容器層級設定安全上下文。透過設定安全上下文,您可以控制容器化應用程式的安全設定和限制,確保它們以適當的權限和安全的方式執行。

可在安全上下文中定義的一些關鍵屬性包括

  • User ID (UID) 和 group ID (GID):這些設定決定容器或 pod 將以何種使用者和群組執行,從而控制對資源和系統功能的存取。
  • 權限升級控制:此設定決定容器中的進程是否可以取得額外權限,例如以根使用者身份執行。透過停用權限升級,您可以限制受入侵容器的潛在影響。
  • 檔案系統存取:安全上下文可讓您定義容器存取檔案系統的方式,包括唯讀存取或以特定權限掛載磁碟區。
  • Linux 功能:這些設定控制容器可以使用的特定功能,例如網路綁定、系統時間設定或管理任務。
  • SELinux 上下文:安全上下文可用於定義容器或 pod 的 SELinux 上下文,強制執行強制存取控制政策,並進一步隔離容器與主機系統。

透過在 Kubernetes 中正確配置安全上下文,您可以增強容器化應用程式的安全性、強制執行最少權限原則,並保護整體系統免受潛在的安全風險。

程式碼安全是指為了確保軟體程式碼的撰寫與維護安全而實施的實務與流程。這包括識別和減緩潛在的弱點,並遵循安全編碼的最佳實務,以防範安全風險。程式碼安全包含各個層面,例如:

  • 靜態應用程式安全測試 (SAST):在不執行程式碼的情況下,分析原始程式碼、bytecode 或二進位程式碼,以找出潛在的安全漏洞。
  • 動態應用程式安全測試 (DAST):測試執行中的應用程式,透過模擬攻擊和分析應用程式的行為來找出安全漏洞。
  • 軟體組成分析:掃描和監控程式碼中使用的相依性 (函式庫、架構等),以找出已知的弱點,並確保它們是最新的。
  • 安全編碼實務:遵循指引和最佳實務 (例如 OWASP Top Ten Project) 來撰寫安全程式碼,並避免導入弱點。

政策是特定的安全規則和準則,用於在 Kubernetes 環境中強制執行安全要求,而 IaC 則是使用程式碼管理和配置基礎結構資源的更廣泛實務。兩者可一起使用,以改善 Kubernetes 環境內的安全性、一致性和自動化。 

使用 IaC,您可以定義和管理網路政策、防火牆規則和存取控制等安全組態,作為基礎結構定義的一部分。例如,您可以在 Kubernetes 清单中包含 Kubernetes 网络策略、入口和出口配置以及基于角色的访问控制 (RBAC) 策略,然后将其作为基础架构即代码进行管理。

Terraform、CloudFormation 和 Kubernetes 清单等工具可让您以一致和自动化的方式管理基础架构资源和安全配置。透過在 IaC 定義中加入安全措施,您可改善容器和 Kubernetes 環境的整體安全性,並確保符合最佳實務和合規性要求。

政策即程式碼 (PaC) 是指在版本控制系統中,將基礎結構政策、合規性和安全性規則編碼為程式碼,並加以管理。PaC 可讓組織自動執行和稽核政策,確保基礎結構依照要求的標準建立和維護。透過將這些政策整合至政策即程式碼流程中,或作為基礎架構建置的一部分,組織可以確保其工具符合必要的標準和最佳實務。

警報處理是一種指定您希望警報何時通知您或異常的偏好方法。設定包括保守、溫和及進取。偏好依據問題的嚴重性而定 - 低、中、高。 

  • 保守會產生嚴重性較高的警報。
  • 中度」會產生高度和中度嚴重性警報。
  • Aggressive(進階)會產生高、中、低嚴重性警示。
透過異常設定自訂,您可以控制異常原則產生警示的標準。使用者可以修改異常設定,以變更模型訓練臨界值、自訂警報處理,以及新增異常受信任清單,以抑制來自受信任資源的警報。
異常訓練模型閾值是指定義不同閾值的方法,用於訓練 UEBA 和網路異常的異常偵測模型。您可以將訓練模型臨界值設定為低、中或高。這些臨界值用於決定用於訓練模型的資料量(例如至少 100 個使用者事件)和資料持續時間(例如 30 天)。
異常信任清單是一種壓制您不想產生警示的特定資源的方法。例如,如果有些 IP 位址是您用來執行滲透測試的,您可以將這些 IP 加入信任清單,以抑制其警報。
稽核事件是指一組基於 RQL 的政策,用來監控環境中的稽核事件,以找出可能違反政策的情況。您可以建立稽核政策來標示敏感事件,例如可能會使您的雲環境面臨潛在風險的 root 活動或組態變更。
Network anomaly policies(網路異常政策)是利用機器學習持續監控網路日誌以偵測惡意網路流量的異常政策,以及將 IP 與 AutoFocus 進行比對。網路異常政策可檢測殭屍網路、勒索軟體和蠕蟲攻擊等各種威脅。
授權涉及根據預先定義的政策,允許經過驗證的使用者存取資源或系統功能。在 Kubernetes 中,這個概念稱為角色式存取控制 (RBAC)。RBAC 授予使用者群組(如開發人員)與特定資源或功能互動的權限,以符合其工作要求。實施健全且一致的使用者授權政策,可確保使用者只擁有最低必要權限,降低未經授權存取和權限升級的風險。

安全身份儲存是指專為安全儲存敏感資訊(例如密碼、加密金鑰、API 令牌和其他機密)而設計的解決方案和機制,這些資訊會以高度保護和加密的方式儲存。秘密保險庫和硬體安全模組 (HSM) 是安全身分儲存的兩個常見範例。

Secret Vaults 是以軟體為基礎的安全儲存系統,專為管理、儲存及保護敏感資料而設計。它們採用加密和存取控制機制,以確保只有授權使用者或應用程式才能存取儲存的機密。秘密保險庫的範例包括 HashiCorp Vault、Azure Key Vault 和 AWS Secrets Manager。 

Secret Vault 功能

  • 靜止與傳輸中的加密
  • 細緻的存取控制
  • 稽核記錄與監控
  • 鑰匙輪換與版本管理
  • 與現有的身分與存取管理 (IAM) 系統整合

硬體安全模組 (HSM) 是專用、防竄改和高度安全的實體裝置,可保護和管理密碼金鑰、執行加密和解密作業,並提供執行敏感密碼功能的安全環境。HSM 的設計可防止實體和邏輯攻擊,確保儲存金鑰的完整性和機密性。HSM 的範例包括 SafeNet Luna HSM、nCipher nShield 和 AWS CloudHSM。

HSM 的主要功能

  • FIPS 140-2 Level 3 或更高的認證(美國政府的加密模組標準)
  • 安全的金鑰產生、儲存與管理
  • 基於硬體的隨機數生成
  • 竄改偵測與保護
  • 支援多種加密演算法

秘密保管庫和 HSM 都旨在提供安全的身分儲存解決方案,降低未經授權存取、資料外洩和其他安全事故的風險。在兩者之間作出選擇取決於安全要求、預算和整合需求等因素。

UEBA 是指用於識別異常使用者活動的一套異常政策,例如使用者從未知地點登入、從遙遠的地理位置連續嘗試登入,以及通常會建立大量的運算資源。