ElasticsearchV7

統合バージョン: 15.0

Chronicle SOAR と連携するように ElasticsearchV7 を構成する

API トークンの作成方法

新しい API トークンを作成するには、次のリクエストを行います。

curl --location --request POST 'http://<server address>:<port>/_security/api_key' \
--header 'Authorization: Basic Base64(username, password)' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "siemplify-integration",
    "role_descriptors": {}
}':

レスポンスの例:

{
  "id": "G1NIWnI",
  "name": "siemplify-integration",
  "api_key": "dSwyjWJ_Ql"
}
  1. レスポンスから「id」パラメータと「api_key」パラメータを取得します。
  2. コロンで結合された「id」と「api_key」の Base64 エンコードを使用します(「id:api_key」など)。
  3. 結果は統合で API トークンとして使用されます。

Elasticsearch へのアクセス

Chronicle SOAR は、デフォルトで TCP ポート 9200 で RESTful API を介して Elasticsearch にアクセスします。Chronicle SOAR サーバーは、TCP 9200(デフォルト)の関連する Elasticsearch ノード、または Elasticsearch のデプロイ時にデフォルト ポートが使用されなかった場合は代替ポートにアクセスする必要があります。

Chronicle SOAR で ElasticsearchV7 統合を構成する

Chronicle SOAR で統合を構成する方法について詳しくは、統合を構成するをご覧ください。

CA 証明書を使用して Elasticsearch の統合を構成する

必要に応じて、CA 証明書ファイルを使用して接続を確認できます。

始める前に、以下のものが揃っていることを確認してください。

  • CA 証明書ファイル
  • 最新の Elasticsearch 統合バージョン

CA 証明書との統合を構成するには、次の手順を行います。

  1. CA 証明書ファイルを解析して Base64 文字列に変換します。
  2. 統合構成パラメータ ページを開きます。
  3. [CA 証明書ファイル] フィールドに文字列を挿入します。
  4. 統合が正常に構成されていることをテストするには、[SSL の検証] チェックボックスをオンにして [テスト] をクリックします。

統合のパラメータ

次のパラメータを使用して統合を構成します。

パラメータの表示名 種類 デフォルト値 必須 説明
インスタンス名 文字列 なし いいえ 統合を構成するインスタンスの名前。
説明 文字列 なし いいえ インスタンスの説明。
サーバー アドレス 文字列 x.x.x.x Elasticsearch 7.0.0 サーバーの IP アドレス。
ユーザー名 文字列 なし Elasticsearch 7.0.0 への接続に使用するユーザーのメールアドレス。
パスワード パスワード なし 該当するユーザーのパスワード。
API トークン パスワード なし いいえ Elasticsearch XPack API のトークン。
認証 チェックボックス オフ いいえ なし
SSL を確認 チェックボックス オフ いいえ Elasticsearch 7.0.0 接続に SSL 検証が必要な場合は、このチェックボックスを使用します(デフォルトではオフになっています)。
CA 証明書ファイル 文字列 なし いいえ CA 証明書ファイル。
リモートで実行 チェックボックス オフ いいえ 構成した統合をリモートで実行するには、フィールドのチェックボックスをオンにします。オンにすると、リモート ユーザー(エージェント)を選択するオプションが表示されます。

アクション

説明

事前に作成された Elasticsearch テストであり、単語辞書を返します。

パラメータ

パラメータ 種類 デフォルト値 説明
索引 文字列 *

Elasticsearch インデックスの検索パターン。

Elastic では、インデックスは DatabaseName に似ており、データはさまざまなインデックスにわたって保存されます。このパラメータは、検索するインデックスを定義します。「smp_plays-2019.06.13」のような正確な名前にすることも、ワイルドカードを使用してパターンで検索することもできます。 e: "smp_Programmatics-2019.06 "または "smp"。

Elasticsearch インデックスの詳細については、https://www.elastic.co/blog/what-is-an-elasticsearch-index をご覧ください。

クエリ 文字列 *

実行する検索クエリ。これは Lucene 構文のものです。

IE1: "*"(すべてのレコードを返すワイルドカードです)

