3.4. Clair V4 のデプロイ
Clair はイメージのコンテンツを解析し、コンテンツに影響する脆弱性を報告するアプリケーションです。これは静的分析によって実行され、ランタイム時には実行されません。Clair の分析は 3 つの異なる部分に分類されます。
- Indexing: インデックス作成はマニフェストの Clair への送信から開始します。受信時に、Clair はレイヤーを取得し、その内容をスキャンし、IndexReport という中間表現を返します。マニフェストは、Clair のコンテナーイメージの表示です。Clair は OCI マニフェストとレイヤーがコンテンツ対応であることを活かして、重複作業を削減します。マニフェストがインデックス化されると、IndexReport は後で取得できるように永続します。
- Matching: マッチングは IndexReport を取り、レポートが表すマニフェストに影響を与える脆弱性を相関させます。Clair は継続的に新しいセキュリティーデータを取り込み、matcher への要求は IndexReport の最新の脆弱性分析を提供します。
- 通知: Clair は通知サービスを実装します。新規の脆弱性が検出されると、通知サービスはこれらの脆弱性がインデックス化されたマニフェストに影響するかどうかを判別します。その後、通知機能は設定に応じてアクションを実行します。
3.4.1. Clair 用の個別データベースのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Clair には Postgres データベースが必要です。Quay が Postgres を使用している場合に Quay と Clair 間で共通データベースを共有できますが、この例では個別の Clair 固有のデータベースがデプロイされます。
この概念実証のシナリオでは、ローカルファイルシステムのディレクトリーを使用してデータベースデータを永続化します。
ここでは $QUAY 変数で示されるインストールフォルダーで、Clair データベースデータのディレクトリーを作成し、パーミッションを適切に設定します。
$ mkdir -p $QUAY/postgres-clairv4 $ setfacl -m u:26:-wx $QUAY/postgres-clairv4Podman を使用し、データベースデータのボリューム定義と共にユーザー名、パスワード、データベース名、ポートを指定して Postgres コンテナーを実行します。標準の Postgres ポート
5432は Quay デプロイメントですでに使用されているため、このインスタンス5433に異なるポートを公開します。$ sudo podman run -d --rm --name postgresql-clairv4 \ -e POSTGRESQL_USER=clairuser \ -e POSTGRESQL_PASSWORD=clairpass \ -e POSTGRESQL_DATABASE=clair \ -e POSTGRESQL_ADMIN_PASSWORD=adminpass \ -p 5433:5432 \ -v $QUAY/postgres-clairv4:/var/lib/pgsql/data:Z \ registry.redhat.io/rhel8/postgresql-10:1Clair で必要な Postgres
uuid-osspモジュールがインストールされていることを確認します。$ sudo podman exec -it postgresql-clairv4 /bin/bash -c 'echo "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\"" | psql -d clair -U postgres'