范圍廣泛的企業(yè)工作負載和云原生應用程序使用 Docker 容器運行。因此,Docker 容器安全已成為云工作負載安全最重要的方面之一,保護 Docker 容器對于想要保持強大安全態(tài)勢的企業(yè)來說是必須的。在這里,我們將仔細研究這個流行的容器平臺、常見的 Docker 容器安全問題、最佳實踐以及專為提高現(xiàn)代企業(yè)的容器安全性而構(gòu)建的工具。

什么是碼頭工人?
Docker 是一個容器平臺,它使開發(fā)人員和系統(tǒng)管理員能夠?qū)贸绦蚣捌渌幸蕾図棿虬揭粋€標準化的代碼單元中。Docker 容器允許企業(yè)在各種環(huán)境中將應用程序作為獨立進程運行,從超大規(guī)模云平臺到本地共享機器。由于該平臺的敏捷性、易用性和可擴展性,Docker 容器已成為現(xiàn)代云原生基礎(chǔ)設(shè)施的主要組成部分。
Docker 的工作原理
Docker 的工作原理是為企業(yè)提供一個標準平臺來運行代碼。它將給定應用程序所需的所有必需的二進制文件、庫和依賴項打包在一個不可變的容器映像中。
Docker 容器鏡像可以通過稱為 Dockerfiles 的文本文件創(chuàng)建。創(chuàng)建映像后,它們可以根據(jù)需要多次實例化,以在容器引擎(如 Docker Engine 或 Podman)之上運行工作負載作為 Docker 容器。因為它們輕量級、快速、易于實例化和高度可擴展,與在虛擬機或裸機服務器上運行的成熟操作系統(tǒng)相比,容器更適合許多 CI\CD 工作流和云原生微服務架構(gòu)。
Docker 容器安全
Docker 的流行也使其成為攻擊者的高價值目標。正如將帶有 Monero 加密貨幣礦工的惡意容器鏡像發(fā)布到 Docker Hub 等公共容器注冊表等威脅以及Docker cp 漏洞 (CVE-2018-15664)等更細微的安全問題所證明的那樣,企業(yè)必須考慮整個常見 Docker 生態(tài)系統(tǒng)中的威脅以確保他們的容器安全。讓我們來看看運行 Docker 容器的企業(yè)面臨的一些最嚴重的容器安全威脅,以及可以幫助 DevSecOps 團隊緩解這些威脅的最佳實踐。
Docker 安全問題
根據(jù) Docker 的說法,企業(yè)應該考慮四個主要方面的 Docker 安全審查。他們是:
- 內(nèi)核安全
- Docker 守護進程攻擊面
- 配置挑戰(zhàn)
- 內(nèi)核強化功能及其對 Docker 容器的影響
除了這些 Docker 安全考慮之外,企業(yè)還必須考慮其容器映像的來源、給定容器使用的庫和二進制文件、已知漏洞的修補程序,以及容器配置和通信的復雜性。
考慮到所有這些,企業(yè)在評估其安全狀況時需要考慮的一些最重要的 Docker 安全問題是:
- 不安全的容器鏡像:無論它們是配置錯誤還是完全惡意的,從存儲庫中提取和部署不安全的鏡像都可以立即降低企業(yè)安全狀況。一個典型的例子:對 Docker Hub 上 400 萬個公開可用容器的掃描發(fā)現(xiàn)6,000 個是惡意的,超過一半存在嚴重漏洞。
- 攻擊面:容器中開放的網(wǎng)絡(luò)端口、文件、庫和依賴項越多,攻擊面就越大。容器中未使用或不必要的組件不僅會增加膨脹,還會增加攻擊者的潛在入口點數(shù)量。
- 使用特權(quán)標志: privileged標志允許 Docker 容器以完全特權(quán)運行并繞過設(shè)備 cgroup 控制器中的限制。此標志的使用應僅限于一組非常狹窄的用例。
- 主機環(huán)境的安全性:容器引擎在其上運行的底層內(nèi)核和主機操作系統(tǒng)中的漏洞可能會使企業(yè)工作負載面臨風險。如果企業(yè)控制了Docker宿主機環(huán)境,宿主機環(huán)境的加固和打補丁是必須的。
- 容器編排安全:Kubernetes (K8s) 等編排平臺使企業(yè)能夠有效地管理和部署容器。因此,K8s 安全是 Docker 容器安全的一個重要方面。
- 容器可見性:可見性是安全的一個基本方面。然而,傳統(tǒng)的監(jiān)控和安全掃描工具并不總是能夠提供對容器工作負載的精細可見性。
Docker 安全最佳實踐
為了限制他們暴露于常見的 Docker 容器安全問題,企業(yè)可以遵循幾種 Docker 安全最佳實踐。除了有效的補丁管理和轉(zhuǎn)移安全性等基礎(chǔ)知識外,以下是一些最重要的內(nèi)容:
- 遵循最小特權(quán)原則:安全策略和配置應確保容器和用戶只能執(zhí)行他們完成工作所需的最少功能集。從戰(zhàn)術(shù)角度來看,這意味著企業(yè)應該采取以下步驟:實施細粒度的 IAM 策略、以無根模式運行容器、使用最少的基礎(chǔ)容器鏡像、鎖定網(wǎng)絡(luò)層并且不暴露 Docker 守護程序套接字、限制或限制使用–privileged標志,并盡可能使用只讀文件系統(tǒng)。
- 只運行受信任的容器:限制從 Docker 容器注冊表中提取的容器的使用僅限受信任和簽名(例如使用簽名標簽和 Docker 內(nèi)容信任)圖像可以大大減少企業(yè)暴露于易受攻擊的容器圖像。
- 應用資源配額:資源配額限制 Docker 容器可以消耗的資源量(例如 CPU 和 RAM)。配置資源配額可以限制攻擊者在容器遭到破壞時消耗主機資源或影響其他服務的能力。
- 盡可能隔離容器:因為容器在 Linux 環(huán)境中作為進程運行,所以有多種可用的解決方案可以讓企業(yè)防止內(nèi)核逃逸并提高容器之間的邏輯隔離。對于維護自己主機環(huán)境的企業(yè),使用 AppArmor、cgroups、Linux 命名空間或 SELinux 等解決方案可以幫助保護 Docker 環(huán)境。
- 主動監(jiān)控和掃描:跨CI\CD 管道的端到端掃描和主動監(jiān)控使企業(yè)能夠快速檢測威脅、識別容器映像中的漏洞并快速修復問題。提供企業(yè)檢測 Docker 容器安全問題所需的精細可見性的工具是此最佳實踐的必要條件。