はじめに
現代のクラウドネイティブ開発では、ソフトウェア供給チェーンの可視化とセキュリティリスク管理が不可欠です。Kubcape と Guac はそれぞれ Kubernetes 環境におけるセキュリティ監査と供給チェーン情報統合の分野で注目を集める技術です。本記事では、これらの技術の特徴と統合可能性を解説し、実際の応用ケースをもとにその価値を明らかにします。
Guac のシステムアーキテクチャと機能
核心特性
Guac は GraphQL API を中心とした供給チェーン情報統合プラットフォームです。SBOM(Software Bill of Materials)、SLSA(Supply Chain Levels for Software Artifacts)、Scorecard、VEX(Vulnerability Exchange)などの多源データを統合し、ソフトウェアコンポーネントのグラフ表現を構築します。これにより、システム間での供給チェーンの可視化と分析が可能になります。
重要なコンポーネント
- Ingestor:SBOM や SLSA などのデータファイルをグラフノードとエッジに変換
- Collector:GitHub や SBOM ファイルなどのデータソースを監視し、自動的に Guac にアップロード
- Certifier:OSV.dev などの外部脆弱性データを統合し、グラフに脆弱性情報を追加
- データソース:SBOM、SLSA、Scorecard、VEX などのフォーマットをサポート
アプリケーションシナリオ
- GraphQL クエリでソフトウェアコンポーネントの関連性を分析
- 漏洞トレースとソフトウェア構成分析(SCA)を実施
Kubcape のプロジェクトと脆弱性スキャン技術
プロジェクト背景
Kubcape は CNCF(Cloud Native Computing Foundation)のインキュベーションプロジェクトで、Kubernetes セキュリティプラットフォームを提供します。Operator、CLI、GitHub Action、ビジュアルプラグインなど、多様なデプロイ方法をサポートしています。主に構成チェック、脆弱性スキャン、eBPF ノードエージェントに焦點を當てています。
脆弱性スキャンの革新技術
- Reachability 分析:eBPF を使ってコンテナ內のファイル操作を監視し、実際の実行時に使用されるソフトウェアパッケージを區別。SBOM と実行時データを比較し、不要なコンポーネントをフィルタリング。Ubuntu 基盤イメージの過剰スキャンを70〜90%削減。
- 実行時データ統合:eBPF エージェント(Inspector Gadget)でコンテナの行動を収集し、実際のロードされたソフトウェアコンポーネントのみを含む「フィルタ後の SBOM」を生成。
Guac と Kubcape の統合ソリューション
データフロー統合
Kubcape の Collector が SBOM データを Guac にアップロードし、完全な SBOM とフィルタ後の SBOM の同期分析をサポート。ソースコード SBOM、ビルド時 SBOM、イメージ SBOM、フィルタ後の SBOM などの多源データを統合。
クエリと分析の例
- GraphQL クエリでさまざまな SBOM のソフトウェアコンポーネントを検索
- ビルド時と実行時のコンポーネントの差異を比較(例:Go モジュールの依存関係の移動)
- フィルタ後の SBOM を使って脆弱性ノイズを減らす(例:170 個の CVE を 15 個に減らす)
技術の特徴と応用価値
供給チェーンデータ統合
- 多様な SBOM フォーマットを統合し、完全なソフトウェア構成ビューを提供
- 動的更新とリアルタイム分析をサポート
実行時セキュリティ最適化
- eBPF を使って実際のソフトウェアコンポーネントを正確に識別
- 不要なコンポーネントの脆弱性スキャン負荷を削減
オープンソースエコシステム統合
- CNCF プロジェクト(例:Inspector Gadget)との協業
- CLI、GraphQL、ビジュアルツールなど多様な使用方法を提供
sbomb の種類と収集方法
- ソースコード sbomb:lock file(例:go.mod)を解析し、リポジトリ內のすべての依存関係を含む。開発・テスト用のパッケージも含まれるが、バイナリに構築されない內容。
- ビルド sbomb:バイナリに構築される依存関係のみを含み、CI テスト環境と異なる可能性がある。
- イメージ sbomb:コンテナイメージをスキャンし、OS レイヤーのパッケージ(例:Debian パッケージ)と実行時ロードされたバイナリファイルを含む。
- フィルタ後の sbomb:メモリに実際にロードされたバイナリファイルのみを保持し、未使用の依存関係を除外。
Guac のクエリとビジュアル化
- GraphQL クエリで sbomb データを探索し、Go パッケージ、Wolfie パッケージ、証明書パッケージなどの依存関係を分析
- ビジュアルツールで sbomb 間の依存関係グラフを表示し、コンテナとパッケージの関連性を可視化
- 特定の sbomb ID のパッケージリストをクエリし、依存関係を分析
Kubescape のモニタリングと設定
- デフォルトではコンテナのモニタリング時間が 3〜6 時間で、その後は 10 分ごとに更新
- 初期モニタリング期間內に異常が検出されない場合、一部の脆弱性が見逃される可能性がある
- モニタリング時間のカスタマイズにより、CPU 負荷とデータの完全性のバランスを調整可能
実行時パッケージ検出の精度
- sbomb 生成器(例:Sift)と eBPF データストリームを用いて検出
- Sift は高品質な sbomb 生成ツールだが、イメージ內に見逃された依存関係を含む可能性がある
- eBPF データストリームは CPU 負荷が高いとイベントが失われる可能性があり、精度に影響
- 系統は不正確なオブジェクトを生成しないようにフィルタリングを停止し、極端な狀況のみに適用
重要な技術統合
- Kubernetes クラスター:コンテナ化環境における sbomb 分析に使用
- CNCF エコシステム:供給チェーン情報管理(SCM)と sbomb 生成の統合
- 供給チェーン情報:sbomb を通じてソフトウェア構成と依存関係を明確化
結論
Kubcape と Guac の統合により、供給チェーン情報の精度とセキュリティ監査の効率が大幅に向上します。特に、実行時データのフィルタリング技術と多源データの統合により、不要な脆弱性情報の削減と正確な依存関係分析が可能になります。Kubernetes 環境での実裝においては、これらの技術の組み合わせが、信頼性の高いセキュリティガードを構築するための重要な要素です。