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