サンキーグラフでデータフローを可視化する
このガイドでは、セキュリティ エンジニアとアナリストが Google SecOps ダッシュボードのサンキー図を使用して、マルチホップ パス、関係、方向性のあるフローを含むセキュリティ イベントを可視化する方法について説明します。これらの特殊なグラフには、リンク(データポイント間のフローを表す)で接続されたノード(データポイントを表す)が表示されます。各リンクの幅はフローの量または重みに比例するため、主要なデータパス、ボトルネック、異常を特定できます。
一般的なユースケース
サンキー図は、次のユースケースで特に役立ちます。
ネットワーク トラフィックの分析
- 目的: 送信元 IP から特定のポートまたはファイアウォール ルールを介して宛先 IP に流れるトラフィックを可視化します。
- 価値: 数千件の未加工のネットワーク接続ログを分類することなく、環境全体で異常なトラフィックの急増、認可されていない下り(外向き)ポート、潜在的なラテラル ムーブメントを特定できます。
データの外部流出の検出
- 目標: 内部システム(データベースやローカル ストレージなど)から外部の宛先(クラウド ストレージや外部ドメインなど)へのデータの移動を追跡します。
- 値: 信頼されていない外部ドメイン、クラウド サービス、ストレージ バケットへの大量の下り(外向き)フローを視覚的に明らかにし、インサイダー脅威や不正なデータ転送の検出を迅速化します。
認証フロー
- 目標: ユーザーのログイン試行を、送信元国、ID プロバイダ、ターゲット サービス、最終的な認証結果でマッピングします。
- 価値: ロケーションとアプリケーション全体で認証の失敗と成功のパターンを可視化することで、認証情報の不正使用、ブルート フォース キャンペーン、不可能な移動の異常を特定します。
SOC ワークフローのモニタリング
- 目的: アラートの検出から割り当て、最終的な判定またはステータスまで、アラートのトリアージ手順を可視化します。
- 価値: アラートの生成から最終的な解決までの流れを追跡することで、トリアージのボトルネックを特定し、アナリストのワークロードのバランスを取り、検出ルールの忠実度を評価します。
始める前に
サンキーグラフを正常にレンダリングするには、ダッシュボードのクエリと構成が次の技術要件を満たしている必要があります。
- 列数: クエリ レスポンスは、少なくとも 3 つのデータ列を返す必要があります。
- 列の型: データセットには次のものが含まれている必要があります。
- 少なくとも 2 つのカテゴリ列(ノードを表すテキスト文字列など)。
- フロー値または重みを表す数値列(
sumやcountなど)が1 つ以上。
- 有向非巡回グラフ(DAG)構造: サンキー図では、方向性があり、繰り返しのないパスのみがサポートされます。
- セルフループなし: 特定のレベルのソースノードとターゲット ノードは同じにできません(例:
Node A flowing to Node A)。 - 循環依存関係がない: データ関係でループを形成することはできません(
Node A flowing to Node B with Node B flowing back to Node Aなど)。
- セルフループなし: 特定のレベルのソースノードとターゲット ノードは同じにできません(例:
サンキーグラフを設定する
カスタム ダッシュボードでサンキーグラフを作成して構成するには:
- Google SecOps でカスタム ダッシュボードを開き、[追加] > [ビジュアリゼーション] をクリックします。
- 必要な列を返すクエリ(送信元 IP、宛先 IP、イベント数を返す YARA-L 2.0 クエリなど)を実行します。
- 右側の [グラフの構成] パネルで、[サンキー] グラフの種類を選択します。
- [データ設定] で、最初のフローレベルのフィールドをマッピングします。
- ソースノード: フローの起点となる列を選択します。
- ターゲット ノード: フローの宛先を表す列を選択します。
- 値: リンクの量または重みを表す数値列を選択します。
- (省略可)マルチレベルのパスを構築するには、[レベルを追加] をクリックして、次のホップのソース、ターゲット、値の各フィールドを構成します。1 つのサンキー図に追加できるレベルは 5 つまでです。
- [保存] をクリックして、グラフタイルをダッシュボードに追加します。
インタラクティブ機能
サンキー図には、次のインタラクティブ機能があります。
- カーソルを合わせたときの詳細: リンクにカーソルを合わせると、ソースとターゲットの間を流れるボリューム(重み)の詳細が表示されます。ノードにカーソルを合わせると、合計の受信量と送信量が表示されます。
- ドリルダウン: 特定のノードまたはフローリンクをクリックして、コンテキスト メニューを開きます。ドリルダウン アクションを実行して、選択したノードまたはパスウェイに基づいて、未加工データに対してフィルタされたクエリを実行できます。
サンキーグラフの YARA-L 2.0 クエリの例
このセクションでは、ダッシュボード グラフでサンキー図を作成するために使用できる正確なサンプルをいくつか紹介します。
最適な結果を得るには、カーディナリティの高いフィールドをカテゴリ(サブネット、国、アセット カテゴリ、ファイアウォール アクションなど)にグループ化するか、クエリをフィルタしてキー値(特定のポートなど)のみに焦点を当てます。
ログ取り込みフローの可視化
このクエリは、未加工のログタイプから、それぞれのセキュリティ ベンダー、取り込まれる特定のプロダクトまでのログ パイプライン フローを可視化します。
metadata.log_type != ""
$log_type = metadata.log_type
$vendor = metadata.vendor_name
$product = metadata.product_name
match:
$log_type, $vendor, $product
outcome:
$ingested_count = count(metadata.id)
構成マッピング:
| ソースノード | ターゲット ノード | 値 | |
|---|---|---|---|
| レベル 1 | $log_type | $vendor | $ingested_count |
| レベル 2 | $vendor | $product | $ingested_count |
親プロセスから子プロセスへの実行チェーン
このクエリは、プロセス実行の階層を可視化し、ターゲット バイナリを実行する親プロセスと、その結果として発生するセキュリティ アクションを追跡します。
metadata.event_type = "PROCESS_LAUNCH"
$parent_process = principal.process.parent_process.file.full_path
$target_process = principal.process.file.full_path
$action = security_result.action
match:
$parent_process, $target_process, $action
outcome:
$execution_count = count(metadata.id)
構成マッピング:
| ソースノード | ターゲット ノード | 値 | |
|---|---|---|---|
| レベル 1 | $parent_process | $target_process | $execution_count |
| レベル 2 | $target_process | $action | $execution_count |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。