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. [追加サービス アカウントを作成] をクリックします。

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

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

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

Workload Identity の認証情報を構成する

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

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

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

  1. Google SecOps で、[コンテンツ ハブ] > [レスポンス統合] に移動します。

  2. BigQuery インテグレーションを選択し、Workload Identity Email フィールドにサービス アカウントのメールアドレスを入力します。

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

  4. [テスト] の横にある 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 エンティティに対して実行されません。

アクションの入力

[Run Custom Query] アクションには、次のパラメータが必要です。

パラメータ 説明
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 クエリを実行する

BigQuery でクエリを実行するには、[SQL クエリを実行] アクションを使用します。

このアクションは 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 のプロフェッショナルから回答を得ることができます。