OpenSearch を Google SecOps と統合する

統合バージョン: 1.0

このドキュメントでは、OpenSearch を Google Security Operations と統合する方法について説明します。

ユースケース

OpenSearch 統合は、次のセキュリティ オーケストレーションと調査のユースケースに対応しています。

  • 脅威ハンティングの自動化: Lucene と DSL クエリを使用して、すべての OpenSearch インデックスで特定のセキュリティ侵害インジケーター(IoC)または不審なパターンを定期的に検索します。

  • アラートの一元的な取り込み: OpenSearch のドキュメントを、対応可能なアラートとして Google SecOps に取り込み、データレイクのセキュリティ イベントに優先順位を付けて調査します。

  • コンテキスト データの取得: OpenSearch から関連するログや履歴データを自動的に取得して、既存のセキュリティ ケースを拡充し、調査中にアナリストがより深いコンテキストを把握できるようにします。

  • 柔軟なデータ マッピング: OpenSearch ドキュメントの重大度レベルと環境タグを Google SecOps 標準に動的にマッピングし、さまざまなログソース間で一貫性を維持します。

始める前に

Google SecOps プラットフォームで統合を構成する前に、次のものが揃っていることを確認してください。

  • CA 証明書ファイル: 接続を保護するための有効な認証局ファイル。

  • 最新の統合バージョン: OpenSearch 統合の最新バージョンを使用していることを確認します。

  • Base64 でエンコードされた証明書: CA 証明書ファイルの内容は、構成前に Base64 文字列に変換する必要があります。

CA 証明書を使用して統合を構成するには、次の手順を完了します。

  1. インテグレーション構成パラメータのページを開きます。
  2. Base64 でエンコードされた文字列を [CA 証明書ファイル] フィールドに貼り付けます。
  3. [SSL の検証] チェックボックスをオンにします。
  4. [テスト] をクリックして、統合が正しく構成されていることを確認します。

統合のパラメータ

OpenSearch 統合には、次のパラメータが必要です。

パラメータ 説明
Server Address

必須。

