共用方式為


快速入門:使用 Dependabot 和 Copacetic 隨時掌握容器映像相依性更新和安全性

在本快速入門指南中,我們將逐步引導您完成設定及使用 Dependabot 和 Copacetic 的程式,以簡化、維護及掌握軟體相依性更新,以及增強容器安全供應鏈中的容器映射安全性。

這些工具會將程式自動化,確保您的容器映像一律是最新且安全的。

在此快速入門中,您可了解如何:

使用 Dependabot 更新容器映像相依性和安全性。 使用 Copa 持續監視、掃描和修補容器映像。

必要條件

使用 Dependabot 更新容器映像相依性和安全性

Dependabot 是一種工具,可將軟體相依性保持在最新狀態的程序自動化。 其運作方式是掃描您的存放庫是否有過期的相依性,並建立提取要求以將其更新為最新版本。 它會每天檢查相依性的更新,並建立提取要求來更新它們。 您可以設定 Dependabot 來建立所有類型的相依性提取要求,包括 Docker 映像。 建議您使用 dependabot 來自動顛簸 Dockerfiles、Kubernetes yaml 檔案和 Helm 圖表值 yaml 檔案中的相依性,以取得最新的安全性修補程式並降低安全性風險。

搭配 GitHub 使用 Dependabot

  • 請依照這裡的指示設定 Dependabot 與 GitHub

搭配 Azure DevOps 使用 Dependabot

  • 依照指示設定 Dependabot 與 Azure DevOps:
  1. 使用下列許可權建立名稱YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME)的服務帳戶,以授與許可權:

    -強制推送 -參與提取要求 -建立分支

建置服務許可權

  1. 藉由新增類似此範例的組態檔來設定 dependabot Dependabot

      version: 2
      updates:
        - package-ecosystem: "docker"
          directory: "/"
          assignees:
            - "dependabot"
    

  2. 新增azure-pipeline.yaml具有下列內容的檔案,以建立 Azure DevOps Pipeline

     schedules:
       - cron: '0 14 * * *'
         displayName: 'Every day at 7am PST'
         branches:
           include: [main]
         always: true
    
     trigger: none
    
     jobs:
       - job:
         steps:
         - script: |
             git clone https://github.com/dependabot/dependabot-core.git
             cd dependabot-core
    
             DOCKER_BUILDKIT=1 docker build \
               --build-arg "USER_UID=$(id -u)" \
               --build-arg "USER_GID=$(id -g)" \
               -t "dependabot/dependabot-core" .
             cd ..
           displayName: build dependabot-core Docker image
    
         - script: |
             git clone https://github.com/dependabot/dependabot-script.git
             cd dependabot-script
    
             docker run -v "$(pwd):/home/dependabot/dependabot-script" -w /home/dependabot/dependabot-script dependabot/dependabot-core bundle install -j 3 --path vendor
           displayName: install dependencies
    
         - script: |
             #!/bin/bash
             SYSTEM_COLLECTIONURI_TRIM=`echo "${SYSTEM_COLLECTIONURI:22}"`
             PROJECT_PATH="$SYSTEM_COLLECTIONURI_TRIM$SYSTEM_TEAMPROJECT/_git/$BUILD_REPOSITORY_NAME"
             echo "path: $PROJECT_PATH"
    
             docker run  -v "$(pwd)/dependabot-script:/home/dependabot/dependabot-script" \
                         -w '/home/dependabot/dependabot-script' \
                         -e AZURE_ACCESS_TOKEN=$(System.AccessToken) \
                         -e PACKAGE_MANAGER=docker \
                         -e PROJECT_PATH=$PROJECT_PATH \
                         -e DIRECTORY_PATH=/ \
                         -e OPTIONS="$OPTIONS" \
                         dependabot/dependabot-core bundle exec ruby ./generic-update-script.rb
           displayName: "run dependabot"
           env:
             OPTIONS: |
               { "kubernetes_updates": true }
    

  3. 執行管線 建立並驗證上述 azure-pipelines.yaml 檔案中的新 ADO 管線。

目前 Dependabot 支援在各種案例中更新容器映像相依性,包括 Dockerfile、Kubernetes YAML 和 Helm values.yaml。 在組態檔中指定映射時,您可以遵循下列語法:

-Dockerfile -Kubernetes YAML -Helm values.yaml

注意

語法可讓 Dependabot 識別及更新組態檔內的容器映像相依性,確保您能隨時掌握最新版本和安全性修補程式。


# Dockerfile
foo:
  image:
    repository: sql/sql
    tag: 1.2.3
    registry: docker.io

# Helm values.yaml
foo:
  image:
    repository: sql/sql
    tag: 1.2.3
    registry: docker.io

或者,針對 Helm values.yaml,您可以使用 version 欄位來指定映像版本:

foo:
  image:
    repository: sql/sql
    version: 1.2.3

使用 Copacetic 持續監視、掃描和修補容器映像

Copacetic (copa) 是 Microsoft 支援的NCF 開放原始碼專案,在容器映射中直接修補 Linux OS 套件弱點,因為有熱門掃描儀工具的弱點掃描結果。 Copacetic 允許快速修補容器,而不需要上游進行完整重建。 這有助於容器映像快速重新部署至生產環境。 Copacetic 僅適用於Linux OS弱點。 針對應用層級弱點,必須先完成修補程式,才能建置映像。

使用 Copacetic

  1. 請遵循快速入門指南,開始使用 Copa。

  2. 範例 ADO 管線

    -您可以在這裡找到使用 Copa 的範例 Azure DevOps 管線。

Copa 也可以整合到 Github Actions 工作流程中,以使用 Copacetic Action 修補映射弱點。 此動作會使用其相關聯的弱點報告,為存放庫修補一組指定的映像。

下一步