Artifact Analysis には、イメージをスキャンする 2 つの方法(自動スキャンとオンデマンド スキャン)があります。このドキュメントでは、両方のタイプのスキャンの機能の詳細について説明します。
Artifact Analysis はメタデータ管理も提供します。スキャンとメタデータ ストレージを組み合わせて CI/CD パイプラインをエンドツーエンドで保護する方法については、Artifact Analysis の概要をご覧ください。
コンテナ イメージのスキャンに関連する費用の詳細については、料金をご覧ください。
この概要では、Artifact Registry で Docker リポジトリを使用することに精通していることを前提としています。
自動スキャン
Artifact Analysis は、Artifact Registry のアーティファクトに対して脆弱性スキャンを実行します。Artifact Analysis は、依存関係とライセンスも特定し、ソフトウェア構成の把握に役立ちます。
自動スキャンは、プッシュ時のスキャンと継続的分析の 2 つの主要なタスクで構成されます。
プッシュ スキャン
Artifact Analysis は、Artifact Registry にアップロードされた新しいイメージをスキャンします。このスキャンにより、コンテナ内のパッケージに関する情報が抽出されます。イメージは、イメージのダイジェストに基づいて一度だけスキャンされます。つまり、タグを追加または変更しても、新しいスキャンはトリガーされません。
Artifact Analysis は、セキュリティの脆弱性に関して公開で監視されているパッケージの脆弱性のみを検出します。
イメージのスキャンが完了すると、イメージの脆弱性オカレンスのコレクションが脆弱性の結果として生成されます。
継続的な分析
Artifact Analysis は、イメージのアップロード時に検出された脆弱性のオカレンスを作成します。最初のスキャンの後、Artifact Analysis は、Artifact 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 パッケージとアプリケーション言語パッケージの脆弱性をスキャンできます。
次の表は、Artifact Analysis が各スキャン サービスでスキャンできるパッケージのタイプを比較したものです。
サポートされている OS パッケージ
| Artifact Registry による自動スキャン | オンデマンド スキャン | |
|---|---|---|
| AlmaLinux OS | ||
| Alpine | ||
| CentOS | ||
| チェーンガード | ||
| 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 は、パッケージがコンテナ化され、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 は、次のソースを使用します。
- 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
- CentOS - バージョン: 6、7、8、とマイナー バージョン
- Chainguard - 単一のリリース トラックでのローリング アップデート。
- Debian GNU/Linux - バージョン: 11、12、13、14、15
- MinimOS - 単一のリリース トラックでのローリング アップデート。
- Red Hat Enterprise Linux(RHEL)- バージョン: 7、8、9、10、およびマイナー バージョンは、自動レジストリ スキャンでサポートされています。
- Red Hat Universal Base Image(UBI)- バージョン 8、9、10、マイナー バージョン
- 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
- Wolfi - 単一のリリース トラックでのローリング アップデート。
制限事項
Artifact Analysis の主な機能は、コンテナ内の脆弱性をスキャンして検出し、組織にその脆弱性を可視化することです。Artifact Analysis は、組織が画像の完全性や信頼性を検証する能力を高めたり低下させたりする可能性のある画像の特性を特定することを目的としていません。この信頼をさらに高めるために、Google は個別にまたは組み合わせて使用できるソリューションを提供しています。ソフトウェア サプライ チェーンのセキュリティに対する Google のアプローチの詳細をご確認ください。
Artifact Analysis は、リリースされたメジャー バージョンごとの最新のマイナー バージョンに基づいて、RHEL の脆弱性スキャンの結果を提供します。古いマイナー バージョンの 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 セマンティック バージョニングをご覧ください。