検出結果を BigQuery に一括エクスポートする

このドキュメントでは、Security Command Center の検出結果を BigQuery にオンデマンドで一括エクスポートする方法について説明します。

BigQuery は、 Google Cloudのペタバイト規模の費用対効果に優れたフルマネージド型の分析データ ウェアハウスです。膨大な量のデータに対してほぼリアルタイムで分析を行うことができます。BigQuery の詳細については、BigQuery のドキュメントをご覧ください。

概要

この機能は、特定の時点までの検出結果のスナップショットを提供します。この機能は、継続的な BigQuery エクスポートを補完し、包括的な分析とレポート作成を実現します。

一括エクスポートでは、次のことができます。

データセットの構造

検出結果は、source_idfinding_idevent_time でクラスタ化された findings テーブルの行として BigQuery にエクスポートされます。

各データセットには findings テーブルが含まれています。テーブルには次のフィールドがあります。

フィールド 説明
source_id

Security Command Center が検出結果のソースに割り当てる一意の識別子。たとえば、Cloud Anomaly Detection を情報源とする検出結果はすべて同じ source_id 値になります。

例: 1234567890

finding_id 検出結果を表す一意の識別子。これは、組織のソース内で一意です。英数字で、32 文字以下です。
event_time

イベントが発生した時間、または検出結果の更新が発生した時間。たとえば、検出結果がオープン状態のファイアウォールを表している場合、event_time は、検出機能がオープン状態のファイアウォールを検出した時間になります。検出結果が後で解決された場合、この解決時間が反映されます。

例: 2019-09-26 12:48:00.985000 UTC

bulk_export_id

一括エクスポート(プレビュー)の場合、これは UUID です。

継続的エクスポートの場合、このフィールドは空です。

finding

セキュリティ、リスク、健全性、プライバシーなどの評価データの記録。Security Command Center に取り込まれ、表示、通知、分析、ポリシーテスト、適用で使用されます。たとえば、App Engine アプリケーションで見つかったクロスサイト スクリプティング(XSS)の脆弱性が記録されます。

ネストされたフィールドの詳細については、API リファレンスの Finding オブジェクトをご覧ください。

resource

この検出結果に関連付けられている Google Cloud リソースに関する情報。

ネストされたフィールドの詳細については、API リファレンスの Resource オブジェクトをご覧ください。

費用

BigQuery にデータを保存すると、この機能に関連して BigQuery の料金が請求されます。詳細については、BigQuery のストレージの料金をご覧ください。

始める前に

この機能を有効にする前に、次の手順を完了する必要があります。

権限を設定する

このガイドの内容を行うには、次の Identity and Access Management(IAM)ロールが必要です。

BigQuery データセットを作成する

データセットを作成するの手順に沿って、BigQuery データセットを作成します。

Security Command Center API を有効にする

検出結果をエクスポートするには、次の手順で Security Command Center API を有効にする必要があります。

  1. Google Cloud コンソールの [API ライブラリ] ページに移動します。

    [API ライブラリ] に移動

  2. Security Command Center API を有効にするプロジェクトを選択します。

  3. [検索] フィールドに「Security Command Center」と入力し、検索結果で [Security Command Center] をクリックします。

  4. 表示された API ページで [有効にする] をクリックします。

プロジェクトで Security Command Center API が有効になります。

VPC Service Controls で境界へのアクセス権を付与する

VPC Service Controls を使用する場合は、VPC Service Controls で境界アクセスを許可するを確認し、必要に応じてこれらの手順を実施します。

この手順は、特定のサービス境界の一括エクスポートを作成するユーザーごとに繰り返す必要があります。

新しい BigQuery 一括エクスポートの上り(内向き)ルールを作成する

VPC Service Controls を使用している場合は、BigQuery への新しいエクスポートの上り(内向き)ルールを作成するを確認し、必要に応じて手順を実施します。

BigQuery 一括エクスポートの制限事項

BigQuery 一括エクスポートを作成する際は、次の制約事項を考慮してください。

  • 1 つの組織で同時に実行できる一括エクスポートは 3 つのみです。
  • 同じ BigQuery データセットに対して複数の非同時一括エクスポートをリクエストすると、エクスポート内の新しい検出結果が BigQuery の findings テーブルに追加されます。検出結果は上書きされません。

BigQuery の一括エクスポートを作成する

検出結果の一括エクスポートは、組織レベルでのみ実行できます。