IE2: 「level:error」

IE3: 「level:information」

IE4: 「level:error OR level:warning」

Lucene 構文の詳細については、https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax をご覧ください。

上限 文字列 100

ドキュメントの戻り数(10)を制限します。

0 = 上限なし

表示フィールド 文字列 *

返されるフィールドを制限します。デフォルト "*" = すべてのフィールドを返します。

単一のフィールドを指定できます。例: "level"

検索フィールド 文字列 _all

フリーテキスト クエリの検索フィールド(クエリでフィールド名が指定されていない場合)。

デフォルトは「_all」で、すべてのフィールドが検索されます。「_all」フィールドで適切な Lucene 構文を使用するか、特定のフィールドでテキスト検索を行うことをおすすめします。

例: 検索フィールド = "_all"。Query = "level:error" クエリは、「level」フィールドが「error」のすべてのレコードを返します。

例 2: 検索ボックス = "メッセージ"、クエリ = "ログイン アラーム"。クエリで、"Message" フィールドに「Login Alarm」というテキストを含むすべてのレコードが返されます。

タイムスタンプ フィールド 文字列 @timestamp 時間ベースのフィルタリングを実行するフィールドの名前。デフォルトは @timestamp です。[最も早い日付] と [最も古い日付] の両方が空の場合、時間ベースのフィルタリングは行われません。
最も古い日付 文字列 now-1d

検索の開始日。検索では、この時点以降のレコードのみが返されます。

入力は正確な UTC で指定できます。

形式: YYYY-MM-DDTHH:MM:SSZ

例: 2019-06-04T10:00:00Z

入力は相対形式(date-math を使用): "now"、"now-1d"、"now-1d/d"、"now-2h/h"

date-math の詳細については、https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#date-math をご覧ください。

最も早い日付 文字列 参加する

検索の終了日。検索では、この時点以前のレコードのみが返されます。

入力は正確な UTC で指定できます。

形式: YYYY-MM-DDTHH:MM:SSZ

例: 2019-06-04T10:00:00Z

入力は相対形式(date-math を使用)ですることもできます。

例: "now"、"now-1d"、"now-1d/d"、"now-2h/h"

date-math の詳細については、https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#date-math をご覧ください。

実行

このアクションはすべてのエンティティに対して実行されます。

アクションの結果

スクリプトの結果
スクリプトの結果名 値のオプション
結果 なし なし

説明

Elasticsearch ですべてを検索し、辞書形式で結果を返します。このアクションは、クエリで期間を使用する場合、高度な ES 検索アクションを使用して、期間のないクエリのみをサポートします。

パラメータ

パラメータ 種類 デフォルト値 説明
索引 文字列 *

Elasticsearch インデックスの検索パターン。

Elasticsearch では、インデックスは DatabaseName に似ており、データはさまざまなインデックスにわたって保存されます。

このパラメータは、検索するインデックスを定義します。たとえば、\"smp_Programmatics-2019.06.13\"\r\nor という正確な名前を使用でき、ワイルドカード()を使用してパターンを検索できます。 e: \"smp_Programmatics-2019.06\" または \"smp*\"。

Elasticsearch インデックスの詳細については、https://www.elastic.co/blog/what-is-an-elasticsearch-index をご覧ください。

クエリ 文字列 *

実行する検索クエリ。これは Lucene 構文のものです。

IE1: \"*\"(すべてのレコードを返すワイルドカード)

IE2: \"level:error\"

IE3: \"level:information\"

IE4: \"level:error OR level:warning\"

Lucene 構文の詳細については、https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax をご覧ください。

上限 文字列 100

ドキュメントの戻り数(10)を制限します。

0 = 上限なし

実行

このアクションはすべてのエンティティに対して実行されます。

アクションの結果

スクリプトの結果
スクリプトの結果名 値のオプション
結果 なし なし
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"
    }
]

Ping

説明

テスト: Elasticsearch サーバーへの接続を確認します。

パラメータ

なし

実行

このアクションはすべてのエンティティに対して実行されます。

アクションの結果

