將 Docker Scout 與 Artifactory 整合

將 Docker Scout 與 JFrog Artifactory 整合可讓您自動對 Artifactory 儲存庫中的映像檔執行映像檔分析。

本機映像檔分析

您可以使用 Docker Desktop 或 Docker CLI 在本機分析 Artifactory 映像檔的弱點。您首先需要使用 docker login 命令向 JFrog Artifactory 進行驗證。例如:

docker login {URL}

提示

對於雲端託管的 Artifactory,您可以在 Artifactory UI 中選取它,然後按下**設定我**按鈕來找到 Artifactory 儲存庫的憑證。

遠端映像檔分析

要自動分析在遠端環境中執行的映像檔,您需要部署 Docker Scout Artifactory 代理程式。代理程式是一個獨立服務,可分析映像檔並將結果上傳到 Docker Scout。您可以使用 Docker Scout 儀表板代理程式的運作方式

Docker Scout Artifactory 代理程式可以作為 Docker Hub 上的映像檔部署代理程式

本節說明部署 Artifactory 代理程式的步驟。

先決條件

在部署代理程式之前,請確保您符合先決條件

  • 您託管代理程式的伺服器可以透過網路存取下列資源:
    • 您的 JFrog Artifactory 執行個體
    • hub.docker.com,埠 443,用於向 Docker 進行驗證
    • api.dso.docker.com,埠 443,用於將資料傳輸至 Docker Scout
  • 登錄檔是 Docker V2 登錄檔。不支援 V1 登錄檔。

代理程式支援所有版本的 JFrog Artifactory 和 JFrog Container Registry。

建立設定檔

您可以使用 JSON 檔案設定代理程式。代理程式預期設定檔在啟動時位於 /opt/artifactory-agent/data/config.json

設定檔包含下列屬性:

屬性說明
agent_id代理程式的唯一識別碼。
docker.organization_nameDocker 組織的名稱。
docker.usernameDocker 組織中管理員使用者的使用者名稱。
docker.pat具有讀取和寫入權限的管理員使用者的個人存取權杖。
artifactory.base_urlArtifactory 執行個體的基底 URL。
artifactory.username代理程式將使用的具有讀取權限的 Artifactory 使用者的使用者名稱。
artifactory.passwordArtifactory 使用者的密碼或 API 權杖。
artifactory.image_filters選用:要分析的儲存庫和映像檔清單。

如果您未在 artifactory.image_filters 中指定任何儲存庫,代理程式將對 Artifactory 執行個體中的所有映像檔執行映像檔分析。

以下程式碼片段顯示範例設定

{
  "agent_id": "acme-prod-agent",
  "docker": {
    "organization_name": "acme",
    "username": "mobythewhale",
    "pat": "dckr_pat__dsaCAs_xL3kNyupAa7dwO1alwg"
  },
  "artifactory": [
    {
      "base_url": "https://acme.jfrog.io",
      "username": "acmeagent",
      "password": "hayKMvFKkFp42RAwKz2K",
      "image_filters": [
        {
          "repository": "dev-local",
          "images": ["internal/repo1", "internal/repo2"]
        },
        {
          "repository": "prod-local",
          "images": ["staging/repo1", "prod/repo1"]
        }
      ]
    }
  ]
}

建立設定檔並將其儲存在您計畫執行代理程式的伺服器上的某個位置。例如,/var/opt/artifactory-agent/config.json

執行代理程式

以下範例顯示如何使用 docker run 執行 Docker Scout Artifactory 代理程式。此命令會為容器內先前在 /opt/artifactory-agent/data 建立的包含 JSON 設定檔的目錄建立繫結掛載。請確保您使用的掛載路徑是包含 config.json 檔案的目錄。

重要

使用 Artifactory 代理程式映像檔的 v1 標籤。請勿使用 latest 標籤,因為這樣做可能會導致重大變更。

$ docker run \
  --mount type=bind,src=/var/opt/artifactory-agent,target=/opt/artifactory-agent/data \
  docker/artifactory-agent:v1

分析先前存在的資料

預設情況下,代理程式會在建立和更新映像檔時偵測和分析映像檔。如果您想使用代理程式分析先前存在的映像檔,可以使用回填模式。使用 --backfill-from=TIME 命令列選項(其中 TIME 是 ISO 8601 格式的時間)以回填模式執行代理程式。如果您使用此選項,代理程式會分析在該時間與代理程式啟動時的目前時間之間推送的所有映像檔,然後結束。

例如:

$ docker run \
  --mount type=bind,src=/var/opt/artifactory-agent,target=/opt/artifactory-agent/data \
  docker/artifactory-agent:v1 --backfill-from=2022-04-10T10:00:00Z

多次執行回填時,代理程式不會分析已分析的映像檔。若要強制重新分析,請提供 --force 命令列旗標。

檢視分析結果

您可以在 Docker Scout 儀表板中檢視映像檔分析結果。

  1. 前往 Docker Scout 儀表板中的映像檔頁面

    此頁面會顯示您組織中啟用 Docker Scout 的儲存庫。

  2. 從清單中選取映像檔。

  3. 選取標籤。

選取標籤後,您將會進入該標籤的弱點報告。在此,您可以選擇要檢視映像檔中的所有弱點,還是特定層中引入的弱點。您也可以根據嚴重性以及是否有可用的修復版本來篩選弱點。