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