OpenSearch インスタンスのエンドポイント URL。プロトコルとポートを含みます(例: https://10.0.0.1:9200)。

Username

省略可。

OpenSearch インスタンスの認証に使用されるユーザー名。

Password

省略可。

指定されたユーザー名に関連付けられているパスワード。

API Token

省略可。

ユーザー名とパスワードの代わりに認証に使用される API トークン。

Authenticate

省略可。

選択すると、統合によって、指定された認証情報を使用して OpenSearch サーバーへの接続が認証されます。

Verify SSL

省略可。

選択すると、OpenSearch サーバーに接続するときに SSL 証明書が検証されます。

CA Certificate File

省略可。

サーバーの SSL 証明書の検証に使用される、PEM 形式の認証局(CA)証明書ファイルの内容。

Google SecOps で統合を構成する手順については、統合を構成するをご覧ください。

必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できるようになります。複数のインスタンスの構成とサポートの方法については、複数のインスタンスのサポートをご覧ください。

操作

アクションの詳細については、 デスクから保留中のアクションに対応する手動アクションを実行するをご覧ください。

高度な ES 検索アクションを使用して、OpenSearch サーバーで事前構成された検索クエリを実行し、結果を辞書形式で取得します。

このアクションは Google SecOps エンティティに対して実行されません。

アクション入力

[Advanced ES Search] アクションには、次のパラメータが必要です。

パラメータ 説明
Index

省略可。

OpenSearch インデックスの検索パターン(例: smp_playbooks-2019.06.13)。ワイルドカードを使用して複数のインデックスを検索できます(例: smp_playbooks-*)。

デフォルト値は * です。

Query

省略可。

Lucene 構文を使用して実行する検索クエリ(例: level:error OR level:warning)。

デフォルト値は * です。

Limit

省略可。

返すドキュメントの最大数。上限なしにするには、この値を 0 に設定します。

デフォルト値は 100 です。

Display Field

省略可。

返す特定のフィールドのカンマ区切りリスト。

デフォルト値は * で、すべてのフィールドを返します。

Search Field

省略可。

Query にターゲット フィールド名が含まれていない場合に検索する特定のフィールド。これは、フリーテキスト クエリのデフォルトの検索ターゲットとして機能します。

デフォルト値は _all で、すべてのインデックス付きフィールドを検索します。

Timestamp Field

省略可。

時間ベースのフィルタリングに使用されるフィールドの名前。

Earliest DateOldest Date の両方が空の場合、アクションは時間ベースのフィルタリングを実行しません。

デフォルト値は @timestamp です。

Oldest Date

省略可。

検索の開始日。このアクションは、このタイムスタンプ以降に発生したレコードを返します。

正確な UTC タイムスタンプ(YYYY-MM-DDTHH:MM:SSZ)または相対日付計算(now-1d など)を指定できます。

デフォルト値は now-1d です。

Earliest Date

省略可。

検索の終了日。このアクションは、このタイムスタンプ以降に発生したレコードを返します。

正確な UTC タイムスタンプ(YYYY-MM-DDTHH:MM:SSZ)または相対日付計算(now など)を指定できます。

デフォルト値は now です。

アクションの出力

[Advanced ES Search] アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用不可
出力メッセージ 利用可能
スクリプトの結果 利用可能
スクリプトの結果

次の表に、高度な ES 検索アクションを使用する場合のスクリプト結果出力の値を示します。

スクリプトの結果名
results RESULTS

DSL 検索アクションを使用して、すべての OpenSearch インデックスで包括的な検索を実行し、結果を辞書形式で取得します。

このアクションは Google SecOps エンティティに対して実行されません。

アクション入力

DSL 検索アクションには、次のパラメータが必要です。

パラメータ 説明
Index

省略可。

OpenSearch インデックスの検索パターン(例: smp_playbooks-2019.06.13)。ワイルドカードを使用して複数のインデックスを検索できます(例: smp_playbooks-*)。

デフォルト値は * です。

Query

省略可。

Lucene 構文を使用して実行する検索クエリ(例: level:error OR level:warning)。

デフォルト値は * です。

Limit

省略可。

返すドキュメントの最大数。上限なしにするには、この値を 0 に設定します。

デフォルト値は 100 です。

アクションの出力

DSL 検索アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用可能
出力メッセージ 利用可能
スクリプトの結果 利用可能
JSON の結果

次の例は、DSL 検索アクションを使用した場合に受信する JSON 結果の出力を示しています。

[
    {
        "_score": 0.2876821,
        "_type": "person",
        "_id": "2",
        "_source": {
            "lastname": "Smith",
            "name": "John",
            "job_description": "Systems administrator"
        },
        "_index": "accounts"
    }, {
        "_score": 0.28582606,
        "_type": "person",
        "_id": "1",
        "_source":
        {
            "lastname": "Doe",
            "name": "John",
            "job_description": "Systems administrator and Linux specialist"
        },
        "_index": "accounts"
    }
]
スクリプトの結果

次の表に、DSL 検索アクションを使用する場合のスクリプト結果出力の値を示します。

スクリプトの結果名
results RESULTS

Ping

Ping アクションを使用して、OpenSearch への接続をテストします。

このアクションは Google SecOps エンティティに対して実行されません。

アクション入力

なし

アクションの出力

Ping アクションは次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用不可
出力メッセージ 利用可能
スクリプトの結果 利用可能
スクリプトの結果

次の表に、Ping アクションを使用した場合のスクリプト結果出力の値を示します。

スクリプトの結果名
is_success true または false

Simple ES Search アクションを使用して、OpenSearch のすべてのインデックス付きフィールドで基本的な検索を実行し、結果を辞書形式で取得します。

このアクションは Google SecOps エンティティに対して実行されません。

アクション入力

Simple ES Search アクションには、次のパラメータが必要です。

パラメータ 説明
Index

省略可。

OpenSearch インデックスの検索パターン(例: smp_playbooks-2019.06.13)。ワイルドカードを使用して複数のインデックスを検索できます(例: smp_playbooks-*)。

デフォルト値は * です。

Query

省略可。

Lucene 構文を使用して実行する検索クエリ(例: level:error OR level:warning)。

デフォルト値は * です。

Limit

省略可。

返すドキュメントの最大数。上限なしにするには、この値を 0 に設定します。

デフォルト値は 100 です。

アクションの出力

[Simple ES Search] アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用可能
出力メッセージ 利用可能
スクリプトの結果 利用可能
JSON の結果

次の例は、Simple ES Search アクションを使用した場合に受信する JSON 結果の出力を示しています。

[{
    "_score": 0.2876821,
    "_type": "person",
    "_id": "2",
    "_source":
        {
          "lastname": "Smith",
          "name": "John",
          "job_description": "Systems administrator"
         },
     "_index": "accounts"
 },
 {
     "_score": 0.28582606,
     "_type": "person",
     "_id": "1",
     "_source":
       {
         "lastname": "Doe",
         "name": "John",
         "job_description": "Systems administrator and Linux specialist"
       },
    "_index": "accounts"
  }
 ]
スクリプトの結果

次の表に、Simple ES Search アクションを使用する場合のスクリプト結果出力の値を示します。

スクリプトの結果名
results RESULTS

コネクタ

Google SecOps でコネクタを構成する方法については、データを取り込む(コネクタ)をご覧ください。

OpenSearch コネクタ

OpenSearch コネクタを使用して、指定された OpenSearch インデックスを Lucene クエリで検索し、ドキュメントをアラートとして Google SecOps に取り込みます。

コネクタの入力

OpenSearch コネクタには、次のパラメータが必要です。

パラメータ 説明
Product Field Name

必須。

商品名が保存されるフィールドの名前。

商品名は主にマッピングに影響します。コネクタのマッピング プロセスを合理化して改善するため、デフォルト値はコードから参照されるフォールバック値に解決されます。このパラメータの無効な入力は、デフォルトでフォールバック値に解決されます。

デフォルト値は Product Name です。

Event Field Name

必須。

イベント名(サブタイプ)を特定するフィールドの名前。

デフォルト値は name です。

Script Timeout (Seconds)

必須。

現在のスクリプトを実行する Python プロセスのタイムアウト上限(秒単位)。

デフォルト値は 180 です。

Server Address

必須。

OpenSearch インスタンスのエンドポイント URL。プロトコルとポートを含みます(例: https://10.0.0.1:9200)。

Username

省略可。

OpenSearch インスタンスの認証に使用されるユーザー名。

Password

省略可。

指定されたユーザー名に関連付けられているパスワード。

Authenticate

省略可。

選択すると、統合によって、指定された認証情報を使用して OpenSearch サーバーへの接続が認証されます。

API Token

省略可。

ユーザー名とパスワードの代わりに認証に使用される API トークン。

Verify SSL

省略可。

選択すると、OpenSearch サーバーに接続するときに SSL 証明書が検証されます。

Alert Name Field

必須。

アラート名を含むフィールドの名前(例: _source_alert_info_alert)。

Timestamp Field

必須。

タイムスタンプを含むフィールドの名前(例: _source_@timestamp)。

Environment Field Name

省略可。

環境名が保存されるフィールドの名前。

環境フィールドがない場合、コネクタはデフォルト値を使用します。

デフォルト値は "" です。

Indexes

省略可。

検索するインデックス パターン。すべてのインデックスを検索するには、* を使用します。

Query

省略可。

Lucene 構文を使用して実行する検索クエリ。

Alerts Count Limit

必須。

1 回のサイクルで取得するアラートの最大数。

デフォルト値は 20 です。

Max Days Backwards

必須。

アラートを取得する現在までの日数。

このパラメータは、コネクタを初めて有効にした後の最初のコネクタ イテレーション、または期限切れのコネクタ タイムスタンプのフォールバック値に適用できます。

デフォルト値は 1 です。

Severity Field Name

省略可。

アラートの重大度値を抽出するために使用されるフィールド名。

フィールドに数値(整数または浮動小数点数)が含まれている場合、コネクタはそれらを Google SecOps の重大度レベルに自動的にマッピングします(たとえば、100Critical になります)。フィールドに文字列値が含まれている場合は、severity_map_config.json ファイルでマッピング ルールを定義する必要があります。

Proxy Server Address

省略可。

使用するプロキシ サーバーのアドレス。

Proxy Username

省略可。

プロキシ サーバーでの認証に使用されるユーザー名。

Proxy Password

省略可。

プロキシ サーバーでの認証に使用されるパスワード。

Environment Regex Pattern

省略可。

Environment Field Name フィールドで見つかった値に対して実行する正規表現パターン。このパラメータを使用すると、正規表現ロジックを使用して環境フィールドを操作できます。

デフォルト値 .* を使用して、必要な未加工の Environment Field Name 値を取得します。

正規表現パターンが null か空の場合、または環境値が null の場合、最終的な環境の結果はデフォルト環境になります。

OpenSearch DSL コネクタ

OpenSearch DSL コネクタを使用して、ドメイン固有言語(DSL)クエリを使用して REST API 呼び出しを行うことで、ドキュメントをアラートとして Google SecOps に取り込みます。

コネクタの入力

OpenSearch DSL コネクタには、次のパラメータが必要です。

パラメータ 説明
Product Field Name

必須。

商品名が保存されるフィールドの名前。

商品名は主にマッピングに影響します。コネクタのマッピング プロセスを合理化して改善するため、デフォルト値はコードから参照されるフォールバック値に解決されます。このパラメータの無効な入力は、デフォルトでフォールバック値に解決されます。

デフォルト値は Product Name です。

デフォルト値は device_product です。

Event Field Name

必須。

イベント名(サブタイプ)を特定するフィールドの名前。

デフォルト値は name です。

Script Timeout (Seconds)

必須。

現在のスクリプトを実行する Python プロセスのタイムアウト上限(秒単位)。

デフォルト値は 60 です。

Server Address

必須。

OpenSearch インスタンスのエンドポイント URL。プロトコル(https://10.0.0.1 など)を含みます。

Port

必須。

OpenSearch API サーバーへの接続に使用されるポート。

Query

必須。

検索に使用される DSL クエリ(JSON 形式)。

コネクタの安定性を高めるには、クエリ内で並べ替えタイムスタンプ キーを昇順で含めることをおすすめします。

Index

必須。

検索に使用されたインデックス。すべてのインデックスを検索するには、_all を使用します。

Timestamp Field

必須。

タイムスタンプを含むフィールドの名前(例: _source_@timestamp)。

Alert Field Name

必須。

アラート名を含むフィールドの名前(例: _source_info_alertname)。

Description Field

省略可。

アラートの説明を含むフィールドの名前(例: _source_alert_info_description)。

Severity

必須。

取り込まれたすべてのアラートに割り当てる静的な重大度レベル。このパラメータは、Alert SeveritySeverity Field Name が空の場合に使用されます。

デフォルト値は Medium です。

Alert Severity

省略可。

アラートに割り当てる重大度。このパラメータは Severity Field Name よりも優先されます。

Severity Field Name を使用して動的マッピングを使用する場合は、このフィールドを空のままにします。

Severity Field Name

省略可。

アラートの重大度値を抽出するために使用されるフィールド名。

フィールドに数値(整数または浮動小数点数)が含まれている場合、コネクタはそれらを Google SecOps の重大度レベルに自動的にマッピングします(たとえば、100Critical になります)。フィールドに文字列値が含まれている場合は、severity_map_config.json ファイルでマッピング ルールを定義する必要があります。

Alerts Count Limit

省略可。

1 回のサイクルで取得するアラートの最大数。

デフォルト値は 100 です。

Authenticate

省略可。

選択すると、コネクタは指定された認証情報を使用して接続を認証します。

Username

省略可。

OpenSearch インスタンスの認証に使用されるユーザー名。

Password

省略可。

OpenSearch インスタンスの認証に使用されるパスワード。

Use SSL

省略可。

選択すると、コネクタはサーバーへの SSL/TLS 接続を有効にします。

Proxy Server Address

省略可。

接続に使用するプロキシ サーバーのアドレス。

Proxy Username

省略可。

プロキシ サーバーでの認証に使用されるユーザー名。

Proxy Password

省略可。

プロキシ サーバーでの認証に使用されるパスワード。

Environment Field Name

省略可。

環境名が保存されるフィールドの名前。

環境フィールドがない場合、コネクタはデフォルト値を使用します。

デフォルト値は "" です。

Environment Regex Pattern

省略可。

Environment Field Name フィールドで見つかった値に対して実行する正規表現パターン。このパラメータを使用すると、正規表現ロジックを使用して環境フィールドを操作できます。

デフォルト値 .* を使用して、必要な未加工の Environment Field Name 値を取得します。

正規表現パターンが null か空の場合、または環境値が null の場合、最終的な環境の結果はデフォルト環境になります。

デフォルト値は .* です。

表記のサポート

コネクタは、フィールド マッピング用に 3 種類の表記をサポートしています。たとえば、event.type をマッピングするには、_source_event_typeevent_typeevent.type を指定します。

これは次のパラメータに適用されます。

  • Product Field Name
  • Event Field Name
  • Severity Field Name
  • Environment Field Name
  • Timestamp Field
  • Alert Field Name
  • Description Field(DSL コネクタのみ)

コネクタで重大度をマッピングする方法

Severity Field Name に数値(整数または浮動小数点数)が含まれている場合、コネクタは次のようにマッピングします。

  • 重大: 100
  • : 80 ≤ x < 100
  • : 60 ≤ x < 80
  • : 40 ≤ x < 60
  • 情報: x < 40

文字列値の場合は、コネクタ スクリプト フォルダの severity_map_config.json ファイルを更新する必要があります。

構成の例

「悪意」、「不明」、「良性」を含む event.severity フィールドをマッピングするには:

  1. [Severity Field Name] パラメータに「event.severity」と入力します。
  2. severity_map_config.json を更新します。
{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。