コンテナ スキャンは、Artifact Registry リポジトリ内のコンテナ イメージのオープンソースの依存関係に存在する新規および既存の脆弱性を特定します。Artifact Analysis には、パッケージをスキャンする 2 つの方法( 自動スキャンと オンデマンド スキャン)があります。このドキュメントでは、両方のタイプのスキャンについて説明します。
Artifact Analysis は、メタデータ管理も提供します。スキャンとメタデータ ストレージを組み合わせて CI/CD パイプラインをエンドツーエンドで保護する方法については、Artifact Analysis の概要をご覧ください。
コンテナ イメージのスキャンに関連する費用については、料金をご覧ください。
この概要では、 Artifact Registryで Docker リポジトリを使用していることを前提としています。
脆弱性がないかイメージをスキャンする
Artifact Analysis は、Artifact Registry 内のアーティファクトに対して脆弱性スキャンを実行します。Artifact Analysis は、依存関係とライセンスを特定して、ソフトウェア構成を把握できるようにします。
自動スキャンは、自動スキャンと継続分析の 2 つの主要なタスクで構成されます。
自動スキャン
Artifact Analysis は、Artifact Registry にアップロードされた新しいイメージをスキャンします。このスキャンでは、コンテナ内のパッケージに関する情報が抽出されます。イメージは、イメージのダイジェストに基づいて 1 回だけスキャンされます。つまり、タグを追加または変更しても、新しいスキャンはトリガーされません。
Artifact Analysis は、セキュリティ脆弱性に関して公開で監視されているパッケージの脆弱性のみを検出します。
イメージのスキャンが完了すると、イメージの脆弱性オカレンスのコレクションが脆弱性の結果 として生成されます。
自動脆弱性スキャンでは、API キーやサービス アカウント キーなどのシークレットも検出されるため、センシティブ データの漏洩を防ぐことができます。この機能は 公開プレビュー版です。 詳細については、 シークレットのスキャンをご覧ください。
継続分析
Artifact Analysis は、イメージのアップロード時に検出された脆弱性のオカレンスを作成します。最初のスキャンの後、Artifact Analysis は、Artifact Registry 内でスキャンされたイメージのメタデータに新たな脆弱性がないか継続的にモニタリングを行います。
Artifact Analysis は、脆弱性ソースから新しい脆弱性情報と更新された脆弱性情報 を 脆弱性ソース 1 日に複数回受け取ります。新しい脆弱性データが到着すると、Artifact Analysis はスキャンされたイメージのメタデータを更新して最新の状態に保ちます。Artifact Analysis は、既存の脆弱性オカレンスを更新し、新しいメモの脆弱性オカレンスを新規に生成し、無効になった脆弱性オカレンスを削除します。
Artifact Analysis は、過去 30 日以内に pull されたイメージとパッケージのスキャンを継続します。30 日経過すると、スキャンされたイメージとパッケージのメタデータは更新されなくなり、結果は古くなります。
Artifact Analysis は、90 日以上前のメタデータをアーカイブします。このアーカイブされたメタデータは、API を使用してのみ評価できます。 古いメタデータまたはアーカイブされたメタデータを含むイメージを再スキャンするには、そのイメージを pull します。メタデータの更新には、最長で 24 時間ほどかかることがあります。古いメタデータまたはアーカイブされたメタデータを含むパッケージを再スキャンすることはできません。
アーキテクチャ
Artifact Analysis は、Linux ベースの任意のアーキテクチャでイメージをスキャンできます。
マニフェスト リストで脆弱性スキャンを使用することもできます。A マニフェスト リスト は、複数のプラットフォームのマニフェストへのポインタのリストです。これにより、単一のイメージで複数のアーキテクチャまたはオペレーティング システムのバリエーションを使用できます。
マニフェスト リストに Linux amd64 イメージが含まれている場合、Artifact Analysis はそのイメージをスキャンします。それ以外の場合、Artifact Analysis はリストから別のイメージを選択します。
オンデマンド スキャン
オンデマンド スキャンを使用すると、gcloud CLI を使用して、コンピュータまたはレジストリでコンテナ イメージをローカルでスキャンできます。これにより、脆弱性の結果にアクセスする必要があるタイミングに応じて、CI/CD パイプラインを柔軟にカスタマイズできます。
サポートされているパッケージ タイプ
コンテナ イメージを Artifact Registry の Docker リポジトリに push すると、Artifact Analysis は、いくつかのタイプの OS パッケージとアプリケーション言語パッケージの脆弱性をスキャンできます。
次の表に、Artifact Analysis がスキャンできるパッケージのタイプと、各スキャン サービスを比較します。
サポートされている OS パッケージ
| Artifact Registry を使用した自動スキャン | オンデマンド スキャン | |
|---|---|---|
| AlmaLinux OS | ||
| Alpine | ||
| CentOS | ||
| Chainguard | ||
| Debian | ||
| Google Distroless | ||
| MinimOS | ||
| Red Hat Enterprise Linux(RHEL) | ||
| Red Hat Universal Base Image(UBI) | ||
| Rocky Linux | ||
| SUSE Linux Enterprise Server(SLES) | ||
| Ubuntu | ||
| Wolfi |
サポートされているアプリケーション言語パッケージ
| Artifact Registry を使用した自動スキャン | オンデマンド スキャン | |
|---|---|---|
| Go パッケージ | ||
| Java パッケージ | ||
| Node.js パッケージ | ||
| PHP パッケージ | ||
| Python パッケージ | ||
| Ruby パッケージ | ||
| Rust パッケージ | ||
| .NET パッケージ |
各レジストリ プロダクトで利用可能な機能の詳細については、 比較表 をご覧ください。
Artifact Analysis は、Windows Server コンテナではサポートされていません。
Artifact Analysis のインターフェース
コンソールで、Artifact Registry のコンテナのイメージの脆弱性とイメージのメタデータを表示できます。 Google Cloud
gcloud CLI を使用して、 脆弱性とイメージ メタデータを表示することもできます。
また、 Artifact Analysis REST API を 使用して、こうしたアクションを実行することもできます。他の Cloud Platform API と同様、 OAuth2 を使用してアクセスを認証する必要があります。認証後、API を使用してカスタム メモとオカレンスを作成し、脆弱性のオカレンスを表示することもできます。
Artifact Analysis API は、gRPC と REST/JSON の両方をサポートしています。 API の呼び出しは、 クライアント ライブラリまたは REST/JSON の cURL を使用して行うことができます。
パッケージ ファイルのパスを見つける
Artifact Analysis で脆弱性が検出された場合、脆弱なパッケージがアーティファクトの依存関係として認識されないことがあります。これは、パッケージ マネージャーが導入した場合や、パッケージが推移的な依存関係(依存関係の 1 つの依存関係)である場合に発生する可能性があります。
脆弱性の検出結果の原因となったファイルのパスを見つけるには、次の操作を行います。
- コンソールで、[Artifact Registry に移動] に移動し、アーティファクトの脆弱性のリストに移動します。 Google Cloud
- 調査する脆弱性で、[修正を表示] をクリックします。
詳細パネルで、[詳細情報を表示] をクリックします。
[ファイルの場所] フィールドに、脆弱なパッケージのパスが表示されます。
脆弱なイメージのデプロイを制御する
Artifact Analysis を Binary Authorization と統合して 証明書を作成することもできます。これにより、 既知のセキュリティ問題を含むコンテナ イメージがデプロイ環境で実行されないようにすることができます。
Binary Authorization を使用して、デプロイの一部として Artifact Analysis によって提供される 脆弱性情報に基づいて、脆弱性の許可リストを作成することもできます。脆弱性が許可リストのポリシーに違反すると、アラートが送信されます。
最後に、オンデマンド スキャンを使用して、検出された脆弱性の重大度に基づいてビルドをブロックして失敗させることができます。
脆弱性のあるソース
次のセクションでは、 Artifact Analysis が CVE データを取得するために使用する脆弱性ソースを示します。
OS パッケージのスキャン
Artifact Analysis は次のソースを使用します。
- AlmaLinux OS
- Alpine
- CentOS \- Red Hat と CentOS は 同じ脆弱性データのソースを共有します。CentOS パッケージは Red Hat パッケージの後に公開されるため、Red Hat の脆弱性に対する修正が CentOS で利用可能になるまでに時間がかかることがあります。
- Chainguard
- Debian
- Google Distroless は Debian をベースにしており、Debian の脆弱性データを使用します。
- National Vulnerability Database
- Minimus
- Red Hat Enterprise Linux(RHEL)
- Red Hat Universal Base Image(UBI)
- Rocky Linux
- SUSE Linux Enterprise Server(SLES)
- Ubuntu
- Wolfi
言語パッケージのスキャン
Artifact Analysis は、コンテナ イメージ内の言語パッケージの脆弱性スキャンをサポートしています。脆弱性データは GitHub Advisory Databaseから取得されます。
ほとんどの場合、各脆弱性には CVE ID が割り当てられ、この ID がその脆弱性のメイン識別子になります。脆弱性に CVE ID が割り当てられていない場合は、代わりに GHSA ID が 識別子として割り当てられます。後でその脆弱性に CVE ID が割り当てられると、脆弱性 ID は CVE に一致するように更新されます。詳細については、プロジェクト内の特定の脆弱性を確認するをご覧ください。
サポートされている OS バージョン
Artifact Analysis は、次のバージョンのオペレーティング システム ソフトウェアの脆弱性スキャンをサポートしています。
- AlmaLinux OS - バージョン: 8、9、10、およびマイナー バージョン
- 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、3.22、3.23
- CentOS - バージョン: 6、7、8、とマイナー バージョン
- Chainguard - 単一のリリース トラックでのローリング アップデート。
- Debian GNU/Linux - バージョン: 11、12、13、14、15
- MinimOS - 単一のリリース トラックでのローリング アップデート。
- Red Hat Enterprise Linux(RHEL)- バージョン: 7、8、9、およびマイナー バージョンは、自動レジストリ スキャンでサポートされています。
- Red Hat Universal Base Image(UBI)- バージョン 8、9、およびマイナー バージョン
- Rocky Linux - バージョン: 8、9、10、およびマイナー バージョン
- 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、25.04、25.10
- Wolfi - 単一のリリース トラックでのローリング アップデート。
制限事項
Artifact Analysis の主な機能は、コンテナ内の脆弱性をスキャンして検出し、組織に公開することです。Artifact Analysis は、組織がイメージの整合性や信頼性を検証する能力を高めたり低下させたりする可能性のあるイメージの特性を特定するものではありません。この信頼性をさらに高めるために、Google には単独または組み合わせて使用できるソリューションがあります。 ソフトウェア サプライ チェーンのセキュリティに対する Google のアプローチの詳細をご覧ください。
Artifact Analysis は、リリースされたメジャー バージョンごとの最新のマイナー バージョンに基づいて、RHEL の脆弱性スキャンの結果を提供します。古いマイナー バージョンをスキャンすると、不正確な結果が得られる可能性があります。
RHEL バージョン 9 は、オンデマンド スキャンではサポートされていません。
パッケージ マネージャーとセマンティック バージョニング
- Go - Artifact Analysis は、Go 標準ライブラリのパッケージと、標準ライブラリに含まれていない外部の Go パッケージの脆弱性を報告します。脆弱性は、パッケージのタイプごとに異なるラベルで報告されます。
- Java - Artifact Analysis は、 Maven の命名規則に従う Maven パッケージをサポートしています。パッケージ バージョンにスペースが含まれている場合は、スキャンされません。
- Node.js - パッケージ バージョンの照合は、 セマンティック バージョニングの仕様に従います。
- PHP - Artifact Analysis は Composer パッケージをスキャンします。Composer のセマンティック バージョニングをご覧ください。
- Python - Python バージョンの照合は PEP 440 セマンティクスに従います。
- Ruby - Artifact Analysis は RubyGems パッケージをスキャンします。RybyGems のセマンティック バージョニングをご覧ください。
- Rust - Artifact Analysis は Cargo パッケージをスキャンします。Rust のセマンティック バージョニングをご覧ください。
- .NET - Artifact Analysis は NuGet パッケージをスキャンします。NuGet のセマンティック バージョニングをご覧ください。