高度な BigQuery Export を使用する
このドキュメントでは、高度な BigQuery エクスポート機能を使用して、BigQuery で Google SecOps データにアクセスして使用する方法について説明します。Enterprise Plus をご利用のお客様は、この機能を使用して、フルマネージドのストリーミング データ パイプラインを介してセキュリティ データにほぼリアルタイムでアクセスできます。この機能は、セキュリティ オペレーションにおけるデータ レイテンシという重要な課題の解決に役立ち、脅威の検出と対応をより迅速かつ効果的に行うことができます。
始める前に
以下のポイントをご確認のうえ、利用資格要件と必要な対応を特定していただくようお願いいたします。
Enterprise Plus をご利用のお客様のみ: この機能は、Google SecOps Enterprise Plus をご利用のお客様のみが対象です。その他のすべてのお客様については、セルフマネージド Google Cloud プロジェクトで BigQuery へのデータ エクスポートを構成するをご覧ください。
機能の有効化が必要: この機能はリクエストに応じて有効になります。組織の Google SecOps インスタンスで初期構成が必要になる場合があります。必要に応じて、Google SecOps の担当者に連絡して、機能が有効になっていることを確認します。
移行に関するアラート: この機能を有効にすると、BigQuery の Google SecOps データで説明されている古いメソッドがオーバーライドされます。Advanced BigQuery Export への移行期間中は、古いパイプラインを有効な状態に保ちます。この二重運用は、中断することなく新機能に移行できるように設計されています。アカウントの古いエクスポート パイプラインが無効になる前に通知が届きます。
機能の概要
Advanced BigQuery Export は、安全な Google 管理の BigQuery プロジェクトで、Unified Data Model(UDM)イベント、ルール検出、侵害の指標(IoC)の一致など、重要な Google SecOps データセットを自動的にプロビジョニングして管理します。このデータには、BigQuery のリンクされたデータセットを介して安全な読み取り専用アクセス権が付与されます。このデータセットは、独自の Google Cloud プロジェクトに直接表示されます。この機能を使用すると、セキュリティ データをローカルに保存されているかのようにクエリできますが、データ パイプラインやストレージの管理のオーバーヘッドは発生しません。
Google SecOps は、次のカテゴリのセキュリティ データを BigQuery にエクスポートします。
- UDM イベント レコード: お客様が取り込んだログデータから作成された UDM レコード。これらのレコードにはエイリアス情報が追加されます。
- ルールの一致(検出): ルールが 1 つ以上のイベントと一致するインスタンス。
- IoC の一致: IoC フィードに一致するイベントのアーティファクト(ドメイン、IP アドレスなど)。これには、グローバルなフィードとお客様固有のフィードからの一致が含まれます。
- 取り込み指標: 取り込まれたログ行の数、ログから生成されたイベントの数、ログが解析できなかったことを示すログエラーの数などの統計情報。
- エンティティ グラフとエンティティの関係: エンティティとそのエンティティと他のエンティティとの関係の説明。
主なメリット
Advanced BigQuery Export の主なメリットは次のとおりです。
- ほぼリアルタイムのデータ鮮度: ストリーミング アーキテクチャにより、取り込み後数分以内にセキュリティ データをクエリできるようになります。UDM イベント、ルール検出、IoC の一致は、5 ~ 10 分の遅延で利用できます。
- シンプルで予測可能な費用モデル: Google SecOps は、マネージド BigQuery プロジェクト内のすべてのデータ取り込みとストレージの費用をカバーします。組織は、クエリの実行時に発生する BigQuery 分析費用のみを負担します。
- メンテナンス不要のデータアクセス: 基盤となるインフラストラクチャは Google によってフルマネージドされるため、チームはデータ エンジニアリングではなくデータ分析に集中できます。
一般的なユースケース
高度な BigQuery エクスポートは、セキュリティ アナリスト、脅威ハンター、データ サイエンティスト、セキュリティ エンジニア向けに設計されています。これらのユーザーは、アドホック調査、カスタム分析、ビジネス インテリジェンス ツールとの統合のために、最新のセキュリティ データに直接アクセスして高いパフォーマンスを実現する必要があります。
Advanced BigQuery Export の一般的なユースケースは次のとおりです。
- BigQuery でアドホック クエリを直接実行します。
- Microsoft Power BI などのビジネス インテリジェンス ツールを使用して、ダッシュボード、レポート、分析を作成します。
- Google SecOps のデータをサードパーティのデータセットと結合します。
アーキテクチャ
高度な BigQuery エクスポート アーキテクチャでは、継続的なストリーミング パイプラインが使用されます。Google SecOps インスタンスのデータは、高スループットの BigQuery Storage Write API を使用して、Google が管理する安全なテナント プロジェクトに push されます。
Google SecOps は、BigQuery 共有を使用して安全なデータ リスティングを作成し、アクセス権を付与します。BigQuery の [エクスプローラ] ペインで、 Google Cloud プロジェクトがこのリスティングに自動的に登録され、secops_linked_data
リンクされたデータセットとして表示されます。
このモデルは、強力なデータ分離をサポートしながら、シームレスな読み取り専用クエリ アクセスを提供します。
高度な BigQuery Export を使用する
このセクションでは、BigQuery で Google SecOps データにアクセスして使用する方法について説明します。
主な用語と概念
高度な BigQuery Export の主な用語とコンセプトは次のとおりです。
- リンク済みデータセット: 読み取り専用の BigQuery データセット。別のプロジェクトの共有データセットへのシンボリック リンクまたはポインタとして機能します。これにより、データをコピーせずにクエリを実行し、データ プロバイダが物理ストレージを管理しながら安全なアクセスを提供できます。
- BigQuery Sharing: 組織が BigQuery データセットなどのデータと分析アセットを内部と外部の両方で安全に共有できるようにする Google Cloud サービス。
- テナント プロジェクト: Google SecOps が所有および管理する Google Cloud プロジェクト。このプロジェクトは、エクスポートされたセキュリティ データが物理的に保存および管理される場所です。このプロジェクトに直接アクセスする権限がありません。
- お客様のプロジェクト: 組織が所有し、Google SecOps インスタンスにリンクする Google Cloud プロジェクト。これは、リンクされたデータセットが表示され、クエリを実行して分析費用が発生するプロジェクトです。
- プロジェクト ID: プロジェクトのグローバルに一意の識別子。
- 統合データモデル(UDM): 数百ものベンダー製品から取得したセキュリティ テレメトリー データを一貫した形式に解析して正規化するための、Google の拡張可能な標準スキーマ。
システムをセットアップする
高度な BigQuery エクスポートを使用するようにシステムを設定し、データのクエリを開始するには、次の手順に沿って操作します。
- ライセンスを確認する: 組織に Google SecOps Enterprise Plus ライセンスがあることを確認します。
- プロジェクトを特定する: Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
- リンクされたデータセットを見つける: BigQuery コンソールで、[エクスプローラ] ペインを使用してプロジェクトのリソースに移動します。
secops_linked_data
という名前のリンクされたデータセットが表示されます。このデータセットは、Google SecOps によって管理されるライブ セキュリティ データへの読み取り専用ポインタです。 Identity and Access Management(IAM)権限を確認する: データをクエリするには、ユーザーまたはサービス アカウントに、プロジェクトに対する次の IAM ロールが付与されている必要があります。
roles/bigquery.dataViewer
roles/bigquery.jobUser
これらのロールにより、ユーザー(セキュリティ アナリストやデータ コンシューマーなど)は、リンクされたデータセット内のデータをクエリし、プロジェクト内で BigQuery ジョブを実行できます。
テストクエリを実行する: BigQuery SQL ワークスペースを開き、基本的なクエリを実行して、アクセスが正しく構成されていることを確認します。次のコード スニペットを使用できます(PROJECT_ID は実際の Google Cloud プロジェクト ID に置き換えます)。
SELECT * FROM `PROJECT_ID.secops_linked_data.events` LIMIT 10;
BigQuery データをクエリする
BigQuery でクエリを直接実行することも、Microsoft Power BI などのビジネス インテリジェンス ツールを BigQuery に接続することもできます。
クエリの詳細については、以下をご覧ください。
- BigQuery でのクエリへのアクセスと実行について、クエリを実行するを開き、インタラクティブ クエリを実行する方法とバッチクエリを実行する方法を確認する。
- パーティション分割テーブルをクエリする方法について、パーティション分割テーブルをクエリするで確認する。
BigQuery のデータ保持期間
BigQuery のデータの保持期間は、Google SecOps テナントに構成されたデータ保持期間と同じです。BigQuery のデータの保持ポリシーをカスタマイズするための個別の構成可能な設定はありません。データは、テナントの保持期間を過ぎると、BigQuery テーブルから自動的に削除されます。
リンク済みデータセット
リンクされたデータセットには複数のテーブルが含まれており、それぞれが異なるタイプのセキュリティ データに対応しています。
次の表に、使用可能なデータセット、ターゲット データの更新頻度、データの整合性を確保するために使用される主キーの概要を示します。
データセット名 | 説明 | 予想される最適な鮮度 | 重複除去の主キー |
---|---|---|---|
events |
UDM スキーマで正規化されたセキュリティ イベント。 スキーマについては、Google SecOps のイベント スキーマをご覧ください。 |
5 分未満 | metadata.id (文字列表現) |
rule_detections |
Google SecOps 検出エンジンのルールによって生成された検出。 スキーマについては、Google SecOps でアラートと IoC を表示するをご覧ください。 |
5 分未満 | なし |
ioc_matches |
UDM イベントで見つかった IoC の一致。 スキーマについては、Google SecOps でアラートと IoC を表示するをご覧ください。 |
5 分未満 | なし |
entity_graph |
エンティティ(ユーザー、アセット)とその関係に関するコンテキスト データ。 スキーマについては、Google SecOps でイベントとエンティティ データを拡充するをご覧ください。 |
約 4 時間 (バッチ) |
なし |
ingestion_metrics |
ログ取り込み量とデータソースに関する統計情報。 スキーマについては、取り込み指標スキーマと Google SecOps の Looker と BigQuery の取り込み指標リファレンスをご覧ください。 |
約 5 分 | なし (追記専用の時系列) |
サンプルクエリ
次の例は、一般的なセキュリティ ユースケースのデータセットをクエリする方法を示しています。PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えてください。
例 - 過去 24 時間に特定の IP アドレスから行われたすべてのネットワーク接続を検索する
このクエリは、events テーブルで、不審な IP アドレスからの最近のネットワーク アクティビティを検索します。
SELECT
metadata.product_event_type,
principal.ip,
target.ip,
network.application_protocol
FROM
`PROJECT_ID.secops_linked_data.events`
WHERE
principal.ip = '192.0.2.1'
AND metadata.event_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR);
例 - 最も頻繁に検出された上位 10 個のルールをカウントする
rule_detections テーブルに対するこのクエリは、環境内で検出された最も一般的な脅威またはポリシー違反を特定するのに役立ちます。
SELECT
rule_name,
COUNT(*) AS detection_count
FROM
`PROJECT_ID.secops_linked_data.rule_detections`
WHERE
detection.id IS NOT NULL
GROUP BY
1
ORDER BY
2 DESC
LIMIT
10;
ベスト プラクティス
高度な BigQuery エクスポートでクエリを実行する際のベスト プラクティスを以下に示します。
- 費用の最適化:
SELECT *
を回避します。クエリで必要な列のみを指定して、スキャンされるデータ量を減らし、クエリ費用を削減します。 - パーティション フィルタを使用する: events テーブルは
hour_time_bucket
列でパーティショニングされています。この列には常にWHERE
句フィルタを含めて、クエリを可能な限り最小の時間枠に制限します。これにより、パフォーマンスが大幅に向上し、コストが削減されます。 - 効率的なクエリを作成する: UDM スキーマは幅広く、スパースです。特定のイベントタイプを効率的にフィルタするには、関連するフィールドで
WHERE... IS NOT NULL
を使用します。たとえば、DNS クエリのみを検索するには、WHERE network.dns.questions.name IS NOT NULL
をフィルタします。 - クエリを検証する: クエリを実行する前に、BigQuery UI のクエリ バリデータを使用します。クエリ検証ツールはデータ処理の見積もりを提供し、予期せず大規模でコストのかかるクエリを回避するのに役立ちます。
既知の制限事項
高度な BigQuery Export 機能の既知の制限事項は次のとおりです。
- エンティティ グラフのレイテンシ:
entity_graph
データセットはバッチ処理を使用してエクスポートされ、データの鮮度は約 4 時間です。 - 顧客管理の暗号鍵(CMEK): Google SecOps インスタンスで CMEK を有効にしているお客様は、高度な BigQuery エクスポートを利用できません。
- UDM スキーマの列: BigQuery では、テーブルあたりの列の数が 10,000 に制限されています。UDM スキーマには 27,000 を超えるフィールドが含まれており、データがまばらに配置されています。エクスポート パイプラインでは、特定のイベントの入力された列のみがインテリジェントに含められるため、ほとんどのお客様は上限を大幅に下回ります。Google SecOps は列の使用状況をモニタリングし、このしきい値に近づくと、テナント プロジェクトの制限の引き上げを事前にリクエストします。
- 保持ポリシー: BigQuery にエクスポートされたすべてのセキュリティ データのデータ保持期間は、Google SecOps プロジェクトのデータ保持期間と自動的に同期され、個別に構成することはできません。
- 遅延して到着したデータ: まれに、データが処理パイプラインに大幅に遅れて到着した場合、データが正しく統合されない可能性があります。このシステムは、この問題を最小限に抑えるように設計されていますが、結果整合性に依存する高スループットのストリーミング システムの既知の特性です。
- 拡充されたデータ: 1 回限りの拡充された UDM イベントのみが対象となります。再エンリッチされた UDM イベントは、テナント プロジェクトの BigQuery インスタンスにエクスポートされません。
- 過去のデータ: データ エクスポートは、Advanced BigQuery Export が有効になった時点から開始されます。古いデータは既存のプロジェクトで引き続きアクセスできます。高度な BigQuery エクスポートを有効にする前にエクスポートされたデータをクエリするには、両方のプロジェクトのデータを結合する単一のクエリを使用するか、それぞれのプロジェクトで2 つの別々のクエリを実行する(古いデータセット用と新しいデータセット用)必要があります。
トラブルシューティングとサポート
次の表に、発生する可能性のある一般的な問題の解決策を示します。
観測された症状 | 考えられる原因 | 推奨される対処方法 |
---|---|---|
クエリが Access Denied: User does not have permission. で失敗する |
ユーザーまたはサービス アカウントに、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトに対する必要な BigQuery IAM ロールがありません。 | プリンシパルに BigQuery データ閲覧者と BigQuery ジョブユーザーのロールを付与します。gcloud projects get-iam-policy YOUR_PROJECT_ID --flatten="bindings.members" --format='table(bindings.role)' --filter="bindings.members:user:your-user@example.com" を使用して確認します |
secops_linked_data データセットが BigQuery プロジェクトに表示されません。 |
1. 正しい Google Cloud プロジェクトが選択されていません。 2. 組織が Enterprise Plus 階層に属していない。 3. お客様の組織は Enterprise Plus 階層ですが、Google SecOps インスタンスで Advanced BigQuery Export が有効になっていません。 |
1. Google Cloud コンソールで、Google SecOps インスタンスにリンクされているプロジェクトが選択されていることを確認します。 2. Google SecOps ライセンスの階層を確認するには、Google の担当者にお問い合わせください。 3. Google SecOps の担当者に連絡して、Google SecOps インスタンスで BigQuery の高度なエクスポートを有効にするよう依頼します。 |
クエリ結果に重複するイベントが表示される。 | これは、高スループット ストリームでデータが遅れて到着したことが原因である可能性があります。システムは at-least-once 配信セマンティクスを使用します。 | 重複が疑われる場合は、データセットに記載されている主キーでクエリをグループ化して、カウントを取得します。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。