Elasticsearch
統合バージョン: 39.0
Elasticsearch へのアクセス
Google Security Operations は、デフォルトで TCP ポート 9200 の RESTful API を介して Elasticsearch にアクセスします。Google SecOps サーバーは、TCP 9200(デフォルト)または Elasticsearch のデプロイ時にデフォルトのポートが使用されなかった場合は代替ポートで、関連する Elasticsearch ノードにアクセスする必要があります。
Google SecOps で Elasticsearch 統合を構成する
Google SecOps で統合を構成する方法について詳しくは、統合を構成するをご覧ください。
CA 証明書を使用して Elasticsearch との統合を構成する
必要に応じて、CA 証明書ファイルを使用して接続を確認できます。
始める前に、次のものが揃っていることを確認してください。
- CA 証明書ファイル
- 最新の Elasticsearch 統合バージョン
CA 証明書を使用して統合を構成するには、次の操作を行います。
- CA 証明書ファイルを Base64 文字列に解析します。
- インテグレーション構成パラメータのページを開きます。
- 文字列を [CA 証明書ファイル] フィールドに挿入します。
- 統合が正常に構成されていることをテストするには、[SSL を検証] チェックボックスをオンにして、[テスト] をクリックします。
統合のパラメータ
次のパラメータを使用して統合を構成します。
パラメータの表示名 | 種類 | デフォルト値 | 必須 | 説明 |
---|---|---|---|---|
インスタンス名 | 文字列 | なし | いいえ | 統合を構成するインスタンスの名前。 |
説明 | 文字列 | なし | いいえ | インスタンスの説明。 |
サーバー アドレス | Sring | x.x.x.x | はい | Elasticsearch サーバーの IP アドレス。 |
ユーザー名 | 文字列 | なし | はい | Elasticsearch への接続に使用するべきユーザーのメールアドレス。 |
パスワード | パスワード | なし | ○ | 対応するユーザーのパスワード。 |
認証 | チェックボックス | オフ | いいえ | なし |
SSL を確認 | チェックボックス | オフ | いいえ | Elasticsearch 接続で SSL の検証が必要な場合は、このチェックボックスをオンにします。 |
リモートで実行 | チェックボックス | オフ | いいえ | 構成した統合をリモートで実行するには、フィールドのチェックボックスをオンにします。オンにすると、リモート ユーザー(エージェント)を選択するオプションが表示されます。 |
アクション
高度な ES 検索
説明
事前に作成された Elasticsearch テストであり、単語辞書を返します。
パラメータ
パラメータ | 種類 | デフォルト値 | 必須 | 説明 |
---|---|---|---|---|
索引 | 文字列 | * | いいえ | 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 = 上限なし |
表示フィールド | 文字列 | * | いいえ | 返されるフィールドを制限します。デフォルトの「*」= すべてのフィールドを返します。 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 コネクタを構成する
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 のパスワード。 |
認証 | チェックボックス | オフ | はい | 接続時に認証を行うかどうか。 |
SSL を確認する | チェックボックス | オフ | いいえ | 接続で SSL を使用するかどうか。 |
アラート名フィールド | 文字列 | なし | ○ | アラート名があるフィールドの名前(フラット フィールド パス)。例: _source_alert_info_alert |
タイムスタンプ フィールド | 文字列 | なし | ○ | タイムスタンプが配置されているフィールドの名前(フラット フィールド パス)。例: source@timestamp |
環境フィールド | 文字列 | なし | いいえ | 環境が配置されているフィールドの名前(フラット フィールド パス)。例: _source_environment |
インデックス | 文字列 | なし | いいえ | 検索するインデックス パターン。例: '*' |
クエリ | 文字列 | なし | いいえ | 検索パターン クエリ(Lucene クエリ構文)。例: '*' |
アラート数の上限 | 整数 | 20 | ○ | 1 サイクルで取得するアラートの最大数。例: 20 |
遡る最大日数 | 整数 | 1 | ○ | それ以降、アラートを取得する最大日数。例: 3。 |
重大度フィールド名 | 文字列 | なし | いいえ | 文字列値に基づいて重要度をマッピングする場合は、マッピング ファイルを作成する必要があります。詳しくは、ドキュメント ポータルをご覧ください。 |
プロキシ サーバーのアドレス | 文字列 | なし | いいえ | 使用するプロキシ サーバーのアドレス。 |
プロキシのユーザー名 | 文字列 | なし | いいえ | 認証に使用するプロキシのユーザー名。 |
プロキシ パスワード | パスワード | なし | いいえ | 認証に使用するプロキシ パスワード。 |
環境の正規表現パターン | 文字列 | .* | いいえ | [環境フィールド名] フィールドで見つかった値に対して実行する正規表現パターン。 デフォルトは、すべてキャッチして値を変更せずに返す .* です。 ユーザーが正規表現ロジックで環境フィールドを操作できるようにするために使用されます 正規表現パターンが null か空の場合、または環境値が null の場合、最終的な環境の結果は "" になります。 |
CA 証明書ファイル | 文字列 | なし | いいえ | CA 証明書ファイル |
コネクタで重大度をマッピングする方法
重大度をマッピングするには、[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 クエリを検索パラメータとして使用する機能。
コネクタ パラメータ
次のパラメータを使用してコネクタを構成します。
パラメータの表示名 | 種類 | デフォルト値 | 必須 | 説明 |
---|---|---|---|---|
プロダクト フィールド名 | 文字列 | device_product | ○ | 商品名が保存されるフィールドの名前を記述します。 |
環境フィールド名 | 文字列 | "" | いいえ | 環境名が格納されるフィールドの名前を記述します。 環境フィールドが見つからない場合、環境は " " です。 |
環境の正規表現パターン | 文字列 | .* | いいえ | [環境フィールド名] フィールドで見つかった値に対して実行する正規表現パターン。 デフォルトは、すべてキャッチして値を変更せずに返す .* です。 ユーザーが正規表現ロジックで環境フィールドを操作できるようにするために使用されます 正規表現パターンが null か空の場合、または環境値が null の場合、最終的な環境の結果は "" になります。 |
スクリプトのタイムアウト(秒) | 整数 | 60 | ○ | 現在のスクリプトを実行している Python プロセスのタイムアウト上限。 |
サーバー アドレス | 文字列 | なし | ○ | Elasticsearch API サーバーの IP アドレス。 |
ポート | 文字列 | なし | ○ | Elasticsearch API サーバーのポート。 |
クエリ | 文字列 | なし | ○ | 検索に使用される DSL クエリ。 有効な JSON 形式が必要です。 コネクタをより安定させるには、並べ替えタイムスタンプ キーを昇順で追加することをおすすめします。 |
索引 | 文字列 | なし | はい | 検索に使用されるインデックス。 例: _all |
タイムスタンプ フィールド | 文字列 | なし | はい | タイムスタンプが配置されているフィールドの名前。 例: source@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 のプロフェッショナルから回答を得ることができます。