登錄檔訪問管理
登錄檔訪問管理(RAM)允許管理員控制開發人員可以透過 Docker Desktop 訪問哪些容器登錄檔。這種 DNS 級別的過濾可確保開發人員只從批准的登錄檔拉取和推送映象,從而提高供應鏈安全性。
RAM 適用於所有登錄檔型別,包括雲服務、本地登錄檔和登錄檔映象。您可以允許任何主機名或域,但必須在白名單中包含重定向域(如某些登錄檔的 s3.amazonaws.com
)。
支援的登錄檔
登錄檔訪問管理適用於任何容器登錄檔,包括:
- Docker Hub(預設允許)
- 雲登錄檔:Amazon ECR、Google Container Registry、Azure Container Registry
- 基於 Git 的登錄檔:GitHub Container Registry、GitLab Container Registry
- 本地解決方案:Nexus、Artifactory、Harbor
- 登錄檔映象:包括 Docker Hub 映象
先決條件
在配置登錄檔訪問管理之前,您必須:
- 強制登入以確保使用者使用您的組織憑據進行身份驗證
- 使用個人訪問令牌 (PAT) 進行身份驗證(不支援組織訪問令牌)
- 擁有 Docker Business 訂閱
重要登錄檔訪問管理僅在使用者使用組織憑據登入 Docker Desktop 時生效。
配置登錄檔許可權
配置登錄檔許可權
- 登入 Docker Home 並選擇您的組織。
- 選擇 Admin Console,然後選擇 Registry access。
- 使用開關啟用登錄檔訪問。預設情況下,Docker Hub 在登錄檔列表中啟用。
- 要新增其他登錄檔,請選擇 Add registry 並提供登錄檔地址和登錄檔暱稱。
- 選擇 Create。您最多可以新增 100 個登錄檔。
- 驗證您的登錄檔是否顯示在登錄檔列表中,然後選擇 Save changes。
更改最多可能需要 24 小時才能生效。要更快地應用更改,請讓開發人員退出並重新登入 Docker Desktop。
重要從 Docker Desktop 4.36 開始,如果開發人員屬於具有不同 RAM 策略的多個組織,則僅強制執行配置檔案中第一個組織的策略。
提示RAM 限制也適用於透過 URL 獲取內容的 Dockerfile
ADD
指令。在使用帶有 URL 的ADD
時,請在白名單中包含受信任的登錄檔域。
RAM 專為容器登錄檔設計,而非通用 URL(如包映象或儲存服務)。新增過多域可能會導致錯誤或達到系統限制。
驗證限制是否有效
使用者使用其組織憑據登入 Docker Desktop 後,登錄檔訪問管理立即生效。
當用戶嘗試從被阻止的登錄檔拉取時:
$ docker pull blocked-registry.com/image:tag
Error response from daemon: registry access to blocked-registry.com is not allowed
允許的登錄檔訪問正常工作
$ docker pull allowed-registry.com/image:tag
# Pull succeeds
登錄檔限制適用於所有 Docker 操作,包括拉取、推送和引用外部登錄檔的構建。
登錄檔限制和平臺約束
登錄檔訪問管理具有以下限制和平臺特定行為:
- 最大白名單大小:每個組織 100 個登錄檔或域
- 基於 DNS 的過濾:限制在主機名級別工作,而不是 IP 地址
- 需要重定向域:必須包含登錄檔重定向到的所有域(CDN 端點、儲存服務)
- Windows 容器:預設情況下,Windows 映象操作不受限制。在 Docker Desktop 設定中開啟使用代理連線 Windows Docker 守護程式以應用限制
- WSL 2 要求:需要 Linux 核心 5.4 或更高版本,限制適用於所有 WSL 2 發行版
構建和部署限制
以下場景不受登錄檔訪問管理限制:
- 使用 Kubernetes 驅動程式的 Docker buildx
- 使用自定義 docker-container 驅動程式的 Docker buildx
- 某些 Docker Debug 和 Kubernetes 映象拉取(即使 Docker Hub 被阻止)
- 如果源登錄檔受限制,以前由登錄檔映象快取的映象仍可能被阻止
安全繞過注意事項
使用者可能會透過以下方式繞過登錄檔訪問管理:
- 本地代理或 DNS 操縱
- 退出 Docker Desktop(除非強制登入)
- Docker Desktop 無法控制的網路級修改
為了最大限度地提高安全有效性:
- 強制登入以防止透過退出繞過
- 實施額外的網路級控制以獲得全面保護
- 將登錄檔訪問管理作為更廣泛安全策略的一部分
登錄檔白名單最佳實踐
包含所有登錄檔域:一些登錄檔會重定向到多個域。對於 AWS ECR,請包含:
your-account.dkr.ecr.us-west-2.amazonaws.com amazonaws.com s3.amazonaws.com
定期維護白名單
- 定期移除未使用的登錄檔
- 根據需要新增新批准的登錄檔
- 更新可能已更改的域名
- 透過 Docker Desktop 分析監控登錄檔使用情況
測試配置更改
- 在更新白名單後驗證登錄檔訪問
- 檢查是否包含所有必要的重定向域
- 確保開發工作流程不受干擾
- 與增強容器隔離結合使用,以獲得全面保護