ElasticsearchV7
統合バージョン: 17.0
Google Security Operations と連携するように 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"
}
- レスポンスから「id」パラメータと「api_key」パラメータを取得します。
- 「id」と「api_key」をコロンで結合した「id:api_key」のような文字列を base64 でエンコードして使用します。
- 結果は、統合の API トークンとして使用されます。
Elasticsearch へのアクセス
Google SecOps は、デフォルトで TCP ポート 9200 の RESTful API を介して Elasticsearch にアクセスします。Google SecOps サーバーは、TCP 9200(デフォルト)または Elasticsearch のデプロイ時にデフォルトのポートが使用されなかった場合は代替ポートで、関連する Elasticsearch ノードにアクセスする必要があります。
Google SecOps で ElasticsearchV7 インテグレーションを構成する
Google SecOps で統合を構成する方法について詳しくは、統合を構成するをご覧ください。
CA 証明書を使用して Elasticsearch との統合を構成する
必要に応じて、CA 証明書ファイルを使用して接続を確認できます。
始める前に、次のものが揃っていることを確認してください。
- CA 証明書ファイル
- 最新の Elasticsearch 統合バージョン
CA 証明書を使用して統合を構成するには、次の操作を行います。
- CA 証明書ファイルを Base64 文字列に解析します。
- インテグレーション構成パラメータのページを開きます。
- 文字列を [CA 証明書ファイル] フィールドに挿入します。
- 統合が正常に構成されていることをテストするには、[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 証明書ファイル。 |
リモートで実行 | チェックボックス | オフ | いいえ | 構成した統合をリモートで実行するには、フィールドのチェックボックスをオンにします。オンにすると、リモート ユーザー(エージェント)を選択するオプションが表示されます。 |
アクション
高度な ES 検索
説明
事前に作成された Elasticsearch テストであり、単語辞書を返します。
パラメータ
パラメータ | 種類 | デフォルト値 | 説明 |
---|---|---|---|
索引 | 文字列 | * | Elasticsearch インデックスの検索パターン。 Elastic では、インデックスは 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 = 上限なし |
表示フィールド | 文字列 | * | 返されるフィールドを制限します。デフォルトの「*」= すべてのフィールドを返します。 1 つのフィールドを指定できます(例: level)。 |
検索フィールド | 文字列 | _all | フリーテキスト クエリの検索フィールド(クエリでフィールド名が指定されていない場合)。 デフォルトは「_all」です。これは、すべてのフィールドが検索されることを意味します。「_all」フィールドで適切な Lucene 構文を使用するか、特定のフィールドでテキスト検索を行うことをおすすめします。 Ie1: 検索フィールド = "_all"。クエリ = "level:error" クエリで、"level" フィールドが "error" と等しいすべてのレコードが返されます。 Ie2: [検索フィールド] = [Message]、[クエリ] = 「Login Alarm」。クエリで、"Message" フィールドに「Login Alarm」というテキストを含むすべてのレコードが返されます。 |
タイムスタンプ フィールド | 文字列 | @timestamp | 時間ベースのフィルタリングを実行するフィールドの名前。デフォルトは @timestamp です。[最も早い日付] と [最も古い日付] の両方が空の場合、時間ベースのフィルタリングは行われません。 |
最も古い日付 | 文字列 | now-1d | 検索の開始日。検索では、この時点以降のレコードのみが返されます。 入力は正確な UTC で指定できます。 形式: YYYY-MM-DDTHH:MM:SSZ 例: 2019-06-04T10:00:00Z 入力は相対形式(日付計算を使用)でも可能です。tie: "now", "now-1d", "now-1d/d", "now-2h/h" 日付計算の詳細については、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 入力は相対形式(日付計算を使用)でも可能です。 例: 「now」、「now-1d」、「now-1d/d」、「now-2h/h」 日付計算の詳細については、https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#date-math をご覧ください。 |
実行
このアクションはすべてのエンティティに対して実行されます。
アクションの結果
スクリプトの結果
スクリプトの結果名 | 値のオプション | 例 |
---|---|---|
結果 | なし | なし |
DSL 検索
説明
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 |
Simple ES Search
説明
Action は Elasticsearch のすべてを検索し、結果を辞書形式で返します。
パラメータ
パラメータ | 種類 | デフォルト値 | 説明 |
---|---|---|---|
索引 | 文字列 | * | Elasticsearch インデックスの検索パターン。 Elasticsearch では、インデックスは DatabaseName のようなもので、データはさまざまなインデックスに保存されます。 このパラメータは、検索するインデックスを定義します。たとえば、\"smp_playbooks-2019.06.13\" という正確な名前を使用でき、ワイルドカード()を使用してパターンを検索できます。 e: \"smp_playbooks-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"
}
]
コネクタ
Google SecOps で Elasticsearch v7 コネクタを構成する
Google SecOps でコネクタを構成する方法の詳細については、コネクタの構成をご覧ください。
選択したコネクタを構成するには、次の表に示すコネクタ固有のパラメータを使用します。
Elasticsearch コネクタ
説明
このトピックでは、Google SecOps が取り込みと処理のメカニズムと構成で Elasticsearch を統合する方法について説明します。
Elasticsearch アラートの Google SecOps への転送
Google SecOps は、指定された Elasticsearch インデックスを、指定されたクエリ(Lucene クエリ構文を使用)で検索し、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 サイクルで取得するアラートの最大数。例: 20。 |
最大日数(逆算) | 整数 | 1 | ○ | それ以降、アラートを取得する最大日数。例: 3。 |
重大度フィールドのマッピング | 文字列 | なし | いいえ | 重大度の値が保存されるフィールドの名前。 |
プロキシ サーバーのアドレス | 文字列 | なし | いいえ | 使用するプロキシ サーバーのアドレス。 |
プロキシのユーザー名 | 文字列 | なし | いいえ | 認証に使用するプロキシのユーザー名。 |
プロキシ パスワード | パスワード | なし | いいえ | 認証に使用するプロキシ パスワード。 |
重大度フィールド名 | 文字列 | なし | いいえ | 文字列値に基づいて重要度をマッピングする場合は、マッピング ファイルを作成する必要があります。詳しくは、ドキュメント ポータルをご覧ください。 |
環境の正規表現パターン | 文字列 | .* | いいえ | [環境フィールド名] フィールドで見つかった値に対して実行する正規表現パターン。 デフォルトは、すべてキャッチして値を変更せずに返す .* です。 ユーザーが正規表現ロジックで環境フィールドを操作できるようにするために使用されます 正規表現パターンが null か空の場合、または環境値が null の場合、最終的な環境の結果は "" になります。 |
コネクタで重大度をマッピングする方法
重大度をマッピングするには、[Severity Field Name] パラメータで重大度の値を取得するために使用するフィールドを指定する必要があります。レスポンスでは、整数、浮動小数点数、文字列の 3 種類の値を取得できます。整数と浮動小数点の場合、追加の構成を行う必要はありません。コネクタはこれらの値を読み取り、Google SecOps 標準に従ってマッピングします。整数値のマッピング方法を簡単に説明します。
- 100 - 重大
- 100 > x >= 80 高
- 80 > x >=60 中
- 60 > x >=40 低
- 40 > x 情報
レスポンスで文字列を扱う場合は、追加の構成が必要です。コネクタ スクリプトが配置されているフォルダに、構成ファイル名 severity_map_config.json
があります。このファイルは、重大度のマッピング ルールを定義します。
最初は、ファイルは次のようになります。
{
"Default": 50
}
たとえば、必要な値が event.severity
にあるとします。event.severity
には、「悪意」、「良性」、「不明」の値を含めることができます。
まず、[Severity Field Name] パラメータで 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 接続を有効にするオプション。 |
重大度フィールド名 | 文字列 | なし | いいえ | 文字列値に基づいて重要度をマッピングする場合は、マッピング ファイルを作成する必要があります。詳しくは、ドキュメント ポータルをご覧ください。 |
アラートの重大度 | 文字列 | なし | いいえ | アラートの重大度。 指定できる値: 情報、低、中、高、重大。 注: このパラメータは [Severity Field Name] よりも優先されます。[Severity Field Name] を使用する場合は、このフィールドを空のままにします。 |
プロキシ サーバーのアドレス | 文字列 | なし | いいえ | 使用するプロキシ サーバーのアドレス。 |
プロキシのユーザー名 | 文字列 | なし | いいえ | 認証に使用するプロキシのユーザー名。 |
プロキシ パスワード | パスワード | なし | いいえ | 認証に使用するプロキシ パスワード。 |
サポートされている表記
コネクタは 3 つの表記をサポートしています。たとえば、[イベント フィールド名] パラメータで event.type を使用する場合。その場合は、_source_event_type、event_type、event.type のいずれかを指定できます。これらの値はすべて同じように動作します。
パラメータの場合:
- プロダクト フィールド名
- イベント フィールド名
- 重大度フィールド名
- 環境フィールド
- タイムスタンプ フィールド
- アラート名フィールド
- アラートの説明フィールド - DSL コネクタ専用
コネクタで重大度をマッピングする方法
重大度をマッピングするには、[Severity Field Name] パラメータで重大度の値を取得するために使用するフィールドを指定する必要があります。レスポンスでは、整数、浮動小数点数、文字列の 3 種類の値を取得できます。整数と浮動小数点の場合、追加の構成を行う必要はありません。コネクタはこれらの値を読み取り、Google SecOps 標準に従ってマッピングします。整数値のマッピング方法を簡単に説明します。
- 100 - 重大
- 100 > x >= 80 高
- 80 > x >=60 中
- 60 > x >=40 低
- 40 > x 情報
レスポンスで文字列を扱う場合は、追加の構成が必要です。コネクタ スクリプトが配置されているフォルダに、構成ファイル名 severity_map_config.json
があります。このファイルは、重大度のマッピング ルールを定義します。
最初は、ファイルは次のようになります。
{
"Default": 50
}
たとえば、必要な値が event.severity
にあるとします。event.severity
には、「悪意」、「良性」、「不明」の値を含めることができます。
まず、[Severity Field Name] パラメータで event.severity
を使用することを指定する必要があります。
次に、構成ファイルを更新する必要があります。
変更後、severity_map_config.json
ファイルは次のようになります。
{
"event.severity": {
"Malicious": 100,
"Unknown": 60,
"Benign": -1
},
"Default": 50
}
これで、コネクタが event.severity
= 「悪意」 のイベントを受信すると、重大度が「重大」になります。
コネクタルール
ホワイトリスト / ブラックリスト
コネクタは、ホワイトリスト/ブラックリストをサポートしていません。
プロキシのサポート
コネクタでプロキシがサポートされます。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。