Docker Scout 快速入門
Docker Scout 分析映象內容並生成一份詳細的軟體包和漏洞報告。它可以為您提供如何修復映象分析發現的問題的建議。
本指南以一個易受攻擊的容器映象為例,向您展示如何使用 Docker Scout 識別和修復漏洞,比較不同時間的映象版本,並與您的團隊分享結果。
步驟 1:設定
這個示例專案包含一個易受攻擊的 Node.js 應用程式,您可以跟隨操作。
克隆其倉庫
$ git clone https://github.com/docker/scout-demo-service.git
進入該目錄
$ cd scout-demo-service
確保您已登入到您的 Docker 帳戶,可以透過執行
docker login
命令或透過 Docker Desktop 登入。構建映象並將其推送到
<ORG_NAME>/scout-demo:v1
,其中<ORG_NAME>
是您推送到的 Docker Hub 名稱空間。$ docker build --push -t <ORG_NAME>/scout-demo:v1 .
步驟 2:啟用 Docker Scout
Docker Scout 預設分析所有本地映象。要分析遠端倉庫中的映象,您需要先啟用它。您可以從 Docker Hub、Docker Scout 儀表板和 CLI 執行此操作。在概述指南中瞭解如何操作。
使用
docker login
命令登入到您的 Docker 帳戶,或使用 Docker Desktop 中的登入按鈕。接下來,使用
docker scout enroll
命令將您的組織註冊到 Docker Scout。$ docker scout enroll <ORG_NAME>
使用
docker scout repo enable
命令為您的映象倉庫啟用 Docker Scout。$ docker scout repo enable --org <ORG_NAME> <ORG_NAME>/scout-demo
步驟 3:分析映象漏洞
構建後,使用 docker scout
CLI 命令檢視 Docker Scout 檢測到的漏洞。
本指南的示例應用程式使用了一個易受攻擊的 Express 版本。以下命令顯示了您剛構建的映象中影響 Express 的所有 CVE
$ docker scout cves --only-package express
Docker Scout 預設分析您最近構建的映象,因此在這種情況下無需指定映象名稱。
在 CLI 參考文件
中瞭解有關 docker scout cves
命令的更多資訊。
步驟 4:修復應用程式漏洞
經過 Docker Scout 分析後,發現了一個高危漏洞 CVE-2022-24999,這是由過時版本的 express 包引起的。
express 包的 4.17.3 版本修復了該漏洞。因此,請將 package.json
檔案更新到新版本
"dependencies": {
- "express": "4.17.1"
+ "express": "4.17.3"
}
使用新標籤重新構建映象並將其推送到您的 Docker Hub 倉庫
$ docker build --push -t <ORG_NAME>/scout-demo:v2 .
再次執行 docker scout
命令,並驗證高危漏洞 CVE-2022-24999 已不存在
$ docker scout cves --only-package express
✓ Provenance obtained from attestation
✓ Image stored for indexing
✓ Indexed 79 packages
✓ No vulnerable package detected
## Overview
│ Analyzed Image
────────────────────┼───────────────────────────────────────────────────
Target │ mobywhale/scout-demo:v2
digest │ ef68417b2866
platform │ linux/arm64
provenance │ https://github.com/docker/scout-demo-service.git
│ 7c3a06793fc8f97961b4a40c73e0f7ed85501857
vulnerabilities │ 0C 0H 0M 0L
size │ 19 MB
packages │ 1
## Packages and Vulnerabilities
No vulnerable packages detected
步驟 5:評估策略合規性
雖然根據特定軟體包檢查漏洞可能很有用,但這並不是改善供應鏈行為的最有效方法。
Docker Scout 還支援策略評估,這是一個用於檢測和修復映象中問題的更高層次的概念。策略是一組可自定義的規則,讓組織能夠跟蹤映象是否符合其供應鏈要求。
因為策略規則特定於每個組織,您必須指定要評估的組織的策略。使用 docker scout config
命令配置您的 Docker 組織。
$ docker scout config organization <ORG_NAME>
✓ Successfully set organization to <ORG_NAME>
現在,您可以執行 quickview
命令來獲取您剛剛構建的映象的合規性狀態概覽。該映象會根據預設策略配置進行評估。您將看到類似以下的輸出
$ docker scout quickview
...
Policy status FAILED (2/6 policies met, 2 missing data)
Status │ Policy │ Results
─────────┼──────────────────────────────────────────────┼──────────────────────────────
✓ │ No copyleft licenses │ 0 packages
! │ Default non-root user │
! │ No fixable critical or high vulnerabilities │ 2C 16H 0M 0L
✓ │ No high-profile vulnerabilities │ 0C 0H 0M 0L
? │ No outdated base images │ No data
? │ Supply chain attestations │ No data
狀態列中的感嘆號表示違反了策略。問號表示沒有足夠的元資料來完成評估。勾號表示合規。
步驟 6:改進合規性
quickview
命令的輸出顯示還有改進的空間。一些策略無法成功評估(No data
),因為映象缺少來源和 SBOM 證明。該映象在一些評估中也未能透過檢查。
策略評估不僅僅是檢查漏洞。以Default non-root user
(預設非 root 使用者)策略為例。該策略透過確保映象預設不以 root
超級使用者身份執行,來幫助提高執行時安全性。
要解決此策略違規問題,請編輯 Dockerfile,新增一個 USER
指令,指定一個非 root 使用者
CMD ["node","/app/app.js"]
EXPOSE 3000
+ USER appuser
此外,為了獲得更完整的策略評估結果,您的映象應附有 SBOM 和來源證明。Docker Scout 使用來源證明來確定映象是如何構建的,以便提供更好的評估結果。
在您可以使用證明構建映象之前,您必須啟用 containerd 映象儲存(或使用 docker-container
驅動程式建立自定義構建器)。傳統的映象儲存不支援清單列表,而來源證明正是透過這種方式附加到映象上的。
在 Docker Desktop 中開啟設定。在通用部分下,確保選中使用 containerd 拉取和儲存映象選項,然後選擇應用。請注意,更改映象儲存會暫時隱藏非活動映象儲存的映象和容器,直到您切換回來。
啟用 containerd 映象儲存後,使用新的 v3
標籤重新構建映象。這次,新增 --provenance=true
和 --sbom=true
標誌。
$ docker build --provenance=true --sbom=true --push -t <ORG_NAME>/scout-demo:v3 .
步驟 7:在儀表板中檢視
在推送帶有證明的更新映象後,是時候透過另一個視角來檢視結果了:Docker Scout 儀表板。
- 開啟 Docker Scout 儀表板。
- 使用您的 Docker 帳戶登入。
- 在左側導航欄中選擇映象。
映象頁面列出了您已啟用 Scout 的倉庫。
在您想檢視的映象行中,除了連結以外的任何位置單擊,以開啟映象詳情側邊欄。
側邊欄顯示了倉庫最後推送的標籤的合規性概覽。
注意如果策略結果尚未出現,請嘗試重新整理頁面。如果您是第一次使用 Docker Scout 儀表板,結果可能需要幾分鐘才能出現。
返回到映象列表,並選擇最新映象列中的映象版本。然後,在頁面右上角,選擇更新基礎映象按鈕以檢查策略。
該策略檢查您使用的基礎映象是否為最新版本。它目前處於不合規狀態,因為示例映象使用了一箇舊版本的 alpine
作為基礎映象。
關閉基礎映象的推薦修復模式視窗。在策略列表中,選擇策略名稱旁邊的檢視修復方案按鈕,以獲取有關違規的詳細資訊以及如何解決它的建議。
在這種情況下,推薦的操作是啟用 Docker Scout 的 GitHub 整合,這有助於自動保持您的基礎映象為最新版本。
提示您無法為本指南中使用的演示應用啟用此整合。歡迎將程式碼推送到您自己的 GitHub 倉庫,並在那裡嘗試該整合!
摘要
本快速入門指南僅初步介紹了 Docker Scout 支援軟體供應鏈管理的幾種方式
- 如何為您的倉庫啟用 Docker Scout
- 分析映象的漏洞
- 策略與合規
- 修復漏洞並提高合規性
下一步是什麼?
還有更多內容等待探索,從第三方整合到策略定製,再到即時監控執行時環境。
檢視以下部分