スクリプトの結果
スクリプトの結果名 値のオプション
is_success True/False is_success:False

説明

アクションは Elasticsearch ですべてを検索し、結果を辞書形式で返します。

パラメータ

パラメータ 種類 デフォルト値 説明
索引 文字列 *

Elasticsearch インデックスの検索パターン。

Elasticsearch では、インデックスは DatabaseName に似ており、データはさまざまなインデックスにわたって保存されます。

このパラメータは、検索するインデックスを定義します。「\smp_plays-2019.06.13\"」のように正確な名前を指定できます。また、()ワイルドカードを使用してパターンで検索することもできます。 e: \"smp_Programmatics-2019.06\" または \"smp*\"。

Elasticsearch インデックスの詳細については、https://www.elastic.co/blog/what-is-an-elasticsearch-index をご覧ください。

クエリ 文字列 *

実行する検索クエリ。これは Lucene 構文のものです。

IE1: \"*\"(すべてのレコードを返すワイルドカード)

IE2: \"level:error\"

IE3: \"level:information\"

IE4: \"level:error OR level:warning\"

Lucene 構文の詳細については、https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax をご覧ください。

上限 文字列 100

ドキュメントの戻り数(10)を制限します。

0 = 上限なし

実行

このアクションはすべてのエンティティに対して実行されます。

アクションの結果

スクリプトの結果
スクリプトの結果名 値のオプション
結果 なし なし
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"
  }
 ]

コネクタ

Chronicle SOAR で Elasticsearch v7 コネクタを構成する

Chronicle SOAR でコネクタを構成する方法の詳細については、コネクタの構成をご覧ください。

選択したコネクタを構成するには、次の表に示すコネクタ固有のパラメータを使用します。

Elasticsearch コネクタ

説明

このトピックでは、Chronicle SOAR で Elasticsearch を取り込みおよび処理のメカニズムと構成と統合する方法を示します。

Chronicle SOAR への Elasticsearch アラート転送

Chronicle SOAR は、指定されたクエリ(Lucene クエリ構文を使用)を使用して、指定された Elasticsearch インデックスを検索し、ケースに対して変換され、「アラート」としてコンテキスト化される Elasticsearch ドキュメントを返します。

コネクタ パラメータ

次のパラメータを使用してコネクタを構成します。

パラメータの表示名 種類 デフォルト値 必須 説明
デフォルトの環境 文字列 なし いいえ 必要な環境を選択します。(例: 「Customer One」)。
レポートの間隔 整数 0:0:0:10 いいえ 接続を実行する時間の長さを選択します。たとえば、「毎日」などです。
プロダクト フィールド名 文字列 device_product デバイス プロダクトを識別するために使用されるフィールド名。 例: _type。
イベント フィールド名 文字列 name イベント名(サブタイプ)を決定するために使用されるフィールド名。例: _source_match_event_id。
スクリプトのタイムアウト(秒) 文字列 60 現在のスクリプトを実行する Python プロセスのタイムアウト制限(秒単位)。
サーバー アドレス 文字列 なし Elasticsearch サーバーのアドレス。例: http://{ip_address}:{port}
ユーザー名 文字列 なし Elasticsearch のユーザー名。
パスワード パスワード なし Elasticsearch のパスワード。
認証 チェックボックス オフ いいえ 接続時に認証するかどうか。
API トークン パスワード なし いいえ Elasticsearch XPack API のトークン。
SSL を確認 チェックボックス オフ いいえ 接続で SSL を使用するかどうか。
アラート名のフィールド 文字列 なし アラート名が存在するフィールドの名前(フラットなフィールドパス)。例: _source_alert_info_alert
タイムスタンプ フィールド 文字列 なし タイムスタンプが配置されているフィールドの名前(フラットなフィールドパス)。例: source@timestamp
環境フィールド 文字列 なし いいえ 環境が配置されているフィールドの名前(フラットなフィールドパス)。例: _source_environment
インデックス 文字列 なし いいえ 検索するインデックス パターン。例: '*'
クエリ 文字列 なし いいえ 検索パターンクエリ(Lucene クエリ構文)。例: '*'
アラート数の上限 整数 20 1 サイクルで pull するアラートの最大数。例: 20。
最大日数(逆算) 整数 1 アラートを取得する最大日数。例: 3。
重大度フィールドのマッピング 文字列 なし いいえ 重大度の値が格納されるフィールドの名前。
プロキシ サーバー アドレス 文字列 なし いいえ 使用するプロキシ サーバーのアドレス。
プロキシのユーザー名 文字列 なし いいえ 認証に使用するプロキシ ユーザー名。
プロキシ パスワード パスワード なし いいえ 認証に使用するプロキシ パスワード。
重大度フィールド名 文字列 なし いいえ 文字列値に基づいて重大度をマッピングする場合は、マッピング ファイルを作成する必要があります。詳しくはドキュメント ポータルをご覧ください
環境の正規表現パターン 文字列 .* いいえ

