不應(yīng)該在沒有 sudo 的情況下運行 Docker 的三個原因
Docker 是開發(fā)人員的安全容器化平臺。既然它如此安全,為什么不能在沒有超級用戶權(quán)限的情況下運行它?
Docker 是最常用的容器化平臺之一,深受軟件工程師的喜愛。它帶有一個強大的 CLI 工具,用于管理 Docker 容器和其他相關(guān)任務(wù)。
默認(rèn)情況下,您需要 root 權(quán)限才能在 Linux 上運行任何與 Docker 相關(guān)的命令。當(dāng)然,為了方便起見,您可以更改此設(shè)置并在沒有 root 權(quán)限的情況下運行 Docker 命令,但您應(yīng)該注意安全隱患。
什么是 Docker 攻擊面?
攻擊面是惡意用戶可以用來進(jìn)入系統(tǒng)并造成嚴(yán)重破壞的攻擊點數(shù)量,更像是窗口數(shù)量。根據(jù)經(jīng)驗,IT 系統(tǒng)應(yīng)具有最小的攻擊面,以降低安全風(fēng)險。
一般來說,Docker 的攻擊面非常小。容器在安全的隔離環(huán)境中運行,除非另有規(guī)定,否則不會影響主機(jī)操作系統(tǒng)。此外,Docker 容器只運行最少的服務(wù),這使得它更安全。
您可以將 Linux 系統(tǒng)配置為在沒有 sudo 權(quán)限的情況下控制 Docker。這在開發(fā)環(huán)境中可能很方便,但在生產(chǎn)系統(tǒng)中可能是一個嚴(yán)重的安全漏洞。這就是為什么你永遠(yuǎn)不應(yīng)該在沒有 sudo 的情況下運行 Docker。
1. 能夠控制 Docker 容器
如果沒有 sudo 權(quán)限,任何有權(quán)訪問您的系統(tǒng)或服務(wù)器的人都可以控制 Docker 的各個方面。他們有權(quán)訪問您的 Docker 日志文件,并且可以隨意或意外地停止和刪除容器。您還可能丟失對業(yè)務(wù)連續(xù)性至關(guān)重要的關(guān)鍵數(shù)據(jù)。
如果在生產(chǎn)環(huán)境中使用 Docker 容器,停機(jī)會導(dǎo)致業(yè)務(wù)和信任損失。
2. 獲得對主機(jī)操作系統(tǒng)目錄的控制
Docker 卷是一項功能強大的服務(wù),允許您通過將容器數(shù)據(jù)寫入主機(jī)操作系統(tǒng)上的指定文件夾來共享和保留容器數(shù)據(jù)。
在沒有 sudo 的情況下運行 Docker 帶來的最大威脅之一是系統(tǒng)上的任何人都可以控制主機(jī)操作系統(tǒng)的目錄,包括根目錄。
您所要做的就是運行 Linux Docker 映像,例如 Ubuntu 映像,并使用以下命令將其掛載到根文件夾上:
輸出如下:
由于 Linux Docker 容器以 root 用戶身份運行,因此本質(zhì)上意味著您可以訪問整個根文件夾。
上述命令將下載并運行最新的 Ubuntu 映像并將其掛載到根目錄上。
在 Docker 容器終端上,使用 cd 命令轉(zhuǎn)到 /hostproot 目錄:
使用 ls 命令列出此目錄的內(nèi)容將顯示容器中現(xiàn)在可用的主機(jī)操作系統(tǒng)的所有文件?,F(xiàn)在,您可以操作文件,查看機(jī)密文件,隱藏和取消隱藏文件,更改權(quán)限等。
3. 安裝惡意軟件
精心制作的 Docker 映像可以在后臺運行并操作系統(tǒng)或收集敏感數(shù)據(jù)。更糟糕的是,惡意用戶可能會通過 Docker 容器在您的網(wǎng)絡(luò)上傳播惡意代碼。
Docker 容器有幾個實際用例,每個應(yīng)用程序都會帶來一組不同的安全威脅。
在 Linux 上保護(hù)您的 Docker 容器
Docker是一個強大而安全的平臺。在沒有 sudo 的情況下運行 Docker 會增加您的攻擊面并使您的系統(tǒng)容易受到攻擊。在生產(chǎn)環(huán)境中,強烈建議您將 sudo 與 Docker 一起使用。
由于系統(tǒng)上有如此多的用戶,因此很難為每個用戶分配權(quán)限。在這種情況下,遵循最佳訪問控制實踐可以幫助您維護(hù)系統(tǒng)的安全性。