高度な BigQuery Export でデータをストリーミングする
このドキュメントでは、Advanced BigQuery Export 機能を使用して、BigQuery で Google SecOps データにアクセスして使用する方法について説明します。Enterprise Plus のお客様は、この機能を使用して、フルマネージドのストリーミング データ パイプラインを介して、ほぼリアルタイムでセキュリティ データにアクセスできます。この機能は、セキュリティ運用におけるデータ レイテンシという重要な課題に対処し、よりタイムリーで効果的な脅威の検出と対応を可能にします。
始める前に
資格要件と必要な対応を定義する以下の点を確認してください。
- Enterprise Plus をご利用のお客様のみ: この機能は、Google SecOps Enterprise Plus をご利用のお客様のみが利用できます。その他のすべてのお客様については、セルフマネージド BigQuery プロジェクトにエクスポートするをご覧ください。
- 機能の有効化が必要: この機能はリクエストに応じて有効になり、組織の Google SecOps インスタンスで初期構成が必要になる場合があります。必要に応じて、Google SecOps の担当者に連絡して、機能が有効になっていることを確認します。
- データ移行: この機能を有効にすると、Google が管理する BigQuery プロジェクトへのエクスポートで説明されているように、Google が管理する BigQuery プロジェクトへの既存のエクスポートに加えて、Google SecOps インスタンスの新しい BigQuery テナント プロジェクトへのデータのエクスポートが開始されます。この二重運用により、中断することなく新機能に移行できます。古いエクスポート パイプラインがアカウントで無効になる前に、通知が届きます。
- VPC Service Controls: 高度な BigQuery エクスポートは、VPC Service Controls の境界内で動作できます。詳細については、VPC Service Controls を構成するをご覧ください。
- 顧客管理の暗号鍵(CMEK): 高度な BigQuery Export は、Google SecOps インスタンスで CMEK を有効にしているお客様が利用できます。詳細については、Google SecOps の CMEK をご覧ください。VPC Service Controls で CMEK を使用する場合は、Google SecOps 用に VPC Service Controls を構成するで推奨事項と手順をご覧ください。
機能の概要
高度な BigQuery Export は、統合データモデル(UDM)イベント、ルール検出、エンティティ グラフ、侵害インジケーター(IoC)の一致など、Google SecOps の重要なデータセットを、Google が管理する安全な BigQuery プロジェクトで自動的にプロビジョニングして管理します。このデータには、BigQuery のリンクされたデータセットを介して安全な読み取り専用アクセス権が付与されます。このデータセットは、独自の Google Cloud プロジェクトに直接表示されます。この機能により、セキュリティ データをローカルに保存されているかのようにクエリできます。データ パイプラインやストレージを管理するオーバーヘッドは発生しません。
Google SecOps は、次のカテゴリのセキュリティ データを BigQuery にエクスポートします。
- UDM イベント レコード: お客様が取り込んだログデータから作成された UDM レコード。これらのレコードにはエイリアス情報が追加されます。
- ルールの一致(検出): ルールが 1 つ以上のイベントと一致するインスタンス。
- IoC の一致: IoC フィードに一致するイベントのアーティファクト(ドメイン、IP アドレスなど)。これには、グローバルなフィードとお客様固有のフィードからの一致が含まれます。
- 取り込み指標: 取り込まれたログ行の数、ログから生成されたイベントの数、ログが解析できなかったことを示すログエラーの数などの統計情報。
- エンティティ グラフとエンティティの関係: エンティティと、他のエンティティとの関係の説明。
主なメリット
Advanced BigQuery Export の主なメリットは次のとおりです。
- ほぼリアルタイムのデータの更新速度: ストリーミング アーキテクチャにより、セキュリティ データは取り込みから数分以内にクエリ可能になります。UDM イベント、ルール検出、IoC の一致は、5 ~ 10 分の遅延で利用できます。
- シンプルで予測可能な費用モデル: Google SecOps は、マネージド BigQuery プロジェクト内のすべてのデータの取り込みとストレージの費用をカバーします。組織は、クエリの実行時に発生する BigQuery 分析費用のみを負担します。
- メンテナンス不要のデータアクセス: 基盤となるインフラストラクチャは Google によってフルマネージドであるため、チームはデータ エンジニアリングではなくデータ分析に集中できます。
- データの完全性と重複除去: セキュリティ データは、最初の取り込み後に頻繁に更新または再拡充されます。この機能では、きめ細かいデータ操作言語(DML)マージを使用して、レコードをその場で更新します。複雑な SQL 重複除去ルーティンを記述することなく、クリーンで重複除去されたデータを受け取ることができます。
- シームレスな MSSP サポート(ハブアンドスポーク): マネージド セキュリティ サービス プロバイダ(MSSP)は、単一の一元化されたハブ プロジェクトから、顧客のリンクされたデータセットをプログラムでサブスクライブすることで、複数の顧客テナントにわたる分析を効率的に管理できます。
- 組み込みのコンプライアンス: この機能は、VPC Service Controls、顧客管理の暗号鍵(CMEK)、データ所在地(DRZ)をネイティブにサポートしています。お客様向けの監査ログ(アクセスの透明性)は、Federated Resource Identification Service(FRIS)を使用して Cloud Logging ワークスペースに直接配信されます。
一般的なユースケース
Advanced BigQuery Export は、アドホック調査、カスタム分析、ビジネス インテリジェンス ツールとの統合のために、最新のセキュリティ データに直接アクセスして高パフォーマンスを実現する必要があるセキュリティ アナリスト、脅威ハンター、データ サイエンティスト、セキュリティ エンジニア向けに設計されています。
Advanced BigQuery Export の一般的なユースケースは次のとおりです。
- BigQuery でアドホック クエリを直接実行します。
- Microsoft Power BI などの独自のビジネス インテリジェンス ツールを使用して、ダッシュボード、レポート、分析を作成します。
- Google SecOps データをサードパーティのデータセットと結合する。
アーキテクチャ
高度な BigQuery エクスポート アーキテクチャは、継続的なストリーミング パイプラインを使用します。Google SecOps インスタンスのデータは、高スループットの BigQuery Storage Write API(gRPC)を使用して、Google が管理する安全なテナント プロジェクトに push されます。
Google SecOps は、BigQuery Sharing を使用して安全なデータリスティングを作成し、アクセスを提供します。BigQuery の [エクスプローラ] ペインで、 Google Cloud プロジェクトがこのリスティングに自動的に登録され、secops_linked_datalake リンクされたデータセットとして表示されます。
このモデルは、強力なデータ分離をサポートしながら、シームレスな読み取り専用クエリアクセスを提供します。
主な用語
高度な BigQuery エクスポートに関する主な用語と概念は次のとおりです。
- テナント プロジェクト: Google SecOps が所有、管理する Google Cloud プロジェクト。このプロジェクトは、エクスポートされたセキュリティ データが物理的に保存され、管理される場所です。このプロジェクトに直接アクセスする権限がありません。
- BYOP(Bring Your Own Project): 組織が所有し、Google SecOps インスタンスにリンクする Google Cloud プロジェクト。これは、リンクされたデータセットが表示され、クエリを実行して分析費用が発生するプロジェクトです。
- プロジェクト ID: Google SecOps インスタンスにリンクされている Google Cloud プロジェクトのグローバルに一意の識別子。
- リンク済みデータセット: 別のプロジェクトの共有データセットへのシンボリック リンクまたはポインタとして機能する読み取り専用の BigQuery データセット。データをコピーせずにクエリを実行できるため、データ プロバイダが物理ストレージを管理しながら、安全なアクセスを提供できます。
- きめ細かい DML(FGDML): 高度な BigQuery エクスポートがアップサート(更新と挿入)を実行するために使用する自動化されたバックエンド プロセス。イベントが遅れて到着した場合や、再拡充された場合、システムは重複を作成するのではなく、固有識別子(
metadata.idなど)に基づいて既存の行を更新します。 - 統合データモデル(UDM): 何百ものベンダー製品から取得したセキュリティ テレメトリー データを解析して一貫した形式に正規化するための、Google の拡張可能な標準スキーマ。
- マネージド セキュリティ サービス プロバイダ(MSSP): Google Cloud 認定 MSSP は、進化し続けるサイバーセキュリティの脅威に対する防御を強化するための包括的なツールと専門知識を提供します。
システムをセットアップする
高度な BigQuery Export を使用するには、まずシステムを設定する必要があります。環境と要件に応じて、次のいずれかのセクションの手順に沿って操作します。
デフォルト設定
高度な BigQuery Export を使用してデータのクエリを開始するには、次の手順に沿ってシステムを設定します。
- ライセンスを確認する: 組織に Google SecOps Enterprise Plus ライセンスがあることを確認します。
- プロジェクトを特定する: Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
- リンクされたデータセットを見つける: BigQuery コンソールで、[エクスプローラ] ペインを使用してプロジェクトのリソースに移動します。
secops_linked_datalakeという名前のリンクされたデータセットが表示されます。このデータセットは、Google SecOps によって管理されるライブ セキュリティ データへの読み取り専用のポインタです。 Identity and Access Management(IAM)権限を確認する: データをクエリするには、ユーザーまたはサービス アカウントに、プロジェクトに対する次の IAM ロールが付与されている必要があります。
roles/bigquery.dataViewer: 組織のエンドユーザーまたは BI ツールが、リンクされたデータセット ビューに対して SQL クエリを実行するために必要です。roles/bigquery.jobUser: 組織のエンドユーザーまたは BI ツールが、リンクされたデータセット ビューに対して SQL クエリを実行するために必要です。Chronicle API Admin: MSSP サブスクリプションを管理するために Dataplane API(ProvisionPartnerSubscriptionなど)を実行するには、Google SecOps 内で必要です。
これらのロールにより、ユーザー(セキュリティ アナリストやデータ コンシューマーなど)は、リンクされたデータセット内のデータをクエリし、プロジェクト内で BigQuery ジョブを実行できます。
テストクエリを実行する: BigQuery SQL ワークスペースを開き、基本的なクエリを実行して、アクセスが正しく構成されていることを確認します。次のコード スニペットを使用できます。
SELECT * FROM `PROJECT_ID.secops_linked_datalake.events` LIMIT 10;PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。
VPC Service Controls の境界内で高度な BigQuery エクスポートを設定する
VPC Service Controls 境界内で高度な BigQuery エクスポートを設定するには、特定の上り(内向き)ルールを構成する必要があります。このルールにより、必要な Google SecOps サービス アカウントが、境界で保護されたプロジェクトの BigQuery と関連サービスを操作できるようになります。詳細な手順と詳細については、Google Security Operations 用に VPC Service Controls を構成するをご覧ください。
VPC Service Controls の境界内に高度な BigQuery Export を設定するには、次の上り(内向き)ルールを構成します。
- ingressFrom: identities: - serviceAccount:malachite-advanced-bq-exporter@system.gserviceaccount.com - serviceAccount:malachite-data-export-service@system.gserviceaccount.com sources: - accessLevel: "*" ingressTo: operations: - serviceName: analyticshub.googleapis.com methodSelectors: - method: "*" - serviceName: bigquery.googleapis.com methodSelectors: - method: "*" resources: - projects/PROJECT_NUMBERPROJECT_NUMBERは、Google SecOps にリンクされた Google Cloud プロジェクト番号に置き換えます。
MSSP の場合 - サブテナントの BigQuery データへの一元化されたアクセスを設定する
MSSP としてプロビジョニングされている場合は、Google SecOps データプレーン API を使用して、中央の「ハブ」プロジェクトに BigQuery リンク済みデータセットをプログラムで作成できます。これらのリンクされたデータセットは、顧客(スポーク)の BigQuery データを指しているため、一括表示から複数のテナントに対してクエリを実行できます。このプロセスでは、お客様が MSSP インスタンスにアクセス権を付与する必要があります。
主なメリットは次のとおりです。
- 一元化された可視性: すべての顧客のセキュリティ データを 1 か所で分析します。
- 効率的なワークフロー: クライアント ベース全体で脅威ハンティングとレポート作成を効率化します。
- プログラムによる管理: データアクセスの設定と破棄を自動化します。
前提条件
MSSP
- 中央の「ハブ」として機能する Google Cloud プロジェクト。
- Google SecOps インスタンス。
- ハブ プロジェクトで BigQuery データセットを管理するための適切な IAM 権限。
お客様(サブテナント)
- Google SecOps Enterprise Plus ライセンス。
- Google SecOps インスタンスにリンクされている Google Cloud プロジェクト(BYOP)。
- Google SecOps API アクセスを管理するための適切な IAM 権限。
gcloudCLI がインストールされ、認証されている。
ステップ 1: お客様が MSSP にアクセス権を付与する
お客様は、ProvisionPartnerSubscription API を呼び出して、MSSP の Google SecOps インスタンスに権限を付与できます。Google SecOps は、MSSP の Google SecOps インスタンスにリンクされた MSSP の Google Cloud プロジェクト内に、secops_linked_datalake_<customer_id> 形式の名前で BigQuery リンク データセットを自動的にプロビジョニングします。このデータセットは、お客様の Google SecOps データにリンクしています。
API エンドポイント:
POST
https://chronicle.googleapis.com/v1alpha/projects/CUSTOMER_PROJECT/locations/REGION/instances/CUSTOMER_INSTANCE_ID/bigQueryExport:provisionPartnerSubscription
メソッド
POST
リクエストの本文
空の JSON オブジェクト。
{}
CURL コマンドの例(お客様が実行):
curl -X POST \
-H "Authorization: Bearer ${OAUTH_TOKEN}" \
-H "Content-Type: application/json" \
-d '{}' \
"https://chronicle.googleapis.com/v1alpha/projects/CUSTOMER_PROJECT/locations/REGION/instances/CUSTOMER_INSTANCE_ID/bigQueryExport:provisionPartnerSubscription"
各プレースホルダを次のように置き換えます。
- CUSTOMER_PROJECT: お客様の Google Cloud プロジェクト ID またはプロジェクト番号。プロジェクトの作成と管理をご覧ください。
- REGION: お客様の Google SecOps インスタンスが存在する Google Cloud リージョン(例: us、europe-west2)。リージョンの一覧をご覧ください。
- CUSTOMER_INSTANCE_ID: お客様の Google SecOps インスタンス ID。
レスポンスの本文
定期購入の詳細を含む ProvisionPartnerSubscriptionResponse を返します。
{
"subscriptionDetails": {
"subscription": "projects/SUBSCRIBER_PROJECT_ID/locations/SUBSCRIBER_REGION/subscriptions/SUBSCRIPTION_ID",
"linkedDataset": "string"
}
}
- SUBSCRIBER_PROJECT_ID: サブスクライバー MSSP の Google Cloud プロジェクト ID。
- SUBSCRIBER_REGION: サブスクライバーの Google Cloud プロジェクトが配置されているリージョン。
- SUBSCRIPTION_ID: 既存のサブスクリプションの固有識別子。
ステップ 2: MSSP がテナント間でデータをクエリする
複数の顧客からリンクされたデータセットが(MSSP の) Google Cloud プロジェクトにプロビジョニングされると、標準の BigQuery SQL クエリを使用してデータを分析できます。複数の顧客にまたがってクエリを実行するには、UNION ALL 演算子を使用します。
クエリの例(MSSP がハブ プロジェクトで実行):
SELECT event_type, timestamp
FROM `PARTNER_PROJECT_ID.secops_linked_datalake_CUSTOMER_ID_1.events`
WHERE <your_conditions>
UNION ALL
SELECT event_type, timestamp
FROM `PARTNER_PROJECT_ID.secops_linked_datalake_CUSTOMER_ID_2.events`
WHERE <your_conditions>
-- Add more UNION ALL clauses for other customers
ステップ 3: お客様がアクセスを監査する
お客様は fetchSubscriptions API を呼び出して、データにアクセスしているすべてのアクティブなサブスクリプションと MSSP インスタンスを確認できます。
API エンドポイント
GET https://chronicle.googleapis.com/v1alpha/projects/CUSTOMER_PROJECT/locations/REGION/instances/CUSTOMER_INSTANCE_ID/bigQueryExport:fetchSubscriptions
メソッド
GET
CURL コマンドの例(お客様が実行):
curl -X GET \
-H "Authorization: Bearer ${OAUTH_TOKEN}" \
"https://chronicle.googleapis.com/v1alpha/projects/CUSTOMER_PROJECT/locations/REGION/instances/CUSTOMER_INSTANCE_ID/bigQueryExport:fetchSubscriptions"
各プレースホルダを次のように置き換えます。
- CUSTOMER_PROJECT: お客様の Google Cloud プロジェクト ID またはプロジェクト番号。プロジェクトの作成と管理をご覧ください。
- REGION: お客様の Google SecOps インスタンスが存在する Google Cloud リージョン(us、europe-west2 など)。リージョンの一覧をご覧ください。
- CUSTOMER_INSTANCE_ID: お客様の Google SecOps インスタンス ID。
レスポンスの本文
アクティブな定期購入のリストを含む FetchSubscriptionsResponse を返します。
{
"subscriptions": [
{
"subscription": "projects/SUBSCRIBER_PROJECT_ID/locations/SUBSCRIBER_REGION/subscriptions/SUBSCRIPTION_ID",
"linkedDataset": "string"
}
]
}
- SUBSCRIBER_PROJECT_ID: サブスクライバーの Google Cloud プロジェクト ID。サブスクライバーは、お客様または MSSP のいずれかを参照できます。
- SUBSCRIBER_REGION: サブスクライバーの Google Cloud プロジェクトが配置されているリージョン。
- SUBSCRIPTION_ID: 既存のサブスクリプションの固有識別子。
ステップ 4: お客様がアクセス権を取り消す(必要な場合)
お客様が MSSP のアクセス権を取り消す必要がある場合は、revokePartnerSubscription API を使用できます。この操作により、MSSP のハブ プロジェクトを使用してリンクされたデータセットをクエリする権限が直ちに取り消されます。取り消されたサブスクリプションの ID は無効になります。
API エンドポイント
POST https://chronicle.googleapis.com/v1alpha/projects/CUSTOMER_PROJECT/locations/REGION/instances/CUSTOMER_INSTANCE_ID/bigQueryExport:revokePartnerSubscription
メソッド
POST
リクエストの本文
取り消す定期購入の URI が必要です。これは fetchSubscriptions API 呼び出しから取得されます。
{
"subscriptionUri": "projects/SUBSCRIBER_PROJECT_ID/locations/SUBSCRIBER_REGION/subscriptions/SUBSCRIPTION_ID"
}
CURL コマンドの例(お客様が実行):
# Set subscription details obtained from Fetch Subscriptions
export SUBSCRIBER_PROJECT_ID="partner-byop-project-id"
export SUBSCRIBER_REGION="subscription-location"
export SUBSCRIPTION_ID="subscription-id"
curl -X POST \
-H "Authorization: Bearer ${OAUTH_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"subscriptionUri": "projects/SUBSCRIBER_PROJECT_ID/locations/SUBSCRIBER_REGION/subscriptions/SUBSCRIPTION_ID"
}' \
"https://chronicle.googleapis.com/v1alpha/projects/CUSTOMER_PROJECT/locations/REGION/instances/CUSTOMER_INSTANCE_ID/bigQueryExport:revokePartnerSubscription"
各プレースホルダを次のように置き換えます。
- SUBSCRIBER_PROJECT_ID: サブスクライバーの Google Cloud プロジェクト ID。
- SUBSCRIBER_REGION: サブスクライバーの Google Cloud プロジェクトが配置されているリージョン。
- SUBSCRIPTION_ID: 既存のサブスクリプションの固有識別子。
- CUSTOMER_PROJECT: お客様の Google Cloud プロジェクト ID またはプロジェクト番号。
- REGION: お客様の Google SecOps インスタンスが存在する Google Cloud リージョン。
- CUSTOMER_INSTANCE_ID: お客様の Google SecOps インスタンス ID。
レスポンスの本文
空の JSON オブジェクト。
{}
BigQuery データをクエリする
BigQuery で直接クエリを実行することも、Microsoft Power BI などの独自のビジネス インテリジェンス ツールを BigQuery に接続することもできます。
クエリの詳細については、以下をご覧ください。
- BigQuery でのクエリへのアクセスと実行について、クエリを実行するを開き、インタラクティブ クエリを実行する方法とバッチクエリを実行する方法を確認する。
- パーティション分割テーブルをクエリする方法について、パーティション分割テーブルをクエリするで確認する。
BigQuery テナント プロジェクトのデータ保持期間
BigQuery のデータの保持期間は、Google SecOps テナントに構成されているデータ保持期間と同じです。BigQuery のデータの保持ポリシーをカスタマイズするための個別の構成可能な設定はありません。データは、テナントの保持期間を過ぎると、BigQuery テーブルから自動的に削除されます。
リンク済みデータセット
リンクされたデータセットには、さまざまなタイプのセキュリティ データに対応するテーブルが含まれています。
次の表に、利用可能なデータセット、目標とするデータの更新速度、データの完全性を確保するために使用される固有識別子の概要を示します。
| データセット名 | 説明 | 予想される最適な更新頻度 | 重複除去用の固有識別子 |
|---|---|---|---|
events | UDM スキーマの正規化されたセキュリティ イベント。スキーマの詳細については、Google SecOps イベント スキーマをご覧ください。 | 5 分未満 | id(文字列表現) |
rule_detections | Google SecOps 検出エンジンルールによって生成された検出。 | 5 分未満 | detection.id |
ioc_matches | UDM イベントに対して検出されたセキュリティ侵害インジケーター(IOC)の一致。 | 5 分未満 | day_bucket_seconds、feed_log_type、ioc_type、ioc_value の複合キー |
entity_graph | エンティティ(ユーザー、アセット)とその関係に関するコンテキスト データ。 | 約 4 時間(バッチ) | partition_day、metadata.product_entity_id、metadata.event_metadata.id の複合キー |
ingestion_metrics | ログの取り込み量とデータソースに関する統計情報。 | 約 5 分 | なし(追加専用の時系列) |
entity_enum_value_to_name_mapping | エンティティ グラフの列挙型の数値を文字列値にマッピングします。 | なし | なし |
udm_enum_value_to_name_mapping | UDM イベントの列挙型の数値を文字列値にマッピングします。 | なし | なし |
サンプルクエリ
次の例は、一般的なセキュリティ ユースケースのデータセットをクエリする方法を示しています。
例 - 過去 24 時間に特定の IP アドレスから行われたすべてのネットワーク接続を検索する
このクエリは、不審な IP アドレスからの最近のネットワーク アクティビティをイベント テーブルで検索します。
SELECT
metadata.product_event_type,
principal.ip,
target.ip,
network.application_protocol
FROM
`PROJECT_ID.secops_linked_datalake.events`
WHERE
principal.ip = '192.0.2.1'
AND metadata.event_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR);
- PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。
例 - 最も頻繁に検出された上位 10 個のルールをカウントする
rule_detections テーブルに対するこのクエリは、環境内で検出された最も一般的な脅威やポリシー違反を特定するのに役立ちます。
SELECT
rule_name,
COUNT(*) AS detection_count
FROM
`PROJECT_ID.secops_linked_datalake.rule_detections`
WHERE
detection.id IS NOT NULL
GROUP BY
1
ORDER BY
2 DESC
LIMIT
10;
- PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。
ベスト プラクティス
高度な BigQuery エクスポートでクエリを実行する際のベスト プラクティスを以下に示します。
クエリ費用を最適化する: ストレージは無料ですが、コンピューティング費用はプロジェクトに請求されます。そのため、次のことを行います。
- SELECT * は避けてください。クエリで必要な列のみを指定して、スキャンされるデータ量を減らし、クエリ費用を削減します。
- クエリで BigQuery のパーティショニング(hour_time_bucket パーティション時間列を使用)とクラスタリング(hour_time_bucket、log_type、event_type、id)を活用して、スキャンするデータを減らし、クエリ費用を大幅に削減してください。
パーティション フィルタを使用する: イベント テーブルは hour_time_bucket 列でパーティション分割されます。この列には常に WHERE 句フィルタを含めて、クエリを可能な限り小さい時間枠に制限します。これにより、パフォーマンスが大幅に向上し、コストが削減されます。
効率的なクエリを作成する: UDM スキーマは幅が広く、スパースです。特定のイベントタイプを効率的にフィルタするには、WHERE... を使用します。関連するフィールドで IS NOT NULL を使用します。たとえば、DNS クエリのみを検索するには、WHERE network.dns.questions.name IS NOT NULL をフィルタします。
クエリを検証する: クエリを実行する前に、BigQuery UI のクエリ検証ツールを使用します。クエリ検証ツールは、処理されるデータのサイズを見積もるため、予期せず大規模でコストのかかるクエリを回避できます。
列挙型マッピング テーブルを使用する: Advanced BigQuery Export には、entity_enum_value_to_name_mapping テーブルと udm_enum_value_to_name_mapping テーブルが含まれています。これらを使用してイベントを結合すると、クエリに手動変換ロジックを記述することなく、数値の列挙値を人が読める文字列に変換できます。
監査ロギングの統合: 高度な BigQuery Export は、Federated Resource Identification Service(FRIS)と統合されています。Google の担当者がマネージド テナント プロジェクトにアクセスすると、Google のアクセスの透明性機能を使用するお客様向けの監査ログが BYOP Cloud Logging ワークスペース内にネイティブに配信されます。
既知の制限事項
高度な BigQuery Export 機能の既知の制限事項は次のとおりです。
- エンティティ グラフのレイテンシ: entity_graph データセットはバッチ処理を使用してエクスポートされ、データの鮮度は約 4 時間です。
- UDM スキーマ列の上限: BigQuery には、テーブルあたり 10,000 列というソフトリミットがあります。UDM スキーマには 27,000 を超えるフィールドが含まれており、データがまばらに入力されています。エクスポート パイプラインでは、特定のイベントに入力された列のみがインテリジェントに含められるため、ほとんどのお客様は上限を大幅に下回ります。Google SecOps は列の使用状況をモニタリングし、このしきい値に近づくと、テナント プロジェクトの上限の引き上げをプロアクティブにリクエストします。
- 保持期間は構成できません: BigQuery にエクスポートされたすべてのセキュリティ データの保持期間は、Google SecOps プロジェクトのデータ保持期間と自動的に同期され、個別に構成することはできません。
- SOAR データはサポートされていません: Google Security Operations SOAR(search_everything_db)のデータは、高度な BigQuery Export ではサポートされていません。
- クロスリージョン フェデレーションはサポートされていません: ハブアンドスポーク MSSP サブスクリプションは、同じリージョン内でサポートされています。クロスリージョン連携(米国からヨーロッパなど)はサポートされていません。
- 重複するイベントが発生する可能性がある(確率 1% 未満): システムは DML マージを使用して重複除去を自動的に処理しますが、分散ストリーミングの性質上、バックグラウンド マージが完了する前に、エッジケースの取り込みウィンドウで重複するイベントが発生する可能性は低い(1% 未満)です。
- 過去のデータにはアクセスできますが、特定の方法が必要です。データのエクスポートは、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_datalake データセットが BigQuery プロジェクトに表示されません。 | 1. 正しい Google Cloud プロジェクト が選択されていない。2. お客様の組織は Enterprise Plus 階層ではありません。 3. お客様の組織は Enterprise Plus 階層ですが、Google SecOps インスタンスで高度な BigQuery Export が有効になっていません。 | 1. Google Cloud コンソールで、Google SecOps インスタンスにリンクされているプロジェクトが選択されていることを確認します。 2. Google の担当者に連絡して、Google SecOps ライセンスの階層を確認します。 3. Google SecOps の担当者に連絡して、Google SecOps インスタンスで Advanced BigQuery Export を有効にするよう依頼します。 |
ProvisionPartnerSubscription または FetchSubscriptions の権限エラーで API 呼び出しが失敗する | 呼び出し元の ID に必要な権限がない。 | 呼び出しを行うサービス アカウントまたはユーザーに、ハブ インスタンス リソースに対する権限を含む Chronicle API 管理者の IAM ロールが付与されていることを確認します。 |
| カスタム列がないか、スキーマが一致していない | 新しいログタイプまたは深くネストされた UDM フィールドが取り込まれた。 | 高度な BigQuery Export では、動的スキーマ更新が使用されます。新しい UDM フィールドが入力されると、システムはスキーマの不一致を自動的に検出し、一時的に停止して BigQuery スキーマを更新し、挿入を再試行します。なんらかのご対応を行っていただく必要はありません。 |
よくある質問
以下のセクションでは、よくある質問について説明します。
高度な Google SecOps Export を使用するために、既存のレガシー BigQuery SQL クエリを変更する必要がありますか?
いいえ。100% の下位互換性を維持するため、Google SecOps は、以前の Google SecOps エクスポート機能のテーブルのスキーマと完全に一致するリンクされたデータセットのビュー(events、ioc_matches など)を公開します。
Advanced BigQuery Export のデータ保持期間を調整できますか?
いいえ。高度な BigQuery Export のデータ保持期間は、Google SecOps のデータ保持ポリシーを直接反映します。Google SecOps でデータが期限切れになると、自動的に期限切れになり、BigQuery テナント プロジェクトから削除されます。
バックエンドの DML 更新と重複除去に対して料金は発生しますか?
いいえ。バックエンド ストレージ、ストリーミング挿入オペレーション、きめ細かい DML コンピューティングの費用はすべて Google SecOps が負担します。BYOP で明示的に実行したクエリに対してのみ料金が発生します。
この機能は Google SecOps の Standard ティアまたは Enterprise ティアで利用できますか?
いいえ。高度な BigQuery エクスポート(マネージド ストレージとストリーミング)は、Google SecOps Enterprise Plus 階層専用のプレミアム機能です。Standard と Enterprise のお客様は、Bring Your Own BigQuery(BYOBQ)モデルを使用できます。このモデルでは、お客様が BigQuery プロジェクトを提供し、ストレージとコンピューティングの両方の費用を負担します。
高度な BigQuery エクスポートのデータと Google Security Operations UI に表示される統計情報で、一時的にカウントに違いが生じるのはなぜですか?
高度な BigQuery Export パイプラインはほぼリアルタイムのストリーミングであるため、一時的な不一致が発生することがあります。主な理由は次のとおりです。
遅れて到着するデータ: エクスポート パイプラインは、高スループット向けに設計されています。ほとんどのデータは 5 ~ 10 分以内に BigQuery に表示されます。ただし、ネットワークの遅延やソースシステムの障害により、イベントが処理パイプラインに遅れて到着することがあります。システムはこれらの遅延イベントをマージすることを目指していますが、絶対的な最新の状態を反映するライブ UI 統計が、継続的な更新が行われている BigQuery データと異なる短い期間が存在する可能性があります。
データの再拡充: Google SecOps は、最新の脅威インテリジェンスとコンテキスト情報を使用してイベントデータを継続的に拡充します。高度な BigQuery Export では、最初の拡充時の状態に基づいてイベントがエクスポートされます。BigQuery にストリーミングされた後に、イベントが新しい情報で再拡充された場合、この更新されたバージョンは BigQuery にすぐに反映されないことがあります。これにより、常に完全に再エンリッチされたデータを表示する UI 要素と比較すると、差異が生じる可能性があります。
DML マージ レイテンシ: BigQuery のデータを最新の状態に保ち、遅延したデータや重複の可能性などの処理を行うため、パイプラインはバックグラウンドでデータ操作言語(DML)
MERGEオペレーションを使用します。これらのオペレーションは効率的ですが、即時には行われません。これらのマージは処理に時間がかかります。特に、きめ細かい更新の場合は遅延が発生します。この統合期間中、BigQuery に対するクエリでは、Google Security Operations UI にすでに表示されている最新のマイクロ更新がキャプチャされない可能性があります。
前述の要因(遅延データ、再拡充処理、マージ レイテンシ)により、BigQuery とライブ UI の統計情報が 1 秒単位で完全に 1 対 1 で一致するとは限りません。高度な BigQuery Export では、ほぼリアルタイムのデータが提供されます。これは、脅威ハンティング、カスタム分析、ダッシュボードなど、数分以内のデータの更新速度が重要となるユースケース向けに最適化されています。絶対的なポイントインタイムの一貫性を必要とする監査目的の場合は、一時的なわずかな差異が生じる可能性を考慮してください。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。