BigQuery を Google SecOps と統合する

このドキュメントでは、BigQuery を Google Security Operations と統合する方法について説明します。

ユースケース

BigQuery 統合では、Google SecOps の機能を使用して次のユースケースをサポートします。

  • 脅威インテリジェンスの拡充: BigQuery に保存されている脅威インテリジェンス データを使用してセキュリティ アラートを自動的に拡充し、潜在的な脅威の重大度と信頼性を評価します。

  • ユーザー行動分析: BigQuery に保存されている過去のログを分析して、異常なユーザー アクティビティを特定し、内部脅威や不正使用されたアカウントを検出します。

  • セキュリティ データレイク分析: BigQuery のクエリ機能を使用して、さまざまなソースから集約された大量のセキュリティ データを分析し、脅威ハンティングを改善します。

  • 高度な ML / AI 分析: 過去のセキュリティ データと BigQuery ML を使用して、予測防御と自動リスク スコアリングのためのカスタムモデルを構築します。

  • 長期的なデータの保持: 解決済みのインシデント データを BigQuery にアーカイブして、費用対効果の高い長期保存を実現し、コンプライアンスとフォレンジック監査をサポートします。

始める前に

Google SecOps で BigQuery 統合を構成する前に、次の前提条件の手順を完了します。

  1. サービス アカウントに必要な Identity and Access Management ロールを付与します。

  2. サービス アカウントを作成します。

  3. 次のいずれかの認証方法を選択して構成します。

    • オプション 1: Workload Identity(推奨): この方法では、サービス アカウントの権限借用を使用して、有効期間の短い一時的なアクセス トークンを使用します。

    • オプション 2: サービス アカウントの JSON キー: この方法は、静的な、有効期間の長い秘密鍵ファイルに依存します。

IAM ロールを付与する

サービス アカウントに必要な権限を付与すると、統合でジョブを実行し、データにアクセスできるようになります。次の標準ロールは Google Cloud によって管理され、API の要件が変更されると自動的に更新されます。これらのロールをサービス アカウントに割り当てるには、次の操作を行います。

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

    IAM に移動

  2. プリンシパルのリストでサービス アカウントを見つけて、[プリンシパルを編集](編集)をクリックします。

  3. [別のロールを追加] をクリックし、次のロールを選択します。

    • BigQuery ユーザー(roles/bigquery.user): 統合でプロジェクト内のジョブ(クエリを含む)を実行できるようにします。

    • BigQuery データ閲覧者(roles/bigquery.dataViewer): 統合でデータセットとテーブルからデータとメタデータを読み取ることができます。

    • Service Usage コンシューマー(roles/serviceusage.serviceUsageConsumer): 統合設定で Quota Project ID を構成する場合は必須です。

  4. [保存] をクリックします。

サービス アカウントを作成する

  1. Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動します。

    [サービス アカウント] に移動

  2. [addサービス アカウントを作成] をクリックします。

  3. 名前と説明を入力し、[作成して続行] をクリックします。

  4. [このサービス アカウントにプロジェクトへのアクセスを許可する] のステップで、前のステップで特定したロールを追加します。

  5. [完了] をクリックします。サービス アカウントのメールアドレスをメモします。

Workload Identity 認証情報を構成する

Workload Identity は、サービス アカウントの権限借用を使用して有効期間の短いアクセス トークンを使用するため、推奨されるアプローチです。

一意のインスタンス ID を特定する

接続を確立するには、サービス アカウントの権限を借用する権限を Google SecOps インスタンスに付与する必要があります。

  1. Google SecOps で、[Content Hub] > [Response Integrations] に移動します。

  2. [BigQuery] 統合を選択し、[Workload Identity Email] フィールドにサービス アカウントのメールアドレスを入力します。

  3. [保存] > [テスト] をクリックします。テストは失敗することが想定されます。

  4. [Test] の横にある close_small ボタンをクリックし、gke-init-python@... または soar-python@... で始まる ID メールを見つけます。

  5. この固有のメールアドレスをコピーします。

Google Cloudでインスタンス ID を認可する

  1. Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動します。

    [サービス アカウント] に移動

  2. 対象のサービス アカウントを選択し、[権限] > [アクセスを許可] に移動します。

  3. 一意のメールアドレスを [新しいプリンシパル] フィールドに貼り付け、サービス アカウント トークン作成者ロール(roles/iam.serviceAccountTokenCreator)を割り当てます。

JSON キーを構成する

