次の方法で共有


クイック スタート: Dependabot とコパ酢酸を使用してコンテナー イメージの依存関係の更新とセキュリティを最新の状態に保つ

このクイック スタート ガイドでは、Dependabot とコパ酢酸を構成して使用して、ソフトウェア依存関係の更新を合理化、メイン、最新の状態に保ち、コンテナーのセキュリティで保護されたサプライ チェーンのコンテナー イメージのセキュリティを強化するプロセスについて説明します。

これらのツールによってプロセスが自動化され、コンテナー イメージが常に最新で安全であることを確認できます。

このクイックスタートでは、次の方法について説明します。

Dependabot を使用してコンテナー イメージの依存関係とセキュリティを更新します。 コパを使用して、コンテナー イメージを継続的に監視、スキャン、パッチ適用します。

前提条件

Dependabot を使用してコンテナー イメージの依存関係とセキュリティを更新する

Dependabot は、ソフトウェアの依存関係を最新の状態に保つプロセスを自動化するツールです。 これは、リポジトリで古い依存関係をスキャンし、最新バージョンに更新するためのプル要求を作成することによって機能します。 依存関係の更新が毎日チェックされ、更新するプル要求が作成されます。 Dependabot を構成して、Docker イメージを含むすべての種類の依存関係に対するプル要求を作成できます。 dependabot を使用して、最新のセキュリティ パッチを取得し、セキュリティ リスクを軽減するために、Dockerfiles、Kubernetes yaml ファイル、Helm チャート値 yaml ファイルの依存関係を自動的にバンプすることをお勧めします。

GitHub で Dependabot を使用する

Azure DevOps で Dependabot を使用する

  • 手順に従って、Azure DevOps で Dependabot を構成します。
  1. 次のアクセス許可 を持つ名前 YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME) のサービス アカウントを作成して、アクセス許可を付与します。

    -Force Push -Pull requests への投稿 -ブランチの作成

ビルド サービスのアクセス許可

  1. 次の例のような構成ファイルを追加して Dependabotdependabot を構成します。

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

  2. 次の内容のファイルをazure-pipeline.yaml追加して、Azure DevOps パイプラインを作成します。

     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

Note

この構文により、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

コパ酢酸を使用してコンテナー イメージを継続的に監視、スキャン、およびパッチ適用する

コパ酢酸 (コパ) は、Microsoft が支援する CNCF オープンソース プロジェクトであり、一般的なスキャナー ツールの結果をスキャンする脆弱性を考えると、コンテナー イメージの Linux OS パッケージの脆弱性に直接パッチを適用します。 コパ酢酸を使用すると、完全な再構築のためにアップストリームに行かずに、コンテナーに迅速にパッチを適用できます。 これにより、コンテナー イメージを運用環境に迅速に再デプロイできます。 コパ酢酸は、Linux OS の脆弱性に対してのみ使用されます。 アプリ レベルの脆弱性の場合は、イメージをビルドする前に修正プログラムを実行する必要があります。

コパ酢酸を使用する

  1. クイック スタート ガイド従って、コパの使用を開始します。

  2. サンプル ADO パイプライン:

    -コパ を使用するためのサンプル Azure DevOps パイプラインは、ここで見つけることができます

また、コパ酢酸アクションを使用して画像の脆弱性にパッチを適用するために、コパを Github Actions ワークフローに統合することもできます。 このアクションは、関連する脆弱性レポートを使用して、リポジトリの指定されたイメージのセットにパッチを適用します。

次のステップ