Docker安全性:保護Docker容器安全的14個優(yōu)秀實踐
應(yīng)用程序的容器化涉及將應(yīng)用程序代碼及其依賴項(所需的庫,框架和配置文件)打包在虛擬容器中。這種方法有助于可移植性,并且可以在各種計算環(huán)境和基礎(chǔ)架構(gòu)中一致地運行,而不會降低效率。
Docker是一種特別流行的容器平臺。組織使用Docker開發(fā)應(yīng)用程序有以下特點:
- 高效優(yōu)化
- 高度可擴展
- 便攜的
- 敏捷
Docker容器通過其輕量級的運行時環(huán)境共享底層操作系統(tǒng),以托管支持DevOps環(huán)境的應(yīng)用程序。作為Cloud-Native框架的關(guān)鍵元素,Docker為您的軟件開發(fā)生命周期(SDLC)帶來了許多好處。但是,這些好處并非沒有風(fēng)險。您可能會面臨復(fù)雜性,特別是在保護Docker框架方面。
默認(rèn)情況下,Docker容器是安全的。但是,您必須知道可能的漏洞,才能采用可防止?jié)撛诎踩L(fēng)險的方法。
因此,在本文中,我們將探討在三個關(guān)鍵領(lǐng)域保護基于Docker架構(gòu)的最佳實踐:
- 基礎(chǔ)設(shè)施
- 鏡像
- 訪問和認(rèn)證
讓我們開始吧。
1.保護Docker基礎(chǔ)架構(gòu)
容器是可以托管應(yīng)用程序的虛擬單元。為此,容器可容納:
- 代碼二進制
- 配置文件
- 相關(guān)依賴
由于容器是云原生設(shè)置的基礎(chǔ),因此在整個容器生命周期中,保護它們免受潛在攻擊媒介的侵害是至關(guān)重要的。保護這種框架的整體方法不僅是保護Docker容器,而且還保護其基礎(chǔ)架構(gòu)。
讓我們分解保護基礎(chǔ)設(shè)施安全的最佳方法,看看它是如何工作的。
定期更新您的Docker版本
首先,確保您的Docker版本是最新的。過時的版本容易受到安全攻擊。新版本發(fā)布通常包含修補程序和錯誤修復(fù)程序,以解決舊版本的漏洞。
主機環(huán)境也是如此:確保支持的應(yīng)用程序是最新的,并且沒有已知的錯誤或安全漏洞。
保持容器清潔
擴展的容器環(huán)境擴大了攻擊面,并且相對于精益設(shè)置而言,更容易發(fā)生安全漏洞。為避免這種情況,請將您的容器配置為僅包含使它們按預(yù)期運行的必要組件:
- 軟體套件
- Library
- 配置文件
此外,應(yīng)定期檢查主機實例中是否有未使用的容器和基本映像,并丟棄那些未使用的容器和基本映像。
配置API和網(wǎng)絡(luò)
Docker Engine使用HTTP API在網(wǎng)絡(luò)上進行通信。配置不當(dāng)?shù)腁PI帶有黑客可以利用的安全漏洞。
為避免這種情況,請通過安全地配置API來保護您的容器,該API限制了容器的公開展示。一種方法是通過啟用基于證書的身份驗證來實施加密通信。
(獲取有關(guān)保護Docker API的更多詳細(xì)信息*。)*
限制系統(tǒng)資源的使用
設(shè)置每個容器可以使用的基礎(chǔ)結(jié)構(gòu)資源比例的限制。這些基礎(chǔ)結(jié)構(gòu)資源包括:
- 中央處理器
- 內(nèi)存
- 網(wǎng)絡(luò)帶寬
Docker使用控制組來限制不同進程之間的資源分配和分配。這種方法可以防止受損的容器消耗過多的資源,這些資源在發(fā)生安全漏洞時可能會中斷服務(wù)的交付。
保持主機隔離
在不同的主機上運行具有不同安全性要求的容器。
通過不同的命名空間維持容器的隔離性可以保護關(guān)鍵數(shù)據(jù)免受全面攻擊。這種方法還可以防止嘈雜的鄰居在基于池的隔離上消耗過多的資源,從而影響其他容器的服務(wù)。
限制容器功能
默認(rèn)情況下,Docker容器可以維護和獲取運行其核心服務(wù)可能需要或不需要的其他特權(quán)。
最佳做法是,應(yīng)將容器的權(quán)限限制為僅運行其應(yīng)用程序所需的權(quán)限。為此,請使用以下命令刪除Docker容器的所有特權(quán):
復(fù)制
- $ docker run --cap-drop ALL
然后,使用**–cap-add**標(biāo)志向容器添加特定特權(quán)。這種方法限制了Docker容器獲取不必要的特權(quán),這些特權(quán)在安全漏洞期間會被利用。
過濾系統(tǒng)調(diào)用
應(yīng)用系統(tǒng)調(diào)用過濾器,使您可以選擇容器可以對Linux內(nèi)核進行哪些調(diào)用。
這種方法啟用了安全的計算模式,從而減少了可能的暴露點,從而避免了安全事故的發(fā)生,尤其是避免了對內(nèi)核漏洞的利用。
2.保護Docker鏡像
現(xiàn)在,讓我們轉(zhuǎn)向基礎(chǔ)架構(gòu)之外的安全最佳實踐。Docker映像是用于創(chuàng)建容器和宿主應(yīng)用程序的可執(zhí)行代碼模板。Docker映像由運行時庫和根文件系統(tǒng)組成,從而使映像成為Docker容器最關(guān)鍵的基礎(chǔ)之一。在保護Docker映像時,以下是一些最佳實踐。
使用信任的鏡像
僅從最新的且配置正確的可信來源獲取Docker基本映像。
此外,通過啟用Docker內(nèi)容信任功能以過濾掉不安全的可疑來源,確保Docker映像已正確簽名。
定期掃描鏡像
維護可靠的Docker映像安全配置文件并定期掃描它們是否存在漏洞至關(guān)重要。在下載圖像之前,除了進行初始掃描外,還請執(zhí)行此操作,以確保可以安全使用。
使用常規(guī)圖像掃描,您還可以通過以下方法最大程度地減少曝光:
- 審核關(guān)鍵文件和目錄
- 使用最新的安全補丁更新它們
支持最小的基本鏡像
避免在較小的通用Docker鏡像上使用較大的通用Docker鏡像,以最大程度地減少安全漏洞。這提供了兩個有價值的結(jié)果:
- 減少攻擊面
- 擺脫更容易受到黑客攻擊的默認(rèn)配置
3.訪問和身份驗證管理
Docker Security的最后一個類別涉及訪問和身份驗證。
通過訪問控制保護Docker Daemon的安全通常被稱為應(yīng)用第一層安全性。如果沒有保護Docker Daemon的安全,那么一切都會很脆弱:
- 基礎(chǔ)操作
- 應(yīng)用領(lǐng)域
- 業(yè)務(wù)職能
實施特權(quán)最小的用戶
默認(rèn)情況下,Docker容器中的進程具有root特權(quán),這些特權(quán)授予它們對容器和主機的管理訪問權(quán)限。這向容器和底層主機開放了黑客可能利用的安全漏洞。
為避免這些漏洞,請設(shè)置最低特權(quán)用戶,該用戶僅授予運行容器所需的特權(quán)。或者,限制運行時配置以禁止使用特權(quán)用戶。
使用機密管理工具
切勿將機密存儲在Dockerfile中,這可能會使訪問Dockerfile的用戶放錯位置,濫用或損害整個框架的安全性。
標(biāo)準(zhǔn)的最佳做法是安全加密第三方工具(例如Hashicorp Vault)中的密鑰機密。您可以將這種方法用于訪問憑證以外的其他容器機密。
限制直接訪問容器文件
臨時容器需要一致的升級和錯誤修復(fù)。結(jié)果,這種容器文件在用戶每次訪問它們時都會被公開。
作為最佳實踐,請在容器外部維護容器日志。這大大減少了容器文件的一致直接使用。它還使您的團隊無需訪問容器目錄中的日志即可解決問題。
啟用加密通訊
將Docker Daemon的訪問權(quán)限限制為僅少數(shù)關(guān)鍵用戶。此外,通過對一般用戶強制執(zhí)行僅SSH訪問,來限制對容器文件的直接訪問。
使用TLS證書來加密主機級通信。禁用未使用的端口并使默認(rèn)端口僅公開供內(nèi)部使用也很重要。
總結(jié)
保護Docker可以保護您的IT環(huán)境,IT環(huán)境中的安全性是您永遠不應(yīng)忽略的關(guān)鍵任務(wù)。
為了確保云原生框架的安全,第一步始終是考慮框架關(guān)鍵元素的漏洞。因此,組織應(yīng)該維護一個強大的安全配置文件,該配置文件圍繞容器及其底層基礎(chǔ)結(jié)構(gòu)進行。
盡管實施端到端安全性的方法可能有所不同,但目標(biāo)始終是考慮脆弱點并采用減輕風(fēng)險的最佳實踐。
原文鏈接:https://www.bmc.com/blogs/docker-security-best-practices/