Container Analysis

Container Analysis は、ソフトウェア アーティファクトの脆弱性スキャンとメタデータ ストレージを提供するサービスです。このサービスは、Container Registry のイメージなどの、ビルド済みのソフトウェア アーティファクトに対して脆弱性スキャンを実行してから、結果のメタデータを保存し、API を介して利用できるようにします。メタデータは、脆弱性スキャン、他のクラウド サービス、サードパーティ プロバイダなどのソースから取得できます。

このページでは、脆弱性スキャン、Container Analysis でサポートされるメタデータの種類、いくつかの主要なコンセプト、用語について説明します。

脆弱性スキャン

ソフトウェアの脆弱性は、偶発的なシステム障害の原因になる場合や、意図的に悪用される可能性がある弱点です。

Container Analysis は、Container Registry のイメージに対して脆弱性スキャンを実行し、脆弱性情報を監視して最新の状態に保ちます。このプロセスは、次の 2 つの主要なタスクで構成されます。

  • 増分スキャン: Container Analysis は、Container Registry にアップロードされた新しいイメージをスキャンします。スキャンは、コンテナのマニフェストに基づいてメタデータを収集し、イメージが再アップロード(再 push)されるたびにこのメタデータを更新します。

  • 継続分析: Container Analysis は、新しい脆弱性がないか Container Registry のスキャンされたイメージのメタデータを継続的に監視します。Container Analysis は、新しい脆弱性情報や更新された脆弱性情報を脆弱性ソースから取得すると、コンテナを再分析し、スキャン済みイメージの脆弱性オカレンスのリストを最新の状態にします。新しいメモ用の新しいオカレンスが作成され、有効でなくなったオカレンスは削除されます。この種類の分析は、パッケージの脆弱性だけを対象とし、他の種類のメタデータについては処理を行いません。

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

脆弱性ソース

Container Analysis API は、Linux ディストリビューションのパッケージ脆弱性スキャンをサポートし、次のソースから CVE データを取得します。

脆弱性の重大度

Container Analysis は、次の重大度レベルを使用します。

  • 重大
  • 最小

重大度は、脆弱性が悪用される可能性、その範囲、影響、成熟度などの要素を表す定性的なラベルです。たとえば、脆弱性の悪用によりリモートからシステムに簡単にアクセスし、認証やユーザーの操作を行わずに任意のコードを実行できる場合、この脆弱性は重大に分類されます。

脆弱性には、次の 2 種類の重大度が関連付けられます。

  • 有効な重大度 - Linux ディストリビューションによって割り当てられる重大度。ディストリビューション固有の重大度がない場合、Container Analysis はメモのプロバイダによって割り当てられた重大度を使用します。

  • CVSS スコア - Common Vulnerability Scoring System スコアとそれに関連する重大度。CVSS スコアの計算方法については、CVSS 3.0 仕様をご覧ください。

脆弱性によっては、CVSS スコアの重大度が有効な重大度と一致しないことがあります。重大度を割り当てる Linux ディストリビューションは、独自の基準でディストリビューションの脆弱性による影響を評価しています。

メタデータとイメージの関連付け

メタデータ(脆弱性情報やビルド情報)に関する大まかな説明をメモといいます。Container Analysis は、イメージの分析中にメモが検出されるたびにオカレンスを作成します。

メモは、メタデータの大まかな説明です。たとえば、Linux パッケージの分析後は、特定の脆弱性に関するメモを作成できます。また、ビルドプロセスのビルダーに関する情報を格納するためにメモを使用することもできます。メモの多くは、分析を実行するプロバイダによって作成され、所有されます。一般的に、メモは、コンテナ イメージを分析することによって検出され、プロジェクトを越えて何回も使用されます。

メモとオカレンスは別々のプロジェクトに格納することをおすすめします。これにより、よりきめ細かなアクセス制御が可能になります。

メモは、その所有者だけが編集可能で、メモを参照しているオカレンスにアクセス可能な顧客に対しては読み取り専用にする必要があります。

オカレンス

オカレンスは、イメージでメモが検出された時点を表します。メモのインスタンス化と考えることができます。たとえば、脆弱性に関するメモのオカレンスでは、脆弱性が発見されたパッケージや特定の修復手順などが示されます。または、ビルドの詳細に関するメモのオカレンスでは、ビルドの結果であるコンテナ イメージが示されます。

通常、オカレンスは、メモが作成されたプロジェクトとは別のプロジェクトに格納されます。オカレンスへの書き込みアクセス権は、メモをオカレンスにリンクするためのアクセス権を持っているユーザーにのみ付与する必要があります。一方、オカレンスへの読み取りアクセス権は、すべてのユーザーに付与できます。

検出オカレンスには、コンテナ イメージの初期スキャンで収集した情報が含まれます。Container Analysis は、コンテナのスキャン時に検出オカレンスを更新します。その際には、スキャン ステータスが記録されます。検出オカレンスは、Container Analysis API が初めて有効になった時点で既存のすべてのイメージに対して作成され、Container Registry に push された時点で新しいイメージに対して作成されます。

サポートされるメタデータの種類

次の表に、Container Analysis がサポートし、Container Registry 内のイメージにメモとして提供するメタデータの種類を示します。サードパーティ メタデータ プロバイダは、顧客のイメージ用として、次の種類のメタデータを格納または検索できます。

メタデータの種類 Container Registry イメージ用として Container Analysis から提供されるかどうか
脆弱性: コンテナ イメージの脆弱性情報を提供します。 ○。Container Analysis は、外部ソースから脆弱性情報を取得します。
ビルド: ビルドの場所に関する情報を提供します。 ○。Container Analysis は、Cloud Build を使用してイメージをビルドする場合にのみ、この情報を提供します。
デプロイメント: イメージ デプロイメント イベントに関する情報を提供します。 ×
イメージ: コンテナ イメージに関するメタデータ。たとえば、イメージのさまざまなレイヤに関する情報。 ×
パッケージ: イメージにインストールされたパッケージに関する情報が含まれています。 ×
証明書: イメージを証明できる論理的な役割。 ×
検出: イメージの初期スキャンに関する情報が含まれています。 ○。Container Analysis は、脆弱性に関する情報だけを提供します。

プロバイダと顧客

プロバイダとは、顧客のイメージ用のメタデータを提供する企業のことです。プロバイダは顧客のイメージ用のメタデータを格納または検索するために Container Analysis を使用できます。たとえば、顧客の Docker コンテナ用のセキュリティ管理を提供する企業は、Container Analysis を使用して、イメージのセキュリティ関連メタデータの格納や検索を行うことができます。詳細については、プロジェクト用のメタデータの提供をご覧ください。

顧客は、Container Registry 内のイメージ用に、Google またはサードパーティ プロバイダのいずれかが提供しているメタデータを使用します。

デフォルトの Container Analysis サービス アカウント

Container Analysis は、サービス アカウントを使用してコンテナ イメージを分析します。このアカウントは、ユーザーの代わりにイメージに関する情報を収集する特別な Google アカウントです。Container Analysis サービス アカウントのメールアドレスは service-[PROJECT_NUMBER]@container-analysis.iam.gserviceaccount.com です。このアカウントは、Container Analysis サービス エージェントの役割を使用します。

脆弱性スキャンを有効にすると、この機能が使用する Container Scanning API でも特別な Google アカウントが使用されます。そのサービス アカウントのメールアドレスは service-[PROJECT_NUMBER]@gcp-sa-containerscanning.iam.gserviceaccount.com です。このアカウントは、Container Scanner サービス エージェントの役割を使用します。

プロジェクトのサービス アカウントは、Cloud Console の IAM メニューから表示できます。

Container Analysis のインターフェース

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

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

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

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

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

Binary Authorization と Container Analysis を統合すると、デプロイメント環境で既知のセキュリティ問題を含むイメージの実行を防ぐことができます。

次のステップ