静的で有効期間の長い秘密鍵ファイルは、手動でローテーションする必要があります。この方法は、Workload Identity 認証を使用できない場合にのみ使用してください。

  1. Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動し、サービス アカウントを選択します。

    [サービス アカウント] に移動

  2. [キー] タブに移動し、[キーを追加] > [新しいキーを作成] をクリックします。

  3. [JSON] を選択し、[作成] をクリックします。ファイルがパソコンに自動的にダウンロードされます。

個々のパラメータを手動で構成する

認証情報を手動で入力する場合は、ダウンロードした JSON 鍵ファイルをテキスト エディタで開いたままにして、統合設定に必要な個々の値をコピーします。

統合のパラメータ

Google SecOps と BigQuery の間に接続を確立するには、次のパラメータを構成する必要があります。この統合では、3 つの異なる認証パスがサポートされています。次のいずれかの方法で認証情報を提供します。

  • Workload Identity: Workload Identity Email と Quota Project ID を使用します。

  • サービス アカウントの JSON ファイル: Service Account Json File Content を使用して、キー全体を一度に指定します。

  • 手動の個別パラメータ: JSON キーから手動でコピーした個別のフィールドを使用します。

パラメータ 説明
API Root

省略可。

BigQuery インスタンスの API ルート(例: https://bigquery.googleapis.com)。

Workload Identity Email

省略可。

サービス アカウントのクライアント メールアドレス。これは、Workload Identity 認証に使用します。

Service Account Json File Content

省略可。

サービス アカウント キーの JSON ファイルの全内容。

このパラメータを構成すると、統合は個々の認証情報パラメータを無視します。

Quota Project ID

省略可。

API の使用量と請求額に使用されるプロジェクト ID。このパラメータは、Workload Identity 認証を使用する場合に必要です。

Project ID

省略可。

BigQuery でターゲットとするプロジェクト ID。

Verify SSL

必須。

接続の SSL 証明書を検証します。デフォルトで有効になっています。

個別の認証情報パラメータ

JSON ファイルのコンテンツ全体または Workload Identity を使用するのではなく、認証情報を手動で入力する場合にのみ、次のパラメータを使用します。

パラメータ 説明
Account Type

省略可。

JSON キーの type フィールドにある値(通常は service_account)。

Private Key ID

省略可。

JSON キーの private_key_id フィールドにある値。

Private Key

省略可。

JSON キーの private_key フィールドにある値。

Client Email

省略可。

JSON キーの client_email フィールドにある値。

Client ID

省略可。

JSON キーの client_id フィールドにある値。

Auth URI

省略可。

JSON キーの auth_uri フィールドにある値。

デフォルト値は https://accounts.google.com/o/oauth2/auth です。

Token URI

省略可。

JSON キーの token_uri フィールドにある値。

デフォルト値は https://oauth2.googleapis.com/token です。

Auth Provider X509 URL

省略可。

JSON キーの auth_provider_x509_cert_url フィールドにある値。

Client X509 URL

省略可。

JSON キーの client_x509_cert_url フィールドにある値。

Google SecOps で統合を構成する方法については、統合を構成するをご覧ください。

必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できます。複数のインスタンスを構成してサポートする方法の詳細については、複数のインスタンスのサポートをご覧ください。

操作

アクションの詳細については、 デスクから保留中のアクションに対応するとケースで手動アクションを実行するをご覧ください。

Ping

Ping アクションを使用して、BigQuery への接続をテストします。

このアクションは Google SecOps エンティティに対しては実行されません。

アクションへの入力

なし

アクションの出力

Ping アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用不可
出力メッセージ 利用可能
スクリプトの結果 利用可能
出力メッセージ

Ping アクションは、次の出力メッセージを返すことができます。

出力メッセージ メッセージの説明
Successfully connected to the Google BigQuery server with the provided connection parameters! アクションが成功しました。
Failed to connect to the Google BigQuery server! Error is ERROR_REASON

操作を実行できませんでした。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、Ping アクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success True または False

カスタムクエリを実行する

[カスタムクエリを実行] アクションを使用して、BigQuery でカスタムクエリを実行します。

このアクションは Google SecOps エンティティに対しては実行されません。

アクションへの入力

カスタムクエリを実行アクションには、次のパラメータが必要です。

パラメータ 説明
Query

必須。

実行する SQL クエリ。

Max Results To Return

省略可。

レスポンスごとに返される結果の数。

デフォルト値は 50 です。

アクションの出力

カスタムクエリを実行アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用可能
出力メッセージ 利用可能
スクリプトの結果 利用可能
JSON の結果

次の例は、カスタムクエリを実行するアクションを使用した場合に受信される JSON 結果の出力を示しています。

{
    "Airport_Code": "CODE",
    "Airport_Name": "NAME",
    "Time_Label": "2015/05",
    "Time_Month": 5,
    "Time_Month_Name": "May",
    "Time_Year": 2015,
    "Statistics___of_Delays_Carrier": 351,
    "Statistics___of_Delays_Late_Aircraft": 546,
    "Statistics___of_Delays_National_Aviation_System": 292,
    "Statistics___of_Delays_Security": 2,
    "Statistics___of_Delays_Weather": 100,
    "Statistics_Carriers_Names": "Example Air Lines Inc., Example Airlines Co.",
    "Statistics_Carriers_Total": 3,
    "Statistics_Flights_Cancelled": 88,
    "Statistics_Flights_Delayed": 1289,
    "Statistics_Flights_Diverted": 32,
    "Statistics_Flights_On_Time": 6182,
    "Statistics_Flights_Total": 7591,
    "Statistics_Minutes_Delayed_Carrier": 19332,
    "Statistics_Minutes_Delayed_Late_Aircraft": 34376,
    "Statistics_Minutes_Delayed_National_Aviation_System": 12346,
    "Statistics_Minutes_Delayed_Security": 48,
    "Statistics_Minutes_Delayed_Total": 76163,
    "Statistics_Minutes_Delayed_Weather": 100061
}
出力メッセージ

カスタムクエリを実行アクションは、次の出力メッセージを返すことができます。

出力メッセージ メッセージの説明
Successfully executed query in Google BigQuery! アクションが成功しました。
Error executing action "Run Custom Query". Reason: ERROR_REASON

操作を実行できませんでした。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、カスタムクエリを実行するアクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success True または False

SQL クエリを実行する

SQL クエリを実行アクションを使用して、BigQuery でクエリを実行します。

このアクションは Google SecOps エンティティに対しては実行されません。

アクションへの入力

SQL クエリを実行アクションには、次のパラメータが必要です。

パラメータ 説明
Dataset Name

必須。

クエリの実行時に使用するデータセットの名前。

Query

必須。

実行する SQL クエリ。

Max Results To Return

省略可。

レスポンスごとに返される結果の数。

デフォルト値は 50 です。

アクションの出力

[SQL クエリを実行する] アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用不可
出力メッセージ 利用可能
スクリプトの結果 利用可能
JSON の結果

次の例は、SQL クエリを実行アクションを使用した場合に受信する JSON 結果の出力を示しています。

{
    "Airport_Code": "CODE",
    "Airport_Name": "NAME",
    "Time_Label": "2015/05",
    "Time_Month": 5,
    "Time_Month_Name": "May",
    "Time_Year": 2015,
    "Statistics___of_Delays_Carrier": 351,
    "Statistics___of_Delays_Late_Aircraft": 546,
    "Statistics___of_Delays_National_Aviation_System": 292,
    "Statistics___of_Delays_Security": 2,
    "Statistics___of_Delays_Weather": 100,
    "Statistics_Carriers_Names": "Example Airlines Inc.,Example Airlines Co.",
    "Statistics_Carriers_Total": 3,
    "Statistics_Flights_Cancelled": 88,
    "Statistics_Flights_Delayed": 1289,
    "Statistics_Flights_Diverted": 32,
    "Statistics_Flights_On_Time": 6182,
    "Statistics_Flights_Total": 7591,
    "Statistics_Minutes_Delayed_Carrier": 19332,
    "Statistics_Minutes_Delayed_Late_Aircraft": 34376,
    "Statistics_Minutes_Delayed_National_Aviation_System": 12346,
    "Statistics_Minutes_Delayed_Security": 48,
    "Statistics_Minutes_Delayed_Total": 76163,
    "Statistics_Minutes_Delayed_Weather": 100061
}
出力メッセージ

SQL クエリを実行アクションは、次の出力メッセージを返すことができます。

出力メッセージ メッセージの説明
Successfully executed query in the BigQuery dataset DATASET_NAME. アクションが成功しました。
Error executing action "Run SQL Query". Reason: ERROR_REASON

操作を実行できませんでした。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、SQL クエリを実行アクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success True または False

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