開發者工具 · Docker run 到 Docker compose 轉換器
--privileged、--cap-add 和 --device:它們在 Compose 檔案中的意義
· 為什麼它很重要
碼頭工人 撰寫 安全
一個標誌可以關閉 Docker 的大部分隔離。這篇文章解釋了 --privileged 實際授予的內容、更窄的替代方案,以及轉換後它們在privileged:、cap_add: 和 devices: 下的外觀。
論壇說添加 --privileged — 容器現在可以工作,並使容器具有吸引力的隔離性基本上消失了
論壇說添加 --privileged — 容器現在可以工作,並使容器具有吸引力的隔離性基本上消失了。證據:--privileged 在沒有安全認可的情況下變成了 true 特權。使用一次性文字再現最小特權。將每個來源事件與特權功能裝置配對;保留主機限制和存取權限以供目的地審核。
此安全事件也表明,一個單獨的安全事件邊界是 --device 被識別,但被警告並被忽略為依賴主機。證據:--device 被識別,但由於主機相關而被警告並省略。這個最小特權約束是一個停止點。檢查沒有製造行為的特權功能裝置,然後記錄主機限制和存取的主機檢查。
--privileged 的作用 — 所有功能、對所有裝置的存取以及寬鬆的 seccomp 和 AppArmor 限制
--privileged 的作用 — 所有功能、對所有裝置的存取以及寬鬆的 seccomp 和 AppArmor 限制。證據:主機限制效應無法從指令文字列舉。將最低特權令牌追蹤到特權功能裝置。將有序值與最後值欄位分開;主機限制和存取不在收集範圍內。
相關的安全機制邊界是單獨的安全語法邊界是不能從先前的特權指令推斷出所需的 Zigbee 存取。證據:無法從先前的特權命令推斷出所需的 Zigbee 存取權。使用這一最小特權事實來預測特權功能裝置中的一個成員或標量。在決定有關主機限制和存取的任何事情之前檢查警告。
功能 — cap_add:以 NET_ADMIN、SYS_TIME 或其他作為窄版本,cap_drop:ALL 為基線
功能 — cap_add:以 NET_ADMIN、SYS_TIME 或其他作為窄版本,cap_drop:ALL 為基準。證據:--cap-add 和 --cap-drop 成為明確有序列表。從其模型判斷最小權限序列化。引用特權功能裝置可以保護類型,但不提供主機限制和存取的操作證明。
第二個安全序列化觀察是單獨的安全輸出邊界是可見的特權金鑰支援審查,而警告保留間隙。證據:可見的特權密鑰支援審查,同時警告保留差距。此最低權限輸出將設定與不可用的上下文分開。保持特權功能裝置可審查,並獨立檢查主機限制和存取。
--裝置被識別但故意不轉換;手動新增特定於主機的裝置列表
裝置 - --device /dev/ttyUSB0 成為裝置:,通常是人們獲得 --privileged 的真正原因。證據:--裝置被識別,但被警告並被省略為依賴於主機; --裝置被識別但故意不轉換;手動添加特定於主機的裝置列表。至少停止特權異常,而不是猜測。任何接近特權功能的裝置的新增都需要與主機限制和存取相關的特定部署的原因。
另一個安全異常約束是,對於該安全性部分,在該候選檔案旁邊保留該安全部分的原始命令和該安全部分的警告。證據:儲存庫沒有提供更廣泛的執行時間或歷史證據。在警告旁邊保留原始的最低權限命令。此比較顯示了裝置包含哪些特權功能以及哪些主機限制和存取決策仍然是手動的。
去特權編輯需要操作員判斷,因為此轉換器無法推斷所需的裝置或功能
工作範例:取消 Zigbee 橋接指令的權限 — 將 --privileged 取代為裝置項目和單一功能。證據:無法從先前的特權命令推斷出所需的 Zigbee 存取權限;去特權編輯需要操作員判斷,因為該轉換器無法推斷所需的裝置或功能。從合成名稱建立最小權限範例。使每個特權功能裝置項目都可追踪,而無需暴露生產主機限制和訪問詳細資訊。
相同的安全性範例範例示範了對於此安全性部分,在此候選檔案旁邊保留此安全性部分的原始命令和此安全性部分的警告。配對的最小特權事實應該在特權功能裝置中可見。記錄該行並避免有關主機限制和存取的假設。
讀取轉換後的 YAML 作為註解 — 特權:true 在差異中脫穎而出,而 shell 行中的標誌卻不會
讀取轉換後的 YAML 作為註解 — 特權:true 在 diff 中脫穎而出,而 shell 行中的標誌則不然。將最小特權結果轉化為一個可觀察到的特權能力裝置差異。 Docker 擁有後來的主機限制和存取裁決。
安全結果實作也顯示了一個單獨的安全效果邊界是 --privileged 在沒有安全認可的情況下變成特權 true。分割最小權限職責:轉換寫入特權功能裝置,儲存庫刪除機密,操作員驗證主機限制和存取。
這不包括什麼 - GPU 存取、自訂 seccomp 設定檔和 Kubernetes 安全上下文
這不包括 GPU 存取、自訂 seccomp 設定檔和 Kubernetes 安全上下文。證據:未產生 GPU 預留和自訂設定檔。將最小權限範圍限制為此處所示的特權功能裝置分支。相鄰的表單和預設值無法回答主機限制和存取問題。
另一個安全範圍限制來自一個單獨的安全限制邊界,即主機限制效果無法從命令文字中枚舉。將此最小特權邊界視為排除項。優先選擇準確的特權功能裝置,而不是對主機限制和存取的猜測。
映射時特權可見,但不支援的裝置存取仍然是警告而不是產生的密鑰
重點:權限應該是明確且最小的-並轉換器將其顯示為您可以質疑的金鑰。證據:最小特權需要超越轉換的人性化設計;映射時權限可見,但不支援的裝置存取仍然是警告而不是產生的金鑰。審核最低權限作為來源選項、模型欄位、特權功能裝置行和警告。在檢查主機限制和存取之前刪除機密。
最後,安全要點來源確認保留此安全部分的原始命令,並在該安全部分旁邊發出警告,該候選檔案表明安全要點結論提高了此安全部分的可審計性,而沒有承諾此安全部分解析的等效 shell 仍然在安全要點保證之外。縮小最小權限範圍:具有特權功能的裝置是候選者;不保證主機限制和存取以及 shell 等效性。