BigQuery を Google SecOps と統合する
このドキュメントでは、BigQuery を Google Security Operations と統合する方法について説明します。
ユースケース
BigQuery 統合では、Google SecOps の機能を使用して次のユースケースをサポートします。
脅威インテリジェンスの拡充: BigQuery に保存されている脅威インテリジェンス データを使用してセキュリティ アラートを自動的に拡充し、潜在的な脅威の重大度と信頼性を評価します。
ユーザー行動分析: BigQuery に保存されている過去のログを分析して、異常なユーザー アクティビティを特定し、内部脅威や不正使用されたアカウントを検出します。
セキュリティ データレイク分析: BigQuery のクエリ機能を使用して、さまざまなソースから集約された大量のセキュリティ データを分析し、脅威ハンティングを改善します。
高度な ML / AI 分析: 過去のセキュリティ データと BigQuery ML を使用して、予測防御と自動リスク スコアリングのためのカスタムモデルを構築します。
長期的なデータの保持: 解決済みのインシデント データを BigQuery にアーカイブして、費用対効果の高い長期保存を実現し、コンプライアンスとフォレンジック監査をサポートします。
始める前に
Google SecOps で BigQuery 統合を構成する前に、次の前提条件の手順を完了します。
サービス アカウントに必要な Identity and Access Management ロールを付与します。
次のいずれかの認証方法を選択して構成します。
オプション 1: Workload Identity(推奨): この方法では、サービス アカウントの権限借用を使用して、有効期間の短い一時的なアクセス トークンを使用します。
オプション 2: サービス アカウントの JSON キー: この方法は、静的な、有効期間の長い秘密鍵ファイルに依存します。
IAM ロールを付与する
サービス アカウントに必要な権限を付与すると、統合でジョブを実行し、データにアクセスできるようになります。次の標準ロールは Google Cloud によって管理され、API の要件が変更されると自動的に更新されます。これらのロールをサービス アカウントに割り当てるには、次の操作を行います。
Google Cloud コンソールで [IAM] に移動します。
プリンシパルのリストでサービス アカウントを見つけて、[プリンシパルを編集](編集)をクリックします。
[別のロールを追加] をクリックし、次のロールを選択します。
BigQuery ユーザー(
roles/bigquery.user): 統合でプロジェクト内のジョブ(クエリを含む)を実行できるようにします。BigQuery データ閲覧者(
roles/bigquery.dataViewer): 統合でデータセットとテーブルからデータとメタデータを読み取ることができます。Service Usage コンシューマー(
roles/serviceusage.serviceUsageConsumer): 統合設定でQuota Project IDを構成する場合は必須です。
[保存] をクリックします。
サービス アカウントを作成する
Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動します。
[addサービス アカウントを作成] をクリックします。
名前と説明を入力し、[作成して続行] をクリックします。
[このサービス アカウントにプロジェクトへのアクセスを許可する] のステップで、前のステップで特定したロールを追加します。
[完了] をクリックします。サービス アカウントのメールアドレスをメモします。
Workload Identity 認証情報を構成する
Workload Identity は、サービス アカウントの権限借用を使用して有効期間の短いアクセス トークンを使用するため、推奨されるアプローチです。
一意のインスタンス ID を特定する
接続を確立するには、サービス アカウントの権限を借用する権限を Google SecOps インスタンスに付与する必要があります。
Google SecOps で、[Content Hub] > [Response Integrations] に移動します。
[BigQuery] 統合を選択し、[
Workload Identity Email] フィールドにサービス アカウントのメールアドレスを入力します。[保存] > [テスト] をクリックします。テストは失敗することが想定されます。
[Test] の横にある close_small ボタンをクリックし、
gke-init-python@...またはsoar-python@...で始まる ID メールを見つけます。この固有のメールアドレスをコピーします。
Google Cloudでインスタンス ID を認可する
Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動します。
対象のサービス アカウントを選択し、[権限] > [アクセスを許可] に移動します。
一意のメールアドレスを [新しいプリンシパル] フィールドに貼り付け、サービス アカウント トークン作成者ロール(
roles/iam.serviceAccountTokenCreator)を割り当てます。
JSON キーを構成する
静的で有効期間の長い秘密鍵ファイルは、手動でローテーションする必要があります。この方法は、Workload Identity 認証を使用できない場合にのみ使用してください。
Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動し、サービス アカウントを選択します。
[キー] タブに移動し、[キーを追加] > [新しいキーを作成] をクリックします。
[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 ルート(例: |
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 キーの |
Private Key ID |
省略可。 JSON キーの |
Private Key |
省略可。 JSON キーの |
Client Email |
省略可。 JSON キーの |
Client ID |
省略可。 JSON キーの |
Auth URI |
省略可。 JSON キーの デフォルト値は |
Token URI |
省略可。 JSON キーの デフォルト値は |
Auth Provider X509 URL |
省略可。 JSON キーの |
Client X509 URL |
省略可。 JSON キーの |
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 |
省略可。 レスポンスごとに返される結果の数。 デフォルト値は |
アクションの出力
カスタムクエリを実行アクションは、次の出力を提供します。
| アクションの出力タイプ | 対象 |
|---|---|
| ケースウォールのアタッチメント | 利用不可 |
| ケースウォールのリンク | 利用不可 |
| ケースウォール テーブル | 利用不可 |
| 拡充テーブル | 利用不可 |
| 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 |
省略可。 レスポンスごとに返される結果の数。 デフォルト値は |
アクションの出力
[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 のプロフェッショナルから回答を得ることができます。