Secure テクニカルドキュメント
アーキテクチャ
概要
Secure 機能をサポートするアーキテクチャは、主に 2 つの部分に分かれています。
flowchart LR
subgraph G1[Scanning]
Scanner
Analyzer
CI[CI Jobs]
end
subgraph G2[Processing, visualization, and management]
Parsers
Database
Views
Interactions
end
G1 --Report Artifact--> G2スキャン
スキャン部分は、指定されたリソースの脆弱性を検出し、結果をエクスポートする役割を担います。 スキャンは、アナライザーサブグループ にある Analyzers と呼ばれるいくつかの小さなプロジェクトを通じて、CI ジョブで実行されます。 アナライザーは、GitLab に統合するために Scanners と呼ばれる社内または外部のセキュリティツールをラップする小さなラッパーです。 アナライザーは主に Go で書かれており、共通 Go ライブラリ を利用しています。
一部のサードパーティインテグレーターは、同じアーキテクチャを活用したインテグレーションドキュメントに従うことで、追加のスキャナーを利用可能にしています。
スキャン結果は Secure レポートフォーマット に準拠した JSON レポートとしてエクスポートされ、パイプライン完了後に処理できるよう CI ジョブレポートアーティファクト としてアップロードされます。
この部分は主に以下のグループが担当しています:
処理、可視化、および管理
データがレポートアーティファクトとして利用可能になると、GitLab Rails アプリケーション によって処理され、セキュリティ機能が有効になります:
- セキュリティダッシュボード、マージリクエストウィジェット、パイプラインビューなど
- 脆弱性との対話
- 承認ルール
- など
コンテキストに応じて、セキュリティレポートはデータベースに保存されるか、オンデマンドアクセスのためにレポートアーティファクトとして保持されます。
ただし、境界が曖昧になる場合もあるため、できるだけ明確に線引きするよう努めています。
ClickHouse データストア
Secure 機能全体の主要なワークロードは、高速な書き込みレートと履歴データに対する集計分析に依存しています。これらのタイプの OLAP シナリオは PostgreSQL のようなトランザクション型データストアには適しておらず、バッチベースの挿入、高い読み取り比率、ワイドテーブルの恩恵を受けることができます。
このような場合、GitLab のテクノロジースタックへの ClickHouse の導入は、Secure 機能を将来に向けてスケールさせる重要な機会を提供します。
データストアとしての ClickHouse は、セクション内のいくつかの主要なワークフローを強化する可能性があります:
セキュリティダッシュボード
セキュリティダッシュボードは、プロジェクトおよびネームスペース全体のアクティブな脆弱性を追跡するための履歴集計データを提供します。これらのリクエストは ClickHouse が大きく最適化されている読み取り専用データの分析集計クエリです。
既存の集計のパフォーマンス向上に加え、OLAP データストアの使用により、追加フィールド(重大度と並んだレポートタイプや分類など)によるオンデマンド集計をより柔軟に実現できます。
脆弱性リスト
脆弱性リストは、プロジェクトおよびネームスペース内の脆弱性をレビュー、評価、トリアージするための表形式のデータと対話性を提供します。これらのリクエストは高読み取り、ワイドカラムで(多くの場合)フィルタリングされます。クエリベースのビュー集計へのシフトにより、カラム型ストアは特定のテーブルの限られたカラムをフェッチする際に完全なレコードアクセスを必要とせず、大きな利点を提供します。
さらに、脆弱性をオンザフライで作成する という作業など、ユーザーインタラクションへの永続化を削減することを目的とした継続的なアーキテクチャにより、脆弱性ファインディングのストレージを PostgreSQL から ClickHouse に移行することで、パフォーマンス向上の大きな可能性があります。
調査
ブラウンバッグセッション
Secure チームメンバーは、さまざまなトピックについて ブラウンバッグセッション を通じて知識を共有しています。
