コンテナ スキャンの概要

Artifact Analysis には、イメージをスキャンする 2 つの方法(自動スキャンオンデマンド スキャン)があります。このドキュメントでは、両方のタイプのスキャンの機能の詳細について説明します。

Artifact Analysis はメタデータ管理も提供します。スキャンとメタデータ ストレージを組み合わせて CI/CD パイプラインをエンドツーエンドで保護する方法については、Artifact Analysis の概要をご覧ください。

コンテナ イメージのスキャンに関連する費用の詳細については、料金をご覧ください。

この概要では、Artifact Registry または Container Registry(非推奨)で Docker リポジトリを使用することに慣れていることを前提としています。

自動スキャン

Artifact Analysis は、Artifact Registry または Container Registry (非推奨)のアーティファクトに対して脆弱性スキャンを実行します。Artifact Analysis は、依存関係とライセンスも特定し、ソフトウェア構成の把握に役立ちます。

自動スキャンは、プッシュ時のスキャンと継続的分析の 2 つの主要なタスクで構成されます。

プッシュ スキャン

Artifact Analysis は、Artifact Registry または Container Registry にアップロードされた新しいイメージをスキャンします。このスキャンにより、コンテナ内のパッケージに関する情報が抽出されます。イメージは、イメージのダイジェストに基づいて 1 回だけスキャンされます。つまり、タグを追加または変更しても、新しいスキャンはトリガーされません。

Artifact Analysis は、セキュリティの脆弱性に関して公開で監視されているパッケージの脆弱性のみを検出します。

イメージのスキャンが完了すると、イメージの脆弱性オカレンスのコレクションが脆弱性の結果として生成されます。

継続的な分析

Artifact Analysis は、イメージのアップロード時に検出された脆弱性のオカレンスを作成します。最初のスキャンの後、Artifact Analysis は、Artifact Registry と Container Registry 内でスキャンされたイメージのメタデータに新たな脆弱性がないか継続的にモニタリングを行います。

Artifact Analysis は、脆弱性ソースから新しい脆弱性情報と更新された脆弱性情報を 1 日に複数回受け取ります。新しい脆弱性データが届くと、Artifact Analysis はスキャン済みイメージのメタデータを更新して、最新の状態に保ちます。Artifact Analysis は、既存の脆弱性オカレンスを更新し、新しいメモの新しい脆弱性オカレンスを作成し、有効でなくなった脆弱性オカレンスを削除します。

Artifact Analysis は、過去 30 日間に push または pull されたイメージのメタデータのみを更新します。30 日を過ぎると、メタデータは更新されなくなり、結果は古くなります。また、Artifact Analysis は 90 日以上前のメタデータをアーカイブします。このメタデータは、 Google Cloud コンソール、gcloud、API を使用して取得することはできません。古いメタデータまたはアーカイブされたメタデータを含むイメージを再スキャンするには、そのイメージを pull します。メタデータの更新には、最長で 24 時間ほどかかることがあります。

マニフェスト リスト

マニフェスト リストで脆弱性スキャンを使用することもできます。マニフェスト リストは、複数のプラットフォームのマニフェストへのポインタのリストです。これにより、単一のイメージで複数のアーキテクチャやオペレーティング システムのバリエーションを操作できます。

Artifact Analysis の脆弱性スキャンは、Linux amd64 イメージのみをサポートしています。マニフェスト リストが複数の Linux amd64 イメージを指している場合は、最初のイメージのみがスキャンされます。Linux amd64 イメージへのポインタがない場合は、スキャン結果は返されません。

オンデマンド スキャン

オンデマンド スキャンを使用すると、gcloud CLI を使用して、コンピュータまたはレジストリ内のコンテナ イメージをローカルでスキャンできます。これにより、脆弱性結果にアクセスする必要があるタイミングに応じて、CI/CD パイプラインを柔軟にカスタマイズできます。

サポートされているパッケージ タイプ

コンテナ イメージを Artifact Registry の Docker リポジトリに push すると、Artifact Analysis は複数のタイプの OS パッケージとアプリケーション言語パッケージの脆弱性をスキャンできます。

Container Registry は非推奨になりました。Container Registry では、自動スキャンで OS パッケージのみがスキャンされます。Container Registry を使用している場合は、Artifact Registry に移行する方法をご確認ください。

次の表は、Artifact Analysis が各スキャン サービスでスキャンできるパッケージのタイプを比較したものです。

サポートされている OS パッケージ

Artifact Registry を使用した自動スキャン Container Registry による自動スキャン(非推奨) オンデマンド スキャン
AlmaLinux OS
Alpine
CentOS
Chainguard
Debian
Google Distroless
Red Hat Enterprise Linux(RHEL)
Red Hat Universal Base Image(UBI)
Rocky Linux
SUSE Linux Enterprise Server(SLES)
Ubuntu
Wolfi

サポートされているアプリケーション言語パッケージ

Artifact Registry を使用した自動スキャン Container Registry による自動スキャン(非推奨) オンデマンド スキャン
Go パッケージ
Java パッケージ
Node.js パッケージ
PHP パッケージ
Python パッケージ
Ruby パッケージ
Rust パッケージ
.NET パッケージ

