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