Chronicle SOAR の監査ログを収集する
このドキュメントでは、Google Cloud Storage V2 を使用して Chronicle SOAR 監査ログを Google Security Operations に取り込む方法について説明します。
Google Security Operations SOAR(セキュリティ オーケストレーション、自動化、対応)により、セキュリティ チームは脅威への対応を自動化できます。具体的には、検出ツールからアラートを取り込み、グループ化して、優先順位を付け、ハンドブックを自動的に実行し、実践的な対応を調整します。SOAR ログには、Python スクリプトの実行、アラートの取り込み、プレイブックのパフォーマンスなど、ETL、プレイブック、Python 関数から重要なデータがキャプチャされます。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス
- Cloud Storage API が有効になっている Google Cloud プロジェクト
- GCS バケットを作成および管理する権限
- GCS バケットの IAM ポリシーを管理する権限
- Cloud Logging シンクを作成して管理する権限
- Chronicle SOAR がデプロイされている Google Cloud プロジェクトへのアクセス権
- Google Cloud プロジェクトに対する ログ閲覧者(
roles/logging.viewer)IAM ロール ログシンクを作成する Logging 管理者(
roles/logging.admin)IAM ロール
Google Cloud Storage バケットを作成する
- Google Cloud Console に移動します。
- プロジェクトを選択するか、新しいプロジェクトを作成します。
- ナビゲーション メニューで、[Cloud Storage > バケット] に移動します。
- [バケットを作成] をクリックします。
次の構成情報を提供してください。
設定 値 バケットに名前を付ける グローバルに一意の名前( chronicle-soar-audit-logsなど)を入力します。ロケーション タイプ ニーズに基づいて選択します(リージョン、デュアルリージョン、マルチリージョン)。 ロケーション ロケーションを選択します(例: us-central1)。ストレージ クラス Standard(アクセス頻度の高いログにおすすめ) アクセス制御 均一(推奨) 保護ツール 省略可: オブジェクトのバージョニングまたは保持ポリシーを有効にする [作成] をクリックします。
SOAR ログ収集を有効にする(スタンドアロン デプロイのみ)
スタンドアロン デプロイで SOAR ログのエクスポートを有効にする手順は次のとおりです。
- Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動します。
- [サービス アカウントを作成] をクリックします。
- 次の構成の詳細を指定します。
- サービス アカウント名: 「
soar-logs-export-sa」と入力します。 - サービス アカウントの説明:
Service account for exporting SOAR logs to Cloud Loggingと入力します。
- サービス アカウント名: 「
- [作成して続行] をクリックします。
- [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、次の操作を行います。
- [ロールを選択] をクリックします。
- [ログ書き込み] を検索して選択します。
- [続行] をクリックします。
- [完了] をクリックします。
- [サービス アカウント] リストで、サービス アカウント(
soar-logs-export-sa)を見つけます。 - more_vert [その他] > [権限の管理] をクリックします。
- [権限] セクションで、[アクセス権を付与] をクリックします。
[プリンシパルを追加] フィールドに、次のプリンシパルを入力します。
gke-init-backgroundservices@{SOAR-GCP-Project-Id}.iam.gserviceaccount.com[ロールを割り当てる] セクションで、次の操作を行います。
- [ロールを選択] をクリックします。
- [サービス アカウント トークン作成者] を検索して選択します。
[保存] をクリックします。
サービス アカウントの完全なメールアドレス(
soar-logs-export-sa@PROJECT_ID.iam.gserviceaccount.com)をコピーします。サービス アカウントのメールアドレスを指定して Google SecOps サポートにチケットを送信し、ログのエクスポートを有効にします。
SOAR ログを GCS にエクスポートするように Cloud Logging シンクを構成する
Chronicle SOAR ログは、chronicle-soar Namespace の Google Cloud Logging に書き込まれます。これらのログを GCS バケットに転送するには、ログシンクを作成する必要があります。
- Google Cloud コンソールで、[ロギング] > [ログルーター] に移動します。
- Chronicle SOAR がデプロイされている Google Cloud プロジェクトを選択します。
- [シンクを作成] をクリックします。
- [シンクの詳細] パネルで、次の構成の詳細を指定します。
- シンク名: 「
chronicle-soar-to-gcs」と入力します。 - シンクの説明: 「
Export Chronicle SOAR audit logs to GCS for Chronicle SIEM ingestion」と入力します。
- シンク名: 「
- [次へ] をクリックします。
- [シンクのエクスポート先] パネルで、次の操作を行います。
- [シンクサービスの選択] メニューで、[Cloud Storage バケット] を選択します。
- [Cloud Storage バケットを選択] メニューで、バケットを選択します(
chronicle-soar-audit-logs)。
- [次へ] をクリックします。
[シンクに含めるログの選択] パネルで、次の操作を行います。
[包含フィルタの作成] フィールドに、次のフィルタを入力します。
resource.labels.namespace_name="chronicle-soar"このフィルタは、ETL、Playbook、Python サービスからのすべての SOAR ログを照合します。
[ログをプレビュー] をクリックして、フィルタが想定どおりのログエントリと一致していることを確認します。
[次へ] をクリックします。
省略可: 必要に応じて、[シンクに含めないログの選択] パネルで除外フィルタを追加できます。ほとんどのデプロイでは、除外は必要ありません。
[シンクを作成] をクリックします。
GCS へのログのエクスポートを確認する
- ログが GCS バケットにエクスポートされるまで 5 ~ 10 分待ちます。
- Google Cloud コンソールで、[Cloud Storage> バケット] に移動します。
- バケット名(
chronicle-soar-audit-logs)をクリックします。 ログファイルがバケットに作成されていることを確認します。ファイルは日時別に整理されます。
chronicle-soar/YYYY/MM/DD/HH:MM:SS_<unique-id>.jsonログファイルをクリックすると、その内容のプレビューが表示されます。各ファイルには JSON 形式のログエントリが含まれています。
Google SecOps サービス アカウントを取得する
Google SecOps は、一意のサービス アカウントを使用して GCS バケットからデータを読み取ります。このサービス アカウントにバケットへのアクセス権を付与する必要があります。
サービス アカウントのメールアドレスを取得する
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- [単一フィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例:
Chronicle SOAR Audit Logs)。 - [ソースタイプ] として [Google Cloud Storage V2] を選択します。
- [ログタイプ] として [CHRONICLE_SOAR_AUDIT] を選択します。
- [サービス アカウントを取得する] をクリックします。
一意のサービス アカウント メールアドレスが表示されます(例:)。
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comこのメールアドレスをコピーして、次のステップで使用します。
[次へ] をクリックします。
次の入力パラメータの値を指定します。
ストレージ バケットの URL: 接頭辞パスを含む GCS バケット URI を入力します。
gs://chronicle-soar-audit-logs/chronicle-soar/Source deletion option: 必要に応じて削除オプションを選択します。
- なし: 転送後にファイルを削除しません(テストにおすすめ)。
- 転送されたファイルを削除する: 転送が完了した後にファイルを削除します。
- 転送されたファイルと空のディレクトリを削除する: 転送が完了した後にファイルと空のディレクトリを削除します。
ファイルの最大経過日数: 過去の日数内に変更されたファイルを含めます(デフォルトは 180 日)。
アセットの名前空間: アセットの名前空間
Ingestion labels: このフィードのイベントに適用されるラベル
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
Google SecOps サービス アカウントに IAM 権限を付与する
Google SecOps サービス アカウントには、GCS バケットに対する Storage オブジェクト閲覧者ロールが必要です。
- [Cloud Storage] > [バケット] に移動します。
- バケット名(
chronicle-soar-audit-logs)をクリックします。 - [権限] タブに移動します。
- [アクセス権を付与] をクリックします。
- 次の構成の詳細を指定します。
- プリンシパルを追加: Google SecOps サービス アカウントのメールアドレスを貼り付けます。
- ロールを割り当てる: [Storage オブジェクト閲覧者] を選択します。
[保存] をクリックします。
サービスタイプで SOAR ログをフィルタする
Chronicle SOAR ログは、ログを生成したサービス別に分類されます。Cloud Logging でログをフィルタするか、ログタイプごとに個別のシンクを作成できます。
使用可能なログサービス
次のサービスタイプを使用できます。
- playbook: ブロック実行、アクション結果、ワークフロー ステータスなど、ハンドブック実行のログ
- python: 統合アクション、コネクタ、ジョブなど、Python スクリプトの実行からのログ
- etl: アラートの取り込みとデータ変換プロセスからのログ
Cloud Logging でサービス別にフィルタする
特定のサービスのログを表示するには:
- Google Cloud コンソールで、[ロギング] > [ログ エクスプローラ] に移動します。
- Chronicle SOAR がデプロイされている Google Cloud プロジェクトを選択します。
特定のサービスのログを表示するには、次のフィルタを入力します。
resource.labels.namespace_name="chronicle-soar" resource.labels.container_name="playbook"playbookをpythonまたはetlに置き換えて、他のサービスのログを表示します。
ログの種類ごとに個別のシンクを作成する
異なるログタイプを別々の GCS バケットまたはプレフィックスにルーティングするには、サービス固有のフィルタを使用して追加のシンクを作成します。
- Cloud Logging シンクを構成して SOAR ログを GCS にエクスポートするの手順に沿って操作します。
[包含フィルタの作成] フィールドで、次のいずれかのフィルタを使用します。
ハンドブックのログのみ:
resource.labels.namespace_name="chronicle-soar" resource.labels.container_name="playbook"Python ログのみ:
resource.labels.namespace_name="chronicle-soar" resource.labels.container_name="python"ETL ログのみ:
resource.labels.namespace_name="chronicle-soar" resource.labels.container_name="etl"
フィルタリングに使用できるログラベル
Chronicle SOAR ログには、フィルタリングと分析のための追加のコンテキストを提供するラベルが含まれています。
ハンドブックのラベル
ハンドブック ログには次のラベルを使用できます。
playbook_definition: プレイブック定義の一意の識別子playbook_name: 人が読める形式のハンドブック名block_name: 実行されているプレイブック ブロックの名前block_definition: ブロック定義の固有識別子case_id: Chronicle SOAR ケース IDcorrelation_id: サービス全体でプレイブックの実行をトレースするための一意の識別子integration_name: 使用されている統合の名前action_name: 実行されているアクションの名前
Python ラベル
Python サービスログでは、次のラベルを使用できます。
インテグレーションとコネクタのラベル:
integration_name: 統合の名前integration_version: 統合のバージョンconnector_name: コネクタの名前connector_instance: コネクタのインスタンス識別子
ジョブラベル:
integration_name: 統合の名前integration_version: 統合のバージョンjob_name: スケジュール設定されたジョブの名前
アクション ラベル:
integration_name: 統合の名前integration_version: 統合のバージョンintegration_instance: 統合のインスタンス識別子correlation_id: 実行をトレースするための一意の識別子action_name: 実行されているアクションの名前
ETL ラベル
ETL サービスログには次のラベルを使用できます。
correlation_id: アラートの取り込みフローをトレースするための一意の識別子
完全なトレースに correlation_id を使用する
correlation_id ラベルは、プレイブックと Python サービスログの両方で使用できます。このラベルを使用して、プレイブックの実行全体に関連付けられているすべてのログを取得します。
- Google Cloud コンソールで、[ロギング] > [ログ エクスプローラ] に移動します。
次のフィルタを入力します。
resource.labels.namespace_name="chronicle-soar" labels.correlation_id="<correlation-id-value>"<correlation-id-value>は、ログエントリの実際の相関 ID に置き換えます。
このフィルタは、完全な実行トレースのプレイブック サービスと Python サービスの両方からすべてのログを返します。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
| module、screenSize、activityItem、modificationTimeUnixTimeInMs | additional.fields | 各フィールドから作成された結合ラベル(存在する場合) |
| user、operation | extensions.auth.type | ユーザーが空でなく、オペレーションが「Login」の場合は、「AUTHTYPE_UNSPECIFIED」に設定します。 |
| creationTimeUnixTimeInMs | metadata.event_timestamp | UNIX_MS タイムスタンプとして解析 |
| user、operation、address | metadata.event_type | ユーザーが空でなく、オペレーションが「ログイン」の場合は「USER_LOGIN」、ユーザーが空でない場合は「USER_RESOURCE_ACCESS」、アドレスが空の場合は「STATUS_UNCATEGORIZED」、それ以外の場合は「GENERIC_EVENT」に設定します。 |
| オペレーション | metadata.product_event_type | 値を直接コピーしました |
| id | metadata.product_log_id | 文字列に変換しました |
| browser | network.http.parsed_user_agent | 解析されたユーザー エージェントに変換されました |
| browser | network.http.user_agent | 値を直接コピーしました |
| 住所 | principal.hostname | アドレスが IP パターンと一致しない場合に設定 |
| 住所 | principal.ip | grok パターンを使用して IP を抽出 |
| ソース | principal.resource.resource_subtype | 値を直接コピーしました |
| ユーザー | principal.user.userid | 値を直接コピーしました |
| ContactEmails | security_result.about.user.email_addresses | Grok パターンを使用して抽出されたメールアドレス |
| ContactPhone | security_result.about.user.phone_numbers | 値を直接コピーしました |
| ContactName | security_result.about.user.user_display_name | 値を直接コピーしました |
| 名前 | security_result.about.user.userid | 値を直接コピーしました |
| currentActivity、previousActivity | security_result.detection_fields | currentActivity と previousActivity のラベルをマージ(存在する場合) |
| userGuid | target.user.product_object_id | 値を直接コピーしました |
| metadata.product_name | 「CHRONICLE_SOAR_AUDIT」に設定します。 | |
| metadata.vendor_name | 「CHRONICLE_SOAR_AUDIT」に設定します。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。