容器安全優秀實踐和常見威脅
本文我們將了解容器安全挑戰并了解關鍵的容器安全優秀實踐,例如保護鏡像、harbor等。
什么是容器?
- 容器是一種操作系統級虛擬化方法,用于在單個受控制的主機上運行多個隔離的 Linux 系統(容器),它允許多個隔離的用戶空間實例和資源管理功能;
- 容器從底層操作系統中抽象出應用程序,以實現更快的開發和更輕松的部署。
有哪些不同類型的容器解決方案?
- LXC (Linux Containers)
- Docker
- Podman
- CoreOS AppC
- Solaris Zones
- FreeBSD Jails
- AIX Workload Partitions
- Kubernetes (從技術上講是一個編排調度平臺,這里只是一個參考)
容器存在多久了?
容器技術已經存在了 10 多年,最近由于云計算的普及而爆發。
虛擬機和容器有何不同?
虛擬機:
- 運行內核的單獨副本
- 通過虛擬機仿真與主機通信
容器:
- 共享同一個內核
- 通過標準系統調用與主機通信
容器安全優勢
容器有哪些安全優勢?
(1) 應用程序隔離:
- 容器允許容器內的進程以非 root 用戶身份運行,從而降低惡意代碼或用戶利用應用程序的風險;
- 容器作為獨立的運行時環境運行,具有獨立的文件系統和與其他容器和主機系統隔離的網絡棧;
- 容器允許在同一主機上運行的應用程序相互隔離,并且只允許在容器之間交換預配置的端口和文件。
(2) 減少攻擊面
- 正確配置的容器將僅包含運行應用程序所需的依賴項(庫和附加軟件),這可以減少漏洞攻擊面;
- 容器與應用程序依賴項集成在一起,通過最大限度地減少驗證程序和補丁之間的兼容性的工作,可以實現更好、更快的漏洞修補過程;
- 容器技術可以與底層主機加固工具相結合,增加深度防御。
容器安全風險
您應該注意哪些容器的安全風險?
(1) 增加了復雜性:
- 容器的復雜性和可擴展性可能導致容器暴露比預期更多的信息。
(2) 未徹底隔離
- 該技術還沒有像虛擬機技術那樣孤立,它與主機系統共享底層內核和操作系統。如果系統內核級別存在漏洞,它可以提供進入主機上運行的容器的途徑;
- 容器中沒有用戶空間隔離,因此在容器中以 root 身份運行的進程也將在主機系統上以 root 身份運行;
- 額外的軟件和庫仍然可以添加到物理或虛擬機主機等容器中,這可能導致漏洞風險增加;
- 惡意代碼可能會突破容器并影響主機系統。
容器安全縱深防御
您應該如何考慮將縱深防御實踐應用于容器?
映射到 STRIDE 的容器威脅
如果您不熟悉威脅建模,最好將其描述為:
影響應用程序安全性的所有信息的結構化表示。本質上,它是從安全的角度看待應用程序及其環境的視圖
STRIDE是一個流行的威脅建模框架,在這里我將分享映射到該框架的容器威脅的非詳盡列表。
STRIDE 評估系統詳細設計。它對就地系統進行建模,主要用于識別系統實體、事件和系統邊界。
這里有一些例子:
總結
我希望你喜歡這種關于容器安全挑戰的觀點,并學到了一些新東西。這篇文章并非旨在詳盡列出威脅和最佳實踐,而是提供一般的觀點和方向。