検出結果の BigQuery インスタンスへの一括エクスポートを開始するには、gcloud CLI を使用して次の操作を行います。

  1. Google Cloud コンソールに移動します。

    Google Cloud コンソールに移動

  2. Security Command Center API を有効にしたプロジェクトを選択します。

  3. Cloud Shell をアクティブにする をクリックします。

  4. 次のコマンドを実行して、新しいエクスポート構成を作成します。

    gcloud scc findings export-to-bigquery PARENT \
        --dataset=DATASET_NAME \
        [--location=LOCATION; default="global"] \
    

    次のように置き換えます。

    • PARENT: エクスポート スコープの相対名。形式例: organizations/ORGANIZATION_ID
    • DATASET_NAME: BigQuery データセットの名前。形式例: projects/PROJECT_ID/datasets/DATASET_ID
    • LOCATION: エクスポート構成を作成する Security Command Center のロケーション。データ所在地が有効になっている場合は、eusa、または us を使用します。それ以外の場合は、値 global を使用します。この変数の指定は任意です。

      たとえば、すべての検出結果の一括エクスポートを作成するには、次のコマンドを実行します。

      gcloud scc findings export-to-bigquery organizations/123
        --dataset=projects/123/datasets/DATASET
      

      データ所在地の観点から見ると、上記の例ではグローバル エンドポイントが呼び出されています。

      eu エンドポイントに対して同じ一括エクスポートを作成するには、次のコマンドを実行します。

      gcloud scc findings export-to-bigquery organizations/123
        --dataset=projects/123/datasets/DATASET
        --location=locations/eu
      

このコマンドは、エクスポートのステータスの追跡に必要な name 文字列を含む長時間実行オペレーション オブジェクトを返します。この BigQuery 一括エクスポートのステータスを追跡するには、一括エクスポートのステータスを表示するをご覧ください。

検出結果を確認するには、検出結果の確認をご覧ください。

クエリ

分析結果のデータの分析に使用できるさまざまなクエリについては、便利なクエリをご覧ください。

一括エクスポートのステータスを表示する

一括エクスポートのステータスを表示するには、一括エクスポートを作成したときに返された long running operation name 文字列が必要です。

  1. Google Cloud コンソールに移動します。

    Google Cloud コンソールに移動

  2. Security Command Center API を有効にしたプロジェクトを選択します。

  3. Cloud Shell をアクティブにする をクリックします。

  4. 一括エクスポート構成の詳細を確認するには、次のコマンドを実行します。

    gcloud scc operations describe LONG_RUNNING_OPERATION_NAME \
        --organization=ORGANIZATION_ID
    

    次のように置き換えます。

    • LONG_RUNNING_OPERATION_NAME: 一括エクスポートを作成したときに返された name 文字列。
    • ORGANIZATION_ID

      たとえば、組織 ID が 123 の組織から返された name: "long-running-operation-name" の一括エクスポート リクエストのステータスを確認するには、次のコマンドを実行します。

      gcloud scc operations describe long-running-operation-name \
        --organization=123
      
  • エクスポートが成功した場合、レスポンスには done: true が含まれます。
  • エクスポートが失敗した場合、レスポンスにはエラーコードが含まれます。
  • エクスポートがまだ進行中の場合、レスポンスには done: true もエラーコードも含まれません。

BigQuery の一括エクスポートと継続的エクスポート

同じ BigQuery データセットで一括エクスポートと継続的エクスポートを同時に使用する場合は、次の 2 つの方法があります。

  • 最初に継続的エクスポートを作成し、一括エクスポートでバックフィルします。

    1. BigQuery データセットへの継続的なエクスポートを設定します。エクスポートが正常に作成されると、Security Command Center の検出結果がリアルタイムで受信されるようになります。

    2. 同じ宛先 BigQuery データセットを使用して一括エクスポートを作成します。エクスポート時の Security Command Center のすべての検出結果のスナップショットが、選択したデータセットにエクスポートされます。

    一括エクスポートの実行には時間がかかります。したがって、継続的エクスポートが T1 で作成され、一括エクスポートが T2 でトリガーされ、一括エクスポートの検出結果のスナップショットが T3 で完了すると、T1 と T3 の間に重複するレコードが表示される可能性があります。ただし、検出結果のギャップはありません。

  • まず一括エクスポートを作成してから、継続的エクスポートを作成します。

    1. 一括エクスポートを作成します。エクスポートの実行時に Security Command Center のすべての検出結果のスナップショットが、選択した BigQuery データセットにエクスポートされます。

    2. 同じ宛先 BigQuery データセットへの継続的なエクスポートを設定します。エクスポートが正常に作成されると、Security Command Center の検出結果がリアルタイムで受信されるようになります。

    一括エクスポートが T1 で作成され、一括エクスポートの検出結果のスナップショットが T2 で完了し、継続的エクスポートが T3 でトリガーされる場合、T2 と T3 の間の検出結果が BigQuery データセットに存在しない可能性があります。

次のステップ