コンテナ スキャンは、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 は、一般公開されているパッケージの脆弱性と悪意のあるソフトウェアのみを検出します。脆弱性データは さまざまなアップストリーム プロバイダから取得され、悪意のあるパッケージ データは OpenSSF Malicious Packages Repositoryから取得されます。 悪意のあるパッケージは、重大度 CRITICAL の脆弱性として報告されます。
イメージのスキャンが完了すると、イメージの脆弱性オカレンスのコレクションが脆弱性の結果 として生成されます。
自動脆弱性スキャンでは、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 から取得されます。
悪意のあるパッケージ データは、OpenSSF Malicious Packages Repository から取得されます。 悪意のあるパッケージは、重大度 CRITICAL の検出結果として報告されます。Artifact Analysis は、次のカテゴリに分類される悪意のあるパッケージを検出します。
- タイポ スクワッティングまたは依存関係の混乱: 人気のあるパッケージと似た名前 で公開され、ユーザーが誤ってインストールしてしまうパッケージ。
- アカウントの乗っ取り: 悪意のあるユーザーによって侵害された正規のパッケージ。
- 悪意のあるバイナリ: 悪意のあるコードを含むパッケージのビルド済みバイナリ。
- セキュリティ研究者のアクティビティ: 研究者が脆弱性を実証したり、パッケージの使用状況を追跡したりするために作成したパッケージ。
ほとんどの場合、各脆弱性には CVE ID が割り当てられ、この ID
がその脆弱性の主な識別子になります。脆弱性に
CVE ID が割り当てられていない場合は、代わりに GHSA ID が
識別子として割り当てられます。後でその脆弱性に CVE ID が割り当てられると、脆弱性 ID は CVE に一致するように更新されます。悪意のあるパッケージ アドバイザリには、MAL- 接頭辞が付いた ID があります。詳細については、プロジェクト内の特定の脆弱性を確認するをご覧ください。
サポートされている 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 のセマンティック バージョニングをご覧ください。