[環境フィールド名] フィールドで見つかった値に対して実行する正規表現パターン。

デフォルトは、すべてキャッチして値を変更せずに返す .* です。

ユーザーが正規表現ロジックで環境フィールドを操作できるようにするために使用されます

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

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

重大度をマッピングするには、「重大度フィールド名」パラメータで重大度の値を取得するために使用するフィールドを指定する必要があります。レスポンスでは、整数、浮動小数点数、文字列の 3 種類の値を取得できます。整数と浮動小数点の場合、追加の構成を行う必要はありません。コネクタはこれらの値を読み取り、Chronicle SOAR 標準に従ってマッピングします。整数値がマッピングされる方法について簡単に説明します。

  • 100 - 重大
  • 100 > x >= 80 高
  • 80 > x >=60 中
  • 60 > x >=40 低
  • 40 > x 情報

レスポンスで文字列を扱っている場合は、追加の構成が必要です。コネクタ スクリプトが配置されているフォルダには、severity_map_config.json という構成ファイルがあります。このファイルは、重大度のマッピング ルールを定義します。

最初に、ファイルは次のようになります。

{
    "Default": 50
}

必要な値が event.severity にある状況を考えてみます。event.severity には、「悪意」、「良性」、「不明」の値を含めることができます。

まず、「重大度フィールド名」パラメータで、event.severity を使用するものを指定する必要があります。

次に、構成ファイルを更新する必要があります。

変更後、severity_map_config.json ファイルは次のようになります。

