共用方式為


快速入門:使用 Dependabot 和 Copacetic 更新及保護容器映像相依性

在本快速入門中,您將介紹設定 Dependabot 和 Copacetic 所需的步驟,以協助您自動化軟體相依性更新,並增強安全供應鏈環境中容器映像的安全性。 藉由使用這些工具,您可以確保容器映像一律為最新且安全。

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

  • 使用 Dependabot 更新容器映像相依性和安全性。
    • Dependabot 會將容器映像相依性保持在最新狀態的程式自動化,降低弱點的風險。
  • 使用 Copacetic 持續監視、掃描和修補容器映像。
    • Copacetic 會持續監視和掃描您的容器映像,確保這些映像安全,並針對已知的弱點進行修補。

必要條件

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

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

搭配 GitHub 使用 Dependabot

請遵循指引和建議,以有效管理 Dependabot 引發的提取要求、使用 GitHub Actions 來增強 Dependabot 的效能,以及針對常見的 Dependabot 錯誤進行疑難解答。

搭配 Azure DevOps 使用 Dependabot

依照指示設定 Dependabot 與 Azure DevOps,確保容器映像相依性保持在最新版和安全性增強功能的最新狀態。

  1. 授與許可權:使用名稱 YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME) 建立服務帳戶,並授與下列許可權:
  • 強制推送
  • 參與提取要求
  • 建立分支

* 找出組建服務許可權。*

請務必以項目和組織的實際名稱取代 YOUR-PROJECT-NAMEYOUR-ORGANIZATION-NAME

  1. 設定 Dependabot:若要設定 Dependabot,請將組態檔新增 dependabot.yml 至您的存放庫。 以下是組態檔可能看起來如下的範例:

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

此組態會為使用 Docker 的項目設定 Dependabot,並指定根目錄 (“/”) 是 Docker 檔案所在的位置,並指派 Dependabot 來處理更新。 您可以自定義組態,以符合專案的需求。

  1. 建立 Azure DevOps Pipeline:若要建立 Azure DevOps Pipeline,請使用下列內容將檔案新增 azure-pipeline.yml 至您的存放庫:

     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 }
    

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

Dependabot 可以在各種案例中更新容器映像相依性,例如:

  • 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. 遵循 Copacetic 的 快速入門指南 ,藉由利用弱點掃描結果來修補容器映像。

  2. 檢閱 範例 ADO 管 線,以取得使用 Copacetic 的範例 Azure DevOps 管線組態檔。 管線的設計目的是將 Copacetic 整合到 CI/CD 工作流程中,以便持續監視、掃描和修補容器映射是否有弱點。

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

下一步