未加工のログをセルフマネージドの Google Cloud Storage バケットにエクスポートする

以下でサポートされています。

データ エクスポート API を使用すると、Google Security Operations から制御する Google Cloud Storage バケットにセキュリティデータを一括でエクスポートできます。この機能は、重要な長期データ保持をサポートし、履歴フォレンジック分析と厳格なコンプライアンス要件(SOX や GDPR など)をサポートします。

API リファレンスの詳細については、データ エクスポート API(拡張版)をご覧ください。

Data Export API は、特定の時点のデータ エクスポートのためのスケーラブルで信頼性の高いソリューションを提供し、最大 100 TB のリクエストを処理します。

マネージド パイプラインとして、次のようなエンタープライズ グレードの基本的な機能を提供します。

  • 一時的なエラーの自動再試行
  • 包括的なジョブ ステータスのモニタリング
  • 各エクスポート ジョブの完全な監査証跡

API は、Google Cloud Storage バケット内のエクスポートされたデータを日付と時刻で論理的にパーティショニングします。

この機能を使用すると、大規模なデータ オフロード ワークフローを構築できます。Google SecOps は、エクスポート プロセスの複雑さを管理して、安定性とパフォーマンスを確保します。

主なメリット

Data Export API は、セキュリティ データのライフサイクルを管理するための復元力と監査可能性に優れたソリューションを提供します。主なメリットは次のとおりです。

  • 信頼性: 大規模なデータ転送を処理します。システムは指数バックオフ戦略を使用して、一時的な問題(一時的なネットワークの問題など)が発生したエクスポート ジョブを自動的に再試行し、復元力を高めます。一時的なエラーが原因でエクスポート ジョブが失敗した場合、ジョブは自動的に数回再試行されます。すべての再試行後にジョブが完全に失敗すると、システムはそのステータスを FINISHED_FAILURE に更新します。そのジョブの API レスポンスには、原因を説明する詳細なエラー メッセージが含まれます。
  • 包括的な監査可能性: 厳格なコンプライアンスとセキュリティ基準を満たすため、システムはエクスポート ジョブに関連するすべてのアクションを不変の監査証跡に記録します。このトレイルには、すべてのジョブの作成、開始、成功、失敗と、アクションを開始したユーザー、タイムスタンプ、ジョブ パラメータが含まれます。

  • パフォーマンスとスケーリングに最適化: API は堅牢なジョブ管理システムを使用します。このシステムには、プラットフォームの安定性を確保し、単一のテナントがリソースを独占することを防ぐためのキューイングと優先順位付けが含まれています。

  • データの完全性とアクセシビリティの強化: システムは、Google Cloud Storage バケット内の論理ディレクトリ構造にデータを自動的に整理します。これにより、特定の期間を特定してクエリを実行し、履歴分析を行うことができます。

  • セキュリティ: この API は、顧客管理の暗号鍵(CMEK)(ゼロトラスト セキュリティ)とデータ RBAC(最小権限アクセス)に完全に準拠するように設計されています。エクスポート ジョブは、不正なデータ抽出を防ぐため、リクエストをトリガーしたユーザーのデータ可視性スコープを継承します。エクスポート パイプラインは Google Cloud Key Management Service と完全に統合されており、データは独自の鍵を使用して Google Cloud Storage バケットで保存時に暗号化されたままになります。

主な用語と概念

  • エクスポート ジョブ: 特定の期間のログデータを Google Cloud Storage バケットにエクスポートする単一の非同期オペレーション。システムは、一意の dataExportId を使用して各ジョブを追跡します。
  • ジョブのステータス: ライフサイクルにおけるエクスポート ジョブの現在の状態(例: IN_QUEUE、PROCESSING、FINISHED_SUCCESS)。
  • Google Cloud Storage バケット: ユーザーが所有する Google Cloud Storage バケット。エクスポートされたデータの宛先として機能します。
  • ログタイプ: エクスポートできるログの特定のカテゴリ(NIX_SYSTEM、WINDOWS_DNS、CB_EDR など)。詳細については、サポートされているすべてのログタイプのリストをご覧ください。

エクスポートされたデータの構造を理解する

ジョブが正常に完了すると、データが Google Cloud Storage バケットに書き込まれます。特定のパーティション分割されたディレクトリ構造を使用して、データアクセスとクエリを簡素化します。

