クイック スタート: Dependabot とコパ酢酸を使用してコンテナー イメージの依存関係の更新とセキュリティを最新の状態に保つ
このクイック スタート ガイドでは、Dependabot とコパ酢酸を構成して使用して、ソフトウェア依存関係の更新を合理化、メイン、最新の状態に保ち、コンテナーのセキュリティで保護されたサプライ チェーンのコンテナー イメージのセキュリティを強化するプロセスについて説明します。
これらのツールによってプロセスが自動化され、コンテナー イメージが常に最新で安全であることを確認できます。
このクイックスタートでは、次の方法について説明します。
Dependabot を使用してコンテナー イメージの依存関係とセキュリティを更新します。 コパを使用して、コンテナー イメージを継続的に監視、スキャン、パッチ適用します。
前提条件
- Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- サブスクリプション用に インストールおよび構成された最新バージョンの Azure CLI 。
- サブスクリプション内の既存の Azure Container Registry (ACR)。
Dependabot を使用してコンテナー イメージの依存関係とセキュリティを更新する
Dependabot は、ソフトウェアの依存関係を最新の状態に保つプロセスを自動化するツールです。 これは、リポジトリで古い依存関係をスキャンし、最新バージョンに更新するためのプル要求を作成することによって機能します。 依存関係の更新が毎日チェックされ、更新するプル要求が作成されます。 Dependabot を構成して、Docker イメージを含むすべての種類の依存関係に対するプル要求を作成できます。 dependabot を使用して、最新のセキュリティ パッチを取得し、セキュリティ リスクを軽減するために、Dockerfiles、Kubernetes yaml ファイル、Helm チャート値 yaml ファイルの依存関係を自動的にバンプすることをお勧めします。
GitHub で Dependabot を使用する
- 手順に従って、GitHub で Dependabot をセットアップします
Azure DevOps で Dependabot を使用する
- 手順に従って、Azure DevOps で Dependabot を構成します。
次のアクセス許可 を持つ名前
YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME)
のサービス アカウントを作成して、アクセス許可を付与します。-Force Push -Pull requests への投稿 -ブランチの作成
次の例のような構成ファイルを追加して Dependabot
dependabot
を構成します。version: 2 updates: - package-ecosystem: "docker" directory: "/" assignees: - "dependabot"
次の内容のファイルを
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 }
上記
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 の脆弱性に対してのみ使用されます。 アプリ レベルの脆弱性の場合は、イメージをビルドする前に修正プログラムを実行する必要があります。
コパ酢酸を使用する
クイック スタート ガイドに従って、コパの使用を開始します。
サンプル ADO パイプライン:
また、コパ酢酸アクションを使用して画像の脆弱性にパッチを適用するために、コパを Github Actions ワークフローに統合することもできます。 このアクションは、関連する脆弱性レポートを使用して、リポジトリの指定されたイメージのセットにパッチを適用します。