{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

これで、コネクタが event.severity = 「悪意」 のイベントを受信すると、重大度が「重大」になります。

コネクタルール

ホワイトリスト / ブラックリスト

コネクタは、ホワイトリスト/ブラックリストをサポートしていません。

プロキシのサポート

コネクタでプロキシがサポートされます。

Elasticsearch DSL コネクタ

説明

コネクタは、DSL クエリで REST API 呼び出しを行うことで機能します。

ユースケースと例

Elasticsearch で DSL クエリを検索パラメータとして使用できます。

コネクタ パラメータ

次のパラメータを使用してコネクタを構成します。

パラメータの表示名 種類 デフォルト値 必須 説明
デフォルトの環境 文字列 なし いいえ 必要な環境を選択します。(例: 「Customer One」)。
レポートの間隔 整数 0:0:0:10 いいえ 接続を実行する時間の長さを選択します。たとえば、「毎日」などです。
プロダクト フィールド名 文字列 device_product 商品名が保存されるフィールドの名前を記述します。
環境フィールド名 文字列 "" いいえ

環境名が格納されるフィールドの名前を記述します。

環境フィールドが見つからない場合、環境は " " です。

環境の正規表現パターン 文字列 .* いいえ

[環境フィールド名] フィールドで見つかった値に対して実行する正規表現パターン。

デフォルトは、すべてキャッチして値を変更せずに返す .* です。

ユーザーが正規表現ロジックで環境フィールドを操作できるようにするために使用されます

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

スクリプトのタイムアウト(秒) 整数 60 現在のスクリプトを実行している Python プロセスのタイムアウト上限。
サーバー アドレス 文字列 なし Elasticsearch API サーバーの IP アドレス。
ポート 文字列 なし Elasticsearch API サーバーのポート。
クエリ 文字列 なし

検索に使用される DSL クエリ。

有効な JSON 形式が必要です。

コネクタの安定性を高めるため、並べ替えタイムスタンプ キーを昇順で追加することをおすすめします。

索引 文字列 なし

検索に使用されるインデックス。

例: _all

タイムスタンプ フィールド 文字列 なし

タイムスタンプが配置されているフィールドの名前。
例:

ソース@timestamp

アラートのフィールド名 文字列 なし

アラート名が存在するフィールドの名前。
例:

_source_info_alertname

説明フィールド 文字列 なし いいえ

説明が格納されているフィールドの名前。
例:

_source_alert_info_description

重大度 文字列

アラートの重大度。
有効な値:

情報

重大

アラート数の上限 整数 100 いいえ 1 回の反復処理でコネクタから返されるアラートの数を制限します。
認証 チェックボックス オフ いいえ 接続で認証するかどうか。
ユーザー名 文字列 なし いいえ Elasticsearch アカウントのユーザー名。
パスワード パスワード なし いいえ Elasticsearch アカウントのパスワード。
Use SSL チェックボックス オフ いいえ SSL/TLS 接続を有効にするオプション。
重大度フィールド名 文字列 なし いいえ 文字列値に基づいて重大度をマッピングする場合は、マッピング ファイルを作成する必要があります。詳しくはドキュメント ポータルをご覧ください
アラートの重大度 文字列 なし いいえ

アラートの重大度。

指定できる値: 情報、低、中、高、重大。

注: このパラメータは「重大度フィールド名」よりも優先されます。「重大度フィールド名」を使用する場合は、このフィールドを空のままにしてください。

プロキシ サーバー アドレス 文字列 なし いいえ 使用するプロキシ サーバーのアドレス。
プロキシのユーザー名 文字列 なし いいえ 認証に使用するプロキシ ユーザー名。
プロキシ パスワード パスワード なし いいえ 認証に使用するプロキシ パスワード。

サポートされている表記

コネクタは 3 つの表記をサポートしています。たとえば、「イベント フィールド名」パラメータで event.type を使用する場合です。その場合、_source_event_type、event_type、event.type を指定できます。これらの値はすべて同じように動作します。

パラメータの場合:

  • プロダクト フィールド名
  • イベント フィールド名
  • 重大度フィールド名
  • 環境フィールド
  • タイムスタンプ フィールド
  • アラート名のフィールド
  • アラートの説明フィールド - DSL コネクタ専用

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

重大度をマッピングするには、「重大度フィールド名」パラメータで重大度の値を取得するために使用するフィールドを指定する必要があります。レスポンスでは、整数、浮動小数点数、文字列の 3 種類の値を取得できます。整数と浮動小数点の場合、追加の構成を行う必要はありません。コネクタはこれらの値を読み取り、Chronicle SOAR 標準に従ってマッピングします。整数値がマッピングされる方法について簡単に説明します。

  • 100 - 重大
  • 100 > x >= 80 高
  • 80 > x >=60 中
  • 60 > x >=40 低
  • 40 > x 情報

レスポンスで文字列を扱っている場合は、追加の構成が必要です。コネクタ スクリプトが配置されているフォルダには、severity_map_config.json という構成ファイルがあります。このファイルは、重大度のマッピング ルールを定義します。

最初に、ファイルは次のようになります。

{
    "Default": 50
}

必要な値が event.severity にある状況を考えてみます。event.severity には、「悪意」、「良性」、「不明」の値を含めることができます。

まず、「重大度フィールド名」パラメータで、event.severity を使用するものを指定する必要があります。

次に、構成ファイルを更新する必要があります。

変更後、severity_map_config.json ファイルは次のようになります。

{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

これで、コネクタが event.severity = 「悪意」 のイベントを受信すると、重大度が「重大」になります。

コネクタルール

ホワイトリスト / ブラックリスト

コネクタは、ホワイトリスト/ブラックリストをサポートしていません。

プロキシのサポート

コネクタでプロキシがサポートされます。