ディレクトリ パスの構造: gs://GCS_BUCKET_NAME/ EXPORT_JOB_NAME/LOGTYPE/EVENT_TIME_BUCKET/EPOCH_EXECUTION_TIME/FILE_SHARD_NAME.csv

ここで

  • GCS_BUCKET_NAME: Google Cloud Storage バケットの名前を指します。
  • EXPORT_JOB_NAME: エクスポート ジョブの一意の名前を指します。
  • LOGTYPE: エクスポートされたデータのログタイプの名前を指します。
  • EVENT_TIME_BUCKET: エクスポートされたログのイベント タイムスタンプの時間範囲を指します。形式は UTC タイムスタンプ year/month/day/UTC-timestamp です。ここで、UTC-timestamp は hour/minute/second です。たとえば、2025/08/25/01/00/00 は UTC 01:00:00 AM, August 25, 2025 を参照します。
  • EPOCH_EXECUTION_TIME: エクスポート ジョブが開始された日時を示す Unix エポック タイム値。
  • FILE_SHARD_NAME: 未加工のログを含むシャード ファイルの名前を指します。各ファイル シャードのファイルサイズの上限は 100 MB です。

パフォーマンスと制限事項

プラットフォームの安定性と公平なリソース割り当てを確保するため、このサービスには次の上限が設定されています。

  • ジョブあたりの最大データ量: 個々のエクスポート ジョブは、最大 100 TB のデータをリクエストできます。大規模なデータセットの場合は、エクスポートを複数のジョブに分割し、時間範囲を小さくすることをおすすめします。
  • 同時実行ジョブ: 各お客様のテナントは、最大 3 つのエクスポート ジョブを同時に実行またはキューに登録できます。この上限を超える新しいジョブ作成リクエストは拒否されます。
  • ジョブの完了時間: エクスポートされたデータの量によって、ジョブの完了時間が決まります。1 つのジョブには最大 18 時間かかることがあります。
  • エクスポート形式とデータ範囲: API は、次の制限と機能を備えた一括エクスポートと特定の時点のエクスポートをサポートしています。
    • 未加工のログのみ: 未加工のログのみをエクスポートできます(UDM ログ、UDM イベント、検出はエクスポートできません)。UDM データをエクスポートする方法については、セルフマネージド BigQuery プロジェクトにエクスポートするをご覧ください。
    • データ圧縮: API はデータを非圧縮テキストとしてエクスポートします。

前提条件とアーキテクチャ

このセクションでは、Data Export API を使用するためのシステム アーキテクチャと必要な要件の概要と、システム アーキテクチャの詳細について説明します。この情報を使用して、環境が正しく構成されていることを確認します。