Artifact Analysis は、パッケージがコンテナ化され、Docker 形式のリポジトリに保存されている場合にのみ、Artifact Registry 内のアプリケーション言語パッケージをスキャンします。他の Artifact Registry のリポジトリ形式はサポートされていません。

各レジストリ プロダクトで利用可能な機能の詳細については、比較表をご覧ください。

Artifact Analysis は Windows Server コンテナではサポートされていません。

Artifact Analysis のインターフェース

Google Cloud コンソールでは、Artifact Registry のコンテナのイメージの脆弱性とイメージのメタデータを表示できます。

gcloud CLI を使用して、脆弱性とイメージ メタデータを表示することもできます。

また、Artifact Analysis REST API を使用して、こうしたアクションを実行することもできます。他の Cloud Platform API と同様、OAuth2 を使用してアクセスを認証する必要があります。認証した後、API を使用してカスタム メモやオカレンスを作成したり、脆弱性のオカレンスを表示したりすることもできます。

Artifact Analysis API は、gRPC と REST/JSON の両方をサポートしています。API の呼び出しは、クライアント ライブラリまたは REST/JSON の cURL を使用して行うことができます。

脆弱なイメージのデプロイを制御する

Artifact Analysis を Binary Authorization と統合して証明書を作成できます。これにより、既知のセキュリティ問題を含むコンテナ イメージがデプロイ環境で実行されないようにすることができます。

Binary Authorization を使用して、デプロイの一部として Artifact Analysis によって提供される脆弱性情報に基づいて脆弱性許可リストを作成することもできます。脆弱性が許可リストのポリシーに違反している場合は、アラートが表示されます。

最後に、オンデマンド スキャンを使用して、検出された脆弱性の重大度に基づいてビルドをブロックして失敗させることができます。

脆弱性のあるソース

次のセクションでは、Artifact Analysis が CVE データの取得に使用する脆弱性ソースを一覧表示します。

OS パッケージのスキャン

Artifact Analysis は、次のソースを使用します。

言語パッケージのスキャン

Artifact Analysis は、コンテナ イメージ内の言語パッケージの脆弱性スキャンをサポートしています。脆弱性データは、GitHub Advisory Database から取得されます。

ほとんどの場合、各脆弱性には CVE ID が割り当てられ、この ID がその脆弱性のメインの識別子になります。脆弱性に CVE ID が割り当てられていない場合は、代わりに GHSA ID が識別子として割り当てられます。後でその脆弱性に CVE ID が割り当てられると、脆弱性 ID は CVE と一致するように更新されます。詳細については、プロジェクト内の特定の脆弱性を確認するをご覧ください。

サポートされている OS バージョン

Artifact Analysis は、次のバージョンのオペレーティング システム ソフトウェアで脆弱性スキャンをサポートしています。

  • AlmaLinux OS - バージョン: 8、9、マイナー バージョン
  • Alpine Linux - バージョン: 3.3、3.4、3.5、3.6、3.7、3.8、3.9、3.10、3.11、3.12、3.13、3.14、3.15、3.16、3.17、3.18、3.19、3.20、3.21
  • CentOS - バージョン: 6、7、8、とマイナー バージョン
  • Chainguard - 単一のリリース トラックでのローリング アップデート。
  • Debian GNU/Linux - バージョン: 11、12、13
  • Red Hat Enterprise Linux(RHEL)- バージョン: 7、8、9、およびマイナー バージョンは、自動レジストリ スキャンでサポートされています。
  • Red Hat Universal Base Image(UBI)- バージョン 8、9、マイナー バージョン
  • Rocky Linux - バージョン: 8、9、マイナー バージョン
  • SUSE Linux Enterprise Server(SLES)- バージョン: 12、15、マイナー バージョン。SLES for SAP も同じバージョンでサポートされています
  • Ubuntu - バージョン: 14.04、16.04、18.04、20.04、22.04、24.04、24.10
  • Wolfi - 単一のリリース トラックでのローリング アップデート。

制限事項

  • Artifact Analysis の主な機能は、コンテナ内の脆弱性をスキャンして検出し、組織にその脆弱性を可視化することです。Artifact Analysis は、組織がイメージの完全性や信頼性を検証する能力を高めたり低下させたりする可能性のあるイメージの特性を特定することを目的としていません。この信頼をさらに高めるために、Google は個別にまたは組み合わせて使用できるソリューションを提供しています。ソフトウェア サプライ チェーンのセキュリティに対する Google のアプローチの詳細をご確認ください

  • Artifact Analysis は、リリースされたメジャー バージョンごとの最新のマイナー バージョンに基づいて、RHEL の脆弱性スキャンの結果を提供します。古いマイナー バージョンの RHEL のスキャン結果には、不正確な部分がある可能性があります。

  • RHEL バージョン 9 はオンデマンド スキャンではサポートされていません。

パッケージ マネージャーとセマンティック バージョニング

次のステップ