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 と管理] > [サービス アカウント] に移動します。
[追加サービス アカウントを作成] をクリックします。
名前と説明を入力し、[作成して続行] をクリックします。
[このサービス アカウントにプロジェクトへのアクセスを許可する] 手順で、前の手順で特定したロールを追加します。
[完了] をクリックします。サービス アカウントのメールアドレスをメモします。
Workload Identity の認証情報を構成する
Workload Identity は、サービス アカウントの権限借用を使用して有効期間の短いアクセス トークンを使用するため、推奨されるアプローチです。
一意のインスタンス ID を特定する
接続を確立するには、Google SecOps インスタンスにサービス アカウントの権限借用を許可する必要があります。
Google SecOps で、[コンテンツ ハブ] > [レスポンス統合] に移動します。
BigQuery インテグレーションを選択し、
Workload Identity Emailフィールドにサービス アカウントのメールアドレスを入力します。[保存] > [テスト] をクリックします。テストは失敗することが想定されます。
[テスト] の横にある 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 エンティティに対して実行されません。
アクションの入力
[Run Custom Query] アクションには、次のパラメータが必要です。
| パラメータ | 説明 |
|---|---|
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 クエリを実行する
BigQuery でクエリを実行するには、[SQL クエリを実行] アクションを使用します。
このアクションは 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 のプロフェッショナルから回答を得ることができます。