第2章 Clair の概念
次のセクションでは、Clair がどのように機能するかの概念的な概要を示します。
2.1. Clair の実践
Clair の分析は、インデックス作成、マッチング、通知の 3 つの部分に分類されます。
2.1.1. インデックス作成
Clair のインデクサーサービスは、コンテナーイメージの構成を理解する上で重要です。Clair では、コンテナーイメージの表現を "マニフェスト" と呼びます。マニフェストは、イメージのレイヤーのコンテンツを理解するために使用されます。このプロセスを効率化するために、Clair は Open Container Initiative (OCI) のマニフェストとレイヤーがコンテンツのアドレス指定を考慮して設計されていることを利用して、反復的なタスクを削減します。
インデックス作成時には、コンテナーイメージを表現するマニフェストが取得され、基本的な要素に分割されます。インデクサーの役割は、イメージに含まれるパッケージ、イメージの元のディストリビューション、およびイメージが依存するパッケージリポジトリーを明らかにすることです。この貴重な情報は、Clair のデータベース内に記録、保存されます。インデックス作成時に収集された詳細情報は、包括的な脆弱性レポートを生成する際の土台となります。このレポートは、さらなる分析とアクションのために matcher ノードにシームレスに転送でき、ユーザーがコンテナーイメージのセキュリティーについて情報に基づいた意思決定を行うのに役立ちます。
IndexReport
は Clair のデータベースに保存されます。これを matcher
ノードにフィードすることで、脆弱性レポートを計算できます。
2.1.2. マッチング
Clair では、マッチャーノードが、提供されたインデックスレポートと脆弱性をマッチングします。
matcher は脆弱性のデータベースを最新の状態に維持します。matcher は一連のアップデーターを実行し、定期的にデータソースをプローブして新しいコンテンツを探します。新しい脆弱性は、発見されると、データベースに保存されます。
matcher API は、クエリー時に常に最新の脆弱性レポートを提供するように設計されています。脆弱性レポートは、マニフェストのコンテンツと、そのコンテンツに影響を与える脆弱性の両方をまとめたものです。
新しい脆弱性は、発見されると、データベースに保存されます。
マッチャー API は頻繁な使用を想定して設計されています。マッチャー API は、クエリー時に常に最新の VulnerabilityReport
を提供するように設計されています。VulnerabilityReport
は、マニフェストのコンテンツと、コンテンツに影響を与える脆弱性の両方をまとめたものです。
2.1.3. ノーティファイアーサービス
Clair は、新しいセキュリティーデータベースの更新を追跡し、新しい脆弱性または削除された脆弱性がインデックス付きマニフェストに影響を与えるかどうかをユーザーに通知するノーティファイアーサービスを使用します。
ノーティファイアーは、以前にインデックス付けされたマニフェストに影響を与える新しい脆弱性を認識すると、config.yaml
ファイルで設定されたメソッドを使用して、新しい変更に関する通知を発行します。返された通知は、変更により発見された最も深刻な脆弱性を表しています。これにより、同じセキュリティーデータベースの更新に対して過剰な通知が作成されるのを回避できます。
ユーザーが通知を受け取ると、ノーティファイアーは最新の脆弱性レポートを受信するために matcher に対して新しいリクエストを発行します。
次の方法で通知に登録できます。
- Webhook 配信
- AMQP 配信
- STOMP 配信
ノーティファイアーの設定は、Clair YAML 設定ファイルを介して行われます。