データ処理パイプラインを設定して管理する
データ処理機能を使用すると、Google Security Operations のデータ取り込みを解析前に強力に制御できます。イベントのフィルタリング、フィールドの変換、機密値の編集を行うことで、データ互換性を最適化し、費用を削減し、Google SecOps 内の機密情報を保護できます。
このドキュメントでは、Bindplane コンソールを使用してデータ取り込みと処理のワークフロー全体を説明します。そのため、次の方法について学習できます。
- Google SecOps の宛先インスタンスへの接続を構成します。
- 新しい Google SecOps パイプラインを作成します。
- ストリームやプロセッサなどのデータ処理を設定します。
- パイプラインをロールアウトして、データの取り込みと処理を開始します。
- Google SecOps コンソールでパイプライン ストリームとプロセッサをモニタリングします。
オンプレミスとクラウドの両方のデータ ストリームのデータ処理を構成するには、Bindplane 管理コンソールを使用するか、公開されている Google SecOps Data Pipeline API を直接使用します。
データ処理は、次の要素で構成されます。
- ストリーム: 1 つ以上のストリームがデータ処理パイプラインにデータを供給します。各ストリームは特定のストリーム タイプ用に構成されます。
- プロセッサ ノード: データ処理には、1 つ以上のプロセッサを含む 1 つのプロセッサ ノードがあります。各プロセッサは、パイプラインを通過するデータに対して実行するアクション(フィルタ、変換、編集など)を指定します。
- 宛先: 処理されたデータが送信される Google SecOps の宛先インスタンス。
ユースケース
たとえば、次のような場合があります。
- 未加工のログから空の Key-Value ペアを削除します。
- 機密データを秘匿化する
- 未加工のログコンテンツから取り込みラベルを追加します。
- マルチインスタンス環境では、直接取り込みログデータに取り込みラベルを適用して、ソース ストリーム インスタンス(Google Cloud Workspace など)を識別します。
- フィールド値で Palo Alto Cortex データをフィルタします。
- SentinelOne のデータをカテゴリ別に削減します。
- フィードと直接取り込みログからホスト情報を抽出し、Cloud Monitoring の
ingestion_sourceフィールドにマッピングします。
前提条件
Bindplane コンソールを使用して Google SecOps データ処理を管理する場合は、次の操作を行います。
- Google Security Operations コンソールで、インストーラに必要な事前定義された管理者ロールを付与します。詳細については、専用プロジェクトでプロジェクト IAM 管理者のロールを割り当てるをご覧ください。
[ロールを割り当てる] で、次の Identity and Access Management 事前定義ロールを選択します。
- Chronicle API 管理者(
roles/chronicle.admin)
- Chronicle API 管理者(
Bindplane Server コンソールをインストールします。SaaS またはオンプレミスについては、Bindplane Server コンソールをインストールするをご覧ください。
Bindplane コンソールで、Google SecOps の宛先インスタンスを Bindplane プロジェクトに接続します。詳細については、Google SecOps インスタンスに接続するをご覧ください。
少量の SecOps データの確認遅延を管理する
独自のエージェントを構成する Ingestion API ユーザーは、データ処理パイプラインの低ボリュームの SecOps パイプラインで確認応答時間が長くなる可能性があります。
レイテンシの平均値が 700 ミリ秒から 2 秒まで上昇する可能性があります。必要に応じて、タイムアウト期間とメモリを増やします。データ スループットが 4 MB を超えると、確認応答時間が短くなります。
Google SecOps インスタンスに接続する
開始する前に、[プロジェクトの統合] ページにアクセスするための Bindplane プロジェクト管理者権限があることを確認してください。
Google SecOps インスタンスは、データ出力の宛先として機能します。
Bindplane コンソールを使用して Google SecOps インスタンスに接続するには、次の操作を行います。
- Bindplane コンソールで、[プロジェクトの管理] ページに移動します。
- [統合] カードに移動し、[Google SecOps に接続] をクリックして [統合の編集] ウィンドウを開きます。
Google SecOps の宛先インスタンスの詳細を入力します。
このインスタンスは、次のように処理済みデータ(データ処理の出力)を取り込みます。フィールド 説明 リージョン Google SecOps インスタンスのリージョン。
Google Cloud コンソールでインスタンスを見つけるには、[セキュリティ] > [検出と制御] > [Google Security Operations] > [インスタンスの詳細] に移動します。お客様 ID Google SecOps インスタンスの顧客 ID。
Google SecOps コンソールで、[SIEM 設定] > [プロファイル] > [組織の詳細] に移動します。Google Cloud プロジェクト番号 Google Cloud Google SecOps インスタンスのプロジェクト番号。
Google SecOps コンソールでプロジェクト番号を確認するには、[SIEM 設定] > [プロファイル] > [組織の詳細] に移動します。認証情報 サービス アカウント認証情報は、Google SecOps Data Pipeline API の認証とアクセスに必要な JSON 値です。この JSON 値は、Google サービス アカウントの認証情報ファイルから取得します。
サービス アカウントは、Google SecOps インスタンスと同じ Google Cloud プロジェクトに配置する必要があります。また、Chronicle API 管理者ロール(roles/chronicle.admin)の権限が必要です。
サービス アカウントを作成して JSON ファイルをダウンロードする方法については、サービス アカウント キーの作成と削除をご覧ください。[接続] をクリックします。接続の詳細が正しく、Google SecOps に正常に接続できる場合は、次のようになります。
- Google SecOps インスタンスへの接続が開きます。
- 初めて接続すると、Bindplane コンソールに SecOps Pipelines が表示されます。
- Bindplane コンソールには、API を使用してこのインスタンス用に以前に設定した処理済みデータが表示されます。API を使用して構成したプロセッサの一部は Bindplane プロセッサに変換され、残りは未加工の OpenTelemetry Transformation Language(OTTL)形式で表示されます。Bindplane コンソールを使用して、API を使用して以前に設定したパイプラインとプロセッサを編集できます。
Google SecOps インスタンスへの接続が正常に作成されたら、SecOps パイプラインを作成し、Bindplane コンソールを使用してデータ処理を設定できます。
Bindplane コンソールを使用してデータ処理を設定する
Bindplane コンソールを使用すると、API を使用して設定されたパイプラインなど、Google SecOps で処理されたデータを管理できます。
始める前に
始める前に、次の重要な推奨事項をお読みになることをおすすめします。
- Backstory API を呼び出すプッシュベースのストリームは非推奨となり、データ処理はサポートされなくなりました。Chronicle Ingestion API を使用するように統合を移行します。
- Bindplane コンソールを初めてインストールする場合、または Google SecOps の宛先インスタンスを Bindplane プロジェクトに接続する場合は、前提条件をご覧ください。
- Bindplane コンソールを使用する代わりに、Google SecOps API を直接呼び出してデータ処理を設定、管理することもできます。詳細については、Google SecOps Data Pipeline API を使用するをご覧ください。
- 転送元と Bindplane から取り込まれたデータには、直接取り込みストリームとは異なる
collectorIDがタグ付けされます。ログの完全な可視性をサポートするには、データソースのクエリ時にすべての取り込み方法を選択するか、API を操作するときに関連するcollectorIDを明示的に参照する必要があります。
通常は Bindplane コンソールを使用して、Google SecOps で新しいログ処理パイプラインをプロビジョニングしてデプロイする手順は次のとおりです。
新しい Google SecOps パイプラインを作成する
Google SecOps パイプラインは、1 つのデータ処理コンテナを構成するためのコンテナです。新しい Google SecOps パイプライン コンテナを作成する手順は次のとおりです。
- Bindplane コンソールで、[SecOps Pipelines] タブをクリックして、[SecOps Pipelines] ページを開きます。
- [SecOps パイプラインを作成] をクリックします。
- [新しい SecOps パイプラインを作成] ウィンドウで、[SecOps パイプライン タイプ] を [Google SecOps](デフォルト)に設定します。
[SecOps パイプライン名] と [説明] を入力します。
[作成] をクリックします。新しいパイプライン コンテナは、[SecOps Pipelines] ページで確認できます。
このコンテナ内のデータ処理コンテナ ストリームとプロセッサを構成します。
データ処理コンテナを構成する
データ処理コンテナは、取り込むデータ ストリームと、Google SecOps の宛先インスタンスにデータが流れるときにデータを操作するプロセッサ(フィルタ、変換、秘匿化など)を指定します。
パイプライン構成カードは、データ処理パイプラインの可視化です。ここで、データ ストリームとプロセッサ ノードを構成できます。
- ストリームは、構成された仕様に従ってデータを取り込み、コンテナにフィードします。データ処理コンテナには 1 つ以上のストリームを設定できます。各ストリームは異なるストリーム用に構成されます。
- プロセッサ ノードは、データが Google SecOps の宛先インスタンスに流れるときにデータを操作するプロセッサで構成されます。
データ処理コンテナを構成する手順は次のとおりです。
- 新しい SecOps パイプラインを作成します。
- Bindplane コンソールで、[SecOps Pipelines] タブをクリックして、[SecOps Pipelines] ページを開きます。
- 新しいデータ処理コンテナを構成する SecOps パイプラインを選択します。
[パイプライン] 構成カードで、次の操作を行います。
- ストリームを追加します。
- プロセッサ ノードを構成します。Bindplane コンソールを使用してプロセッサを追加するには、プロセッサを構成するをご覧ください。
これらの構成が完了したら、データ処理のロールアウトを参照して、データの処理を開始します。
ストリームを追加する
ストリームを追加する手順は次のとおりです。
- [パイプライン] 構成カードで、[ 追加 ] アイコン [ストリームを追加] をクリックして、[ストリームの作成] ウィンドウを開きます。
[SecOps ストリームの作成] ウィンドウで、次のフィールドの詳細を入力します。
フィールド 説明 ログタイプ 取り込むデータのログタイプを選択します。例: CrowdStrike Falcon (CS_EDR)
注: 警告 アイコン は、ログタイプが別のストリーム(このパイプラインまたは Google SecOps インスタンスの別のパイプライン)ですでに構成されていることを示します。
使用できないログタイプを使用するには、まず他のストリーム構成から削除する必要があります。
ログタイプが構成されているストリーム構成を見つける方法については、SecOps パイプライン構成をフィルタするをご覧ください。取り込み方法 選択したログタイプのデータを取り込むために使用する取り込み方法を選択します。これらの取り込み方法は、以前に Google SecOps インスタンス用に定義されています。
次のいずれかのオプションを選択する必要があります。
- すべての取り込み方法: 選択したログタイプのすべての取り込み方法が含まれます。このオプションを選択すると、同じログタイプに特定の取り込み方法を使用する後続のストリームを追加できなくなります。例外: 他のストリームで、このログタイプ用に構成されていない他の特定の取り込み方法を選択できます。
- 特定の取り込み方法(
Cloud Native Ingestion、Feed、Ingestion API、Workspaceなど)。
フィード 取り込み方法として Feedを選択すると、選択したログタイプで使用可能なフィード名(Google SecOps インスタンスで事前構成済み)のリストが表示されます。設定を完了するには、関連するフィードを選択する必要があります。利用可能なフィードを表示して管理するには、[SIEM 設定] > [フィード テーブル] に移動します。- すべての取り込み方法: 選択したログタイプのすべての取り込み方法が含まれます。このオプションを選択すると、同じログタイプに特定の取り込み方法を使用する後続のストリームを追加できなくなります。例外: 他のストリームで、このログタイプ用に構成されていない他の特定の取り込み方法を選択できます。
[ストリームを追加] をクリックして、新しいストリームを保存します。新しいデータ ストリームが [パイプライン] 構成カードにすぐに表示されます。ストリームは、プロセッサノードと Google SecOps の宛先に自動的に接続されます。
SecOps パイプライン構成をフィルタする
[SecOps Pipelines] ページの検索バーを使用すると、複数の構成要素に基づいて SecOps パイプライン(データ処理コンテナ)をフィルタして見つけることができます。ログタイプ、取り込み方法、フィード名などの特定の条件を検索して、パイプラインをフィルタできます。
フィルタするには、次の構文を使用します。
logtype:valueingestionmethod:valuefeed:value
たとえば、特定のログタイプを含むストリーム構成を特定するには、検索バーに「logtype:」と入力し、結果のリストからログタイプを選択します。
プロセッサを構成する
データ処理コンテナには 1 つのプロセッサノードがあり、そのノードには 1 つ以上のプロセッサが保持されます。各プロセッサは、ストリームデータを順番に操作します。
- 最初のプロセッサは、未加工のストリーム データを処理します。
- 最初のプロセッサからの出力は、シーケンス内の次のプロセッサの入力としてすぐに使用されます。
- このシーケンスは、[プロセッサ] ペインに表示される順序で、後続のすべてのプロセッサに対して続行されます。1 つのプロセッサの出力が次のプロセッサの入力になります。
次の表に、プロセッサを示します。
| プロセッサ タイプ | 能力 |
|---|---|
| フィルタ | 条件でフィルタ |
| フィルタ | HTTP ステータスでフィルタする |
| フィルタ | 指標名でフィルタ |
| フィルタ | 正規表現でフィルタ |
| フィルタ | 重大度でフィルタする |
| 秘匿化 | 機密データの秘匿化 |
| 変換 | 項目の追加 |
| 変換 | Coalesce |
| 変換 | Concat |
| 変換 | フィールドをコピー |
| 変換 | フィールドを削除する |
| 変換 | Marshal |
| 変換 | フィールドを移動 |
| 変換 | CSV を解析 |
| 変換 | JSON を解析する |
| 変換 | キーの値を解析する |
| 変換 | 重大度フィールドを解析する |
| 変換 | タイムスタンプを解析する |
| 変換 | 正規表現で解析する |
| 変換 | XML を解析する |
| 変換 | 項目名の変更 |
| 変換 | 書き換えタイムスタンプ |
| 変換 | 分割 |
| 変換 | 変換 |
- 1 つ以上のプロセッサのシーケンスを追加、削除、または変更して、プロセッサ ノードを構成します。
プロセッサを追加する
プロセッサを追加する手順は次のとおりです。
[Pipeline] 構成カードで、[Processor] ノードをクリックして [Edit Processors] ウィンドウを開きます。[Edit Processors] ウィンドウは、データフロー順に次のペインに分かれています。
- 入力(またはソースデータ): 最近受信したストリーム ログデータ(処理前)
- 構成(またはプロセッサ リスト): プロセッサとその構成
- 出力(または結果): 最近の送信結果ログデータ(処理後)
パイプラインが以前にロールアウトされた場合、システムは最近の受信ログデータ(処理前)と最近の送信ログデータ(処理後)をペインに表示します。
[プロセッサを追加] をクリックして、プロセッサのリストを表示します。便宜上、プロセッサのリストはプロセッサ タイプ別にグループ化されています。リストを整理して独自のバンドルを追加するには、1 つ以上のプロセッサを選択して [新しいプロセッサ バンドルを追加] をクリックします。
プロセッサのリストで、追加するプロセッサを選択します。
必要に応じてプロセッサを構成します。
[保存] をクリックして、[プロセッサ] ノードにプロセッサ構成を保存します。
システムは、新しい構成をすぐにテストします。具体的には、受信ストリーム データ([入力] ペインから)の新しいサンプルを処理し、結果として得られた送信データを [出力] ペインに表示します。
データ処理パイプラインをロールアウトする
ストリームとプロセッサの構成が完了したら、次のようにパイプラインをロールアウトしてデータの処理を開始する必要があります。
[公開を開始] をクリックします。これにより、データ処理が直ちに有効になり、Google の安全なインフラストラクチャが構成に従ってデータの処理を開始します。
ロールアウトが成功すると、データ処理コンテナのバージョン番号が増加し、コンテナの名前の横に表示されます。
Google SecOps コンソールでデータ処理の詳細を表示する
以降のセクションでは、Google SecOps コンソールでデータ処理の詳細を表示する方法について説明します。
すべてのデータ処理構成を表示する
- Google SecOps コンソールで、[SIEM 設定] > [データ処理] に移動します。ここで、構成済みのすべてのパイプラインを表示できます。
- [Incoming Data Pipelines] 検索バーで、作成したパイプラインを検索します。パイプライン名やコンポーネントなどの要素で検索できます。検索結果には、パイプラインのプロセッサとその構成の概要が表示されます。
- パイプラインの概要では、次の操作を行うことができます。
- プロセッサ構成を確認します。
- 構成の詳細をコピーします。
- [Bindplane で開く] をクリックして、Bindplane コンソール内でパイプラインに直接アクセスして管理します。
設定済みのフィードを表示する
システムで構成されたフィードを表示するには、次の操作を行います。
- Google SecOps コンソールで、[SIEM 設定] > [フィード] に移動します。[フィード] ページには、システムで構成したすべてのフィードが表示されます。
- 各行にポインタを合わせると、⋮ [その他] メニューが表示されます。このメニューで、フィードの詳細を表示したり、フィードを編集、無効化、削除したりできます。
- [詳細を表示] をクリックして、詳細ウィンドウを表示します。
- [Bindplane で開く] をクリックして、Bindplane コンソールでそのフィードのストリーム構成を開きます。
データ処理の詳細を表示する(使用可能なログタイプ)
[利用可能なログタイプ] ページでデータ処理の詳細を表示するには、次の操作を行います。このページでは、利用可能なすべてのログタイプを確認できます。
- Google SecOps コンソールで、[SIEM 設定] > [使用可能なログタイプ] に移動します。メインページには、すべてのログタイプが表示されます。
- 各フィード行にポインタを合わせると、 more_vert [その他] メニューが表示されます。このメニューでは、フィードの詳細の表示、編集、無効化、削除を行うことができます。
- [データ処理を表示] をクリックして、フィードの構成を表示します。
- [Bindplane で開く] をクリックして、Bindplane コンソールでそのプロセッサのプロセッサ構成を開きます。
Google SecOps データ パイプライン メソッドを使用する
Google SecOps データ パイプライン メソッドは、処理済みデータを管理するための包括的なツールを提供します。これらのデータ パイプライン メソッドには、パイプラインの作成、更新、削除、一覧表示、フィードとログタイプをパイプラインに関連付ける操作が含まれます。
ユースケース
このセクションでは、データ パイプライン メソッドに関連する一般的なユースケースの例を示します。
このセクションの例を使用するには、次の操作を行います。
- お客様固有のパラメータ(URL やフィード ID など)を、ご自身の環境に適したパラメータに置き換えます。
- 独自の認証を挿入します。このセクションでは、ベアラー トークンは
******で編集されています。
特定の Google SecOps インスタンス内のすべてのパイプラインを一覧表示する
次のコマンドは、特定の Google SecOps インスタンスに存在するすべてのパイプラインを一覧表示します。
curl --location 'https://abc.def.googleapis.com/v123/projects/projectabc-byop/locations/us/instances/aaaa1aa1-111a-11a1-1111-11111a1aa1aa/logProcessingPipelines' \
--header 'Authorization: Bearer ******'
1 つのプロセッサで基本的なパイプラインを作成する
変換プロセッサを含む基本的なパイプラインを作成し、3 つのソースを関連付けるには、次の操作を行います。
次のコマンドを実行します。
curl --location 'https://abc.def.googleapis.com/v123/projects/projectabc-byop/locations/us/instances/aaaa1aa1-111a-11a1-1111-11111a1aa1aa/logProcessingPipelines' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer ******' \ --data '{ "displayName": "Example Pipeline", "description": "My description", "processors": [ { "transformProcessor": { "statements": [ "set(attributes[\"myKey1\"], \"myVal1\")", "set(attributes[\"myKey2\"], \"myVal2\")" ] } } ] }'レスポンスから
displayNameフィールドの値をコピーします。次のコマンドを実行して、3 つのストリーム(ログタイプ、コレクタ ID を含むログタイプ、フィード)をパイプラインに関連付けます。
displayNameフィールドの値を{pipelineName}値として使用します。curl --location 'https://abc.def.googleapis.com/v123/{pipelineName}:associateStreams' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer ******' \ --data '{ "streams": [ { "logType": "MICROSOFT_SENTINEL" }, { "logType": "A10_LOAD_BALANCER", "collectorId": "dddddddd-dddd-dddd-dddd-dddddddddddd" }, { "feed": "1a1a1a1a-1a1a-1a1a-1a1a-1a1a1a1a1a1a" } ] }'
3 つのプロセッサを含むパイプラインを作成する
このパイプラインでは、次のプロセッサを使用します。
- 変換: ログ本文を JSON として変換して解析します。
- フィルタ: 解析された本文に基づいて条件に一致するログをフィルタします。
- 秘匿化: Bindplane のプリセットの機密値と一致するデータを秘匿化します。
パイプラインを作成し、3 つのソースを関連付けるには、次の操作を行います。
次のコマンドを実行します。
curl --location 'https://abc.def.googleapis.com/v123/projects/projectabc-byop/locations/us/instances/aaaa1aa1-111a-11a1-1111-11111a1aa1aa/logProcessingPipelines' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer ******' \ --data-raw '{ "displayName": "My Pipeline 2", "description": "My description 2", "processors": [ { "transformProcessor": { "statements": [ "merge_maps(\n body,\n ParseJSON(\n body\n ),\n \"upsert\"\n) where IsMap(body) and true\n", "set(\n body,\n ParseJSON(\n body\n )\n) where not IsMap(body) and true\n" ], "errorMode": "IGNORE" } }, { "filterProcessor": { "logConditions": [ "true and severity_number != 0 and severity_number < 9" ] } }, { "redactProcessor": { "blockedValues": [ "\\b[A-Z]{2}\\d{2}(?: ?[A-Z0-9]){11,31}(?:\\s[A-Z0-9])*\\b", "\\b([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}\\b", "\\b(?:(?:(?:\\d{4}[- ]?){3}\\d{4}|\\d{15,16}))\\b", "\\b(?:(?:19|20)?\\d{2}[-/])?(?:0?[1-9]|1[0-2])[-/](?:0?[1-9]|[12]\\d|3[01])(?:[-/](?:19|20)?\\d{2})?\\b", "\\b[a-zA-Z0-9._/\\+\\-—|]+@[A-Za-z0-9\\-—|]+\\.[a-zA-Z|]{2,6}\\b", "\\b(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\b", "\\b(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\\b", "\\b((\\+|\\b)[1l][\\-\\. ])?\\(?\\b[\\dOlZSB]{3,5}([\\-\\. ]|\\) ?)[\\dOlZSB]{3}[\\-\\. ][\\dOlZSB]{4}\\b", "\\+[1-9]\\d{0,2}(?:[-.\\s]?\\(?\\d+\\)?(?:[-.\\s]?\\d+)*)\\b", "\\b\\d{3}[- ]\\d{2}[- ]\\d{4}\\b", "\\b[A-Z][A-Za-z\\s\\.]+,\\s{0,1}[A-Z]{2}\\b", "\\b\\d+\\s[A-z]+\\s[A-z]+(\\s[A-z]+)?\\s*\\d*\\b", "\\b\\d{5}(?:[-\\s]\\d{4})?\\b", "\\b[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}\\b" ], "allowAllKeys": true, "allowedKeys": [ "__bindplane_id__" ], "ignoredKeys": [ "__bindplane_id__" ], "redactAllTypes": true } } ] }'レスポンスから
displayNameフィールドの値をコピーします。次のコマンドを実行して、3 つのストリーム(ログタイプ、コレクタ ID を含むログタイプ、フィード)をパイプラインに関連付けます。
displayNameフィールドの値を{pipelineName}値として使用します。curl --location 'https://abc.def.googleapis.com/v123/{pipelineName}:associateStreams' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer ******' \ --data '{ "streams": [ { "logType": "MICROSOFT_SENTINEL" }, { "logType": "A10_LOAD_BALANCER", "collectorId": "dddddddd-dddd-dddd-dddd-dddddddddddd" }, { "feed": "1a1a1a1a-1a1a-1a1a-1a1a-1a1a1a1a1a1a" } ] }'
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。