基礎映象強化

什麼是基礎映象強化?

基礎映象強化是透過最大限度地減少包含的內容,並使用安全優先的預設配置,來保護容器映象基礎層的過程。強化的基礎映象移除了不必要的元件,如 shell、編譯器和包管理器,從而限制了可用的攻擊面,使攻擊者更難在容器內獲得控制或提升許可權。

強化還包括應用最佳實踐,如以非 root 使用者執行、減少可寫表面,以及透過不變性確保一致性。雖然Docker 官方映象Docker 驗證釋出者映象遵循安全最佳實踐,但它們可能不像 Docker 強化映象那樣經過高度強化,因為它們旨在支援更廣泛的用例。

為什麼它很重要?

大多數容器從其使用的基礎映象繼承其安全態勢。如果基礎映象包含不必要的工具或以高許可權執行,則在其上構建的每個容器都會暴露於這些風險中。

強化基礎映象

  • 透過移除可能被利用的工具和庫來減少攻擊面
  • 透過放棄 root 訪問許可權和限制容器可以執行的操作來強制執行最小許可權
  • 透過避免執行時更改和漂移來提高可靠性和一致性
  • 與安全軟體供應鏈實踐保持一致,並有助於滿足合規性標準

使用強化基礎映象是保護您在容器中構建和執行的軟體的關鍵第一步。

移除了什麼以及為什麼

強化映象通常不包括在安全生產環境中具有風險或不必要的常見元件

移除的元件原因
Shell(例如,shbash防止使用者或攻擊者在容器內執行任意命令
包管理器(例如,aptapk停用構建後安裝軟體的能力,減少漂移和暴露
編譯器和直譯器避免引入可能用於執行或注入惡意程式碼的工具
除錯工具(例如,stracecurlwget降低利用或資訊洩露的風險
未使用的庫或區域設定縮小映象大小並最大限度地減少攻擊向量

Docker 強化映象如何應用基礎映象強化

Docker 強化映象 (DHI) 透過設計應用了基礎映象強化原則。每個映象都旨在僅包含其特定用途所必需的內容,無論是構建應用程式(使用 -dev-sdk 標籤)還是在生產環境中執行它們。

Docker 強化映象特性

Docker 強化映象旨在

  • 最小化:僅包含基本庫和二進位制檔案
  • 不可變:映象在構建時固定——無執行時安裝
  • 預設非 root:除非另行配置,否則容器以非特權使用者身份執行
  • 用途範圍:提供用於開發 (-dev)、基於 SDK 的構建 (-sdk) 和生產執行時的不同標籤

這些特性有助於在開發、測試和生產環境中強制執行一致、安全的行為。

Docker 強化映象相容性考量

由於 Docker 強化映象剝離了許多常用工具,它們可能無法直接用於所有用例。您可能需要

  • 使用多階段構建,在 -dev 映象中編譯程式碼或安裝依賴項,然後將輸出複製到強化執行時映象中
  • 用等效的入口點二進位制檔案替換 shell 指令碼,或在需要時顯式包含 shell
  • 使用Docker Debug臨時檢查或排除容器故障,而無需更改基礎映象

這些權衡是故意的,有助於支援構建安全、可重現和生產就緒容器的最佳實踐。