Data Export API を使用する前に、次の前提条件の手順を完了して、Google Cloud Storage の宛先を設定し、必要な権限を付与します。

  1. ユーザーに権限を付与します。データ エクスポート API を使用するには、Google SecOps テナントにリンクされている BYOP Google Cloud プロジェクトに次の権限が必要です。

    これらの権限は、次の IAM 事前定義ロールの一部です。

    • Chronicle API 管理者: API を使用してエクスポート ジョブの作成、更新、キャンセル、表示を行うための完全な権限を付与します。このロールにはグローバル アクセス権が付与されます。
    • Chronicle API 閲覧者: API を使用してジョブの構成と履歴を表示する読み取り専用アクセス権を付与します。restrictedDataAccess ロールがない場合、このロールを持つユーザーはすべてのデータを表示できます(+ 別のロールを追加するの手順と条件を追加するをご覧ください)。
  2. データ RBAC スコープをユーザーに適用する。ユーザーを特定のデータアクセス スコープに制限する手順は次のとおりです。

    1. 適用するデータ RBAC スコープが、Google SecOps UI の [設定> SIEM 設定> データアクセス> スコープ] で作成されていることを確認します。ユーザーに割り当てる各スコープの完全な名前をメモします。
    2. データ エクスポートの管理用の Identity and Access Management(IAM)カスタムロールを作成します。事前定義ロールではアクセス権が過剰に付与される場合や、特定の権限の組み合わせがない場合があるため、スコープ設定されたコンテキスト内でデータ エクスポートを管理するために調整されたカスタムロールを作成するには、次の操作を行います。

      1. Google Cloud コンソールで、[IAM と管理] > [ロール] に移動します。
      2. [+ ロールを作成] をクリックします。
      3. タイトルを入力します(例: SecOps Scoped Data Export User)。
      4. ID(例: secopsScopedDataExportUser)を入力します。
      5. [+ 権限を追加] をクリックします。
      6. Chronicle 権限でフィルタし、最初の手順(API ユーザーに権限を付与する)で説明した関連する権限を追加します。
      7. [作成] をクリックします。
  3. ユーザーに IAM ロールを付与します。IAM ページで、次の操作を行って、必要なロールをユーザーに割り当てます。

    1. [IAM と管理]、[IAM] の順にクリックします。
    2. [+ アクセスを許可] をクリックします。
    3. [新しいプリンシパル] に、ユーザーのメールアドレスを入力します。
    4. ロールを割り当てる手順は次のとおりです。

      1. 作成したカスタムロール(SecOps Scoped Data Export User など)を追加します。
      2. [+ 別のロールを追加] をクリックし、Chronicle API 制限付きデータアクセス(restrictedDataAccess)ロールを追加します。このロールは、ユーザーをデータスコープの対象としてマークするために不可欠です。
  4. Chronicle API Restricted Data Access ロール バインディングに IAM 条件を追加します。ユーザーを特定のデータスコープにリンクするには、次の操作を行います。

    1. [IAM の条件を追加] をクリックします。
    2. 条件作成ツールまたは条件エディタを使用して、許可されるスコープを定義します。最初の手順で作成したスコープ名をリソース名として使用します。たとえば、scope_test という名前のスコープを使用するには、条件 resource.name.endsWith("/dataAccessScopes/scope_test") を設定します。

    Data Export API にデータ RBAC が実装される仕組みについては、Data Export API にデータ RBAC が適用される仕組みをご覧ください。

  5. Google Cloud Storage バケットを作成します。 Google Cloudプロジェクトで、Google SecOps テナントと同じリージョンに新しい Google Cloud Storage バケット(エクスポートされたデータの宛先)を作成します。不正アクセスを防ぐため、非公開にします。詳細については、バケットを作成するをご覧ください。

  6. サービス アカウントに権限を付与します。Google SecOps テナントにリンクされている Google SecOps サービス アカウントに、バケットにデータを書き込むために必要な IAM ロールを付与するには、次の操作を行います。

    1. FetchServiceAccountForDataExport API エンドポイントを呼び出して、Google SecOps インスタンスの一意のサービス アカウントを特定します。API はサービス アカウントのメールアドレスを返します。

      リクエストの例:

      {
        "parent": "projects/myproject/locations/us/instances/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
      }
      

      レスポンスの例:

      {
        "service_account_email": "service-1234@gcp-sa-chronicle.iam.gserviceaccount.com"
      }
      
    2. Google SecOps サービスがエクスポートされたデータファイルを Google Cloud Storage バケットに書き込めるように、宛先の Google Cloud Storage バケットに対して次の IAM ロールを Google SecOps サービス アカウント プリンシパルに付与します。

      • Storage object administrator (roles/storage.objectAdmin)
      • Legacy bucket reader (roles/storage.legacyBucketReader)

      詳細については、Google SecOps サービス アカウントへのアクセス権を付与するをご覧ください。

  7. 認証を完了します。Data Export API は呼び出しを認証します。この認証を設定するには、次のセクションの手順に沿って操作します。

    1. Google Cloud サービスの認証方法
    2. アプリケーションのデフォルト認証情報

主なユースケースとコア ワークフロー

Data Export API は、データ エクスポート ジョブを作成し、一括データ エクスポートのライフサイクル全体を管理するための一連のエンドポイントを提供します。すべてのインタラクションは API 呼び出しを使用して行います。

次のユースケースでは、データ エクスポート ジョブの作成、モニタリング、管理方法について説明します。

新しいデータ エクスポート ジョブを作成する

システムは、データ エクスポート ジョブの仕様を親リソースの Google SecOps インスタンスに保存します。このインスタンスは、エクスポート ジョブのログデータのソースです。

  • Google SecOps インスタンスの一意のサービス アカウントを特定する方法については、FetchServiceAccountForDataExports をご覧ください。

  • 新しいエクスポートを開始するには、dataExports.create エンドポイントに POST リクエストを送信します。詳しくは、CreateDataExport エンドポイントをご覧ください。

データ エクスポート ジョブのステータスをモニタリングする

特定のエクスポート ジョブのデータ エクスポート ジョブの詳細とステータスを表示したり、フィルタを構成して特定のタイプのジョブを表示したりできます。

  • 特定のエクスポート ジョブを表示する方法については、GetDataExport をご覧ください。

  • フィルタを使用して特定の種類のデータ エクスポート ジョブを一覧表示する方法については、ListDataExport をご覧ください。

キューに格納されたジョブをキャンセルする

ジョブのステータスが IN_QUEUE の場合は、ジョブをキャンセルできます。

キューに登録されたジョブをキャンセルする方法については、CancelDataExport をご覧ください。

データ RBAC が Data Export API に適用される仕組み

エクスポート ジョブは、エクスポート ジョブを作成するユーザーのデータ RBAC スコープを継承するため、不正なデータ抽出を防ぐことができます。

データアクセス スコープで許可されている範囲を超えるデータをエクスポートしようとすると、API はエクスポート ジョブの実行時にそのようなデータを自動的に除外します。完了したジョブ(ステータスが FINISHED_SUCCESS のジョブ)のメタデータの dataRbacFiltered フィールドの値は、データが除外されたかどうかを示します。dataRbacFiltered が true の場合、エクスポート ジョブ用に選択されたデータの一部またはすべてが、ジョブ作成者に適用されるデータ RBAC スコープの範囲外であるため、除外されました。dataRbacFiltered が false の場合、エクスポート ジョブはデータ RBAC スコープの制限の影響を受けず、ジョブの一部として含まれるすべてのデータが正常にエクスポートされました。

API は、ジョブの作成時に作成者に適用されるデータ RBAC スコープを適用します。データ RBAC スコープの変更は、すでに作成されているジョブに遡及的には適用されません。

データ RBAC の詳細については、データ RBAC の概要をご覧ください。

一般的な問題のトラブルシューティング

API は、問題の診断に役立つ詳細なエラー メッセージを提供します。

正規コード エラー メッセージ
INVALID_ARGUMENT INVALID_REQUEST: Invalid request parameter PARAMETER_1, PARAMETER_2, ... PARAMETER_N. Please fix the request parameters and try again.
PERMISSION_DENIED INSUFFICIENT_PERMISSIONS: Unable to validate request with the current CMEK key. Please fix the CMEK key and try again
NOT_FOUND BUCKET_NOT_FOUND: The destination Google Cloud Storage bucket BUCKET_NAME does not exist. Please create the destination Google Cloud Storage bucket and try again.
NOT_FOUND REQUEST_NOT_FOUND: The dataExportId:DATA_EXPORT_ID does not exist. Please add a valid dataExportId and try again.
FAILED_PRECONDITION BUCKET_INVALID_REGION: The Google Cloud Storage bucket BUCKET_ID's region:REGION_1 is not the same region as the SecOps tenant region:REGION_2. Please create the Google Cloud Storage bucket in the same region as SecOps tenant and try again.
FAILED_PRECONDITION INSUFFICIENT_PERMISSIONS: The Service Account P4SA does not have storage.objects.create, storage.objects.get and storage.buckets.get permissions on the destination Google Cloud Storage bucket BUCKET_NAME. Please provide the required access to the Service Account and try again.
FAILED_PRECONDITION INVALID_CANCELLATION: The request status is in the STATUS stage and can't be cancelled. You can only cancel the request if the status is in the IN_QUEUE stage.
RESOURCE_EXHAUSTED CONCURRENT_REQUEST_LIMIT_EXCEEDED: Maximum concurrent requests limit LIMIT reached for the request size SIZE_LIMIT. Please wait for the existing requests to complete and try again.
RESOURCE_EXHAUSTED REQUEST_SIZE_LIMIT_EXCEEDED: The estimated export volume: ESTIMATED_VOLUME for the request is greater than maximum allowed export volume: ALLOWED_VOLUME per request. Please try again with a request within the allowed export volume limit.
INTERNAL INTERNAL_ERROR: An Internal error occurred. Please try again.

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。