アラート:エンリッチメント ソースとしてのインメモリ テーブルの構成

Document created by RSA Information Design and Development on Apr 18, 2018
Version 1Show Document
  • View in full screen mode
 

このトピックでは、インメモリ テーブルを構成する手順について説明します。インメモリ テーブルを構成する場合、テーブルへの入力用のCSVファイルをアップロードします。このテーブルをエンリッチメント ソースとしてルールに設定することができます。設定したルールによってアラートが生成されると、ESAはインメモリ テーブルから関連する情報を取得し、アラートに付加します。

たとえば、ユーザがフリーウェアのダウンロードを試みたときにそれを検出し、そのユーザのユーザIDをアラートで通知するようルールを構成することができます。氏名、役職、オフィス所在地、従業員番号などの詳細情報を含んだインメモリ テーブルから、このユーザの追加情報を取得して、アラートに付加することができます。

インメモリ テーブルは軽量なデータを取り扱う場合に最適です。簡単に設定でき、データベースよりもメンテナンスの手間がかかりません。たとえば、AllTech Companyという小さな会社があるとします。規模が小さいため、システム管理者はCSVファイルで従業員情報を管理できます。このAllTechが大企業に成長したときには、管理者は外部データベースをエンリッチメント ソースとして構成し、そのデータベースをルールに関連づける必要が出てきます。

前提条件

CSVファイルの列名に空白文字は使えません。

たとえば、Last_Nameは正しいですが、Last Nameは正しくありません。

.CSVファイルの先頭には、フィールドとタイプを定義するヘッダー行を追加する必要があります。
たとえば、address stringは、フィールドをaddressと定義し、タイプをstringと定義しています。

以下に、有効な.CSVファイルを.CSVとテーブルの形式で示します。

有効な.CSVファイル

手順

アドホック インメモリ テーブルの構成

  1. 構成>[ESAルール]に移動します。
    [構成]ビューが表示され、[ESAルール]タブが開きます。
  2. 設定]タブをクリックします。
  3. [オプション]パネルで、[エンリッチメント ソース]を選択します。
    エンリッチメント ソース
  4. エンリッチメント ソース]セクションで、[リストの追加]アイコン[インメモリ テーブル]
    アドホック インメモリ テーブルをクリックします。
  5. インメモリ テーブルを記述するには、次の手順を実行します。
    1. アドホック]を選択します。
    2. デフォルトで、[有効化]が選択されています。ルールにインメモリ テーブルを追加すると、アラートにはインメモリ テーブルのデータが付加されます。
      ルールをインメモリ テーブルに追加しても、アラートに情報を付加しない場合には、チェックボックスをオフにします。
    3. ユーザ定義テーブル]フィールドに、インメモリ テーブル構成の名前(Student Informationなど)を入力します。
    4. アラートに追加するエンリッチメントの情報を説明する場合には、[説明]に次のような説明を記入します。
      例:アラートをRollnoでグループ化するとき、このエンリッチメントによって名前や点数などの生徒の情報を付加します。 
  6. インポート データ]フィールドで、インメモリ テーブルにデータをフィードするCSVファイルを選択します。
  7. EPLクエリを記述して、高度なインメモリ テーブルの構成を定義する場合は、[エキスパート モード]を選択します。
    [テーブル列]が[クエリ]フィールドに置換されます。
  8. テーブル]セクションで、[追加]アイコンをクリックして、列をインメモリ テーブルに追加します。 
  9. [インポート データ]フィールドで有効なファイルが選択されている場合は、自動的に列にデータが入力されます。

注:[エキスパート モード]を選択した場合には、[テーブル列]ではなく、[クエリ]フィールドが表示されます。

  1. キー]ドロップダウン メニューで、エンリッチメントとしてCSVベースのインメモリ テーブルを使用する場合に、受信イベントとインメモリ テーブルを結合するデフォルトのキーとして使用するフィールドを選択します。デフォルトでは最初の列が選択されています。また、エンリッチメント ソースでインメモリ テーブルを開き、後からキーを変更することもできます。
  2. 最大行数]ドロップダウン メニューで、個々のインスタンスがインメモリ テーブルに格納できる行数を選択します。
  3. ESAサービスが停止した場合に、サービスの再開時にテーブルのデータを再投入するには、[永続的]を選択して、インメモリ テーブルをディスクに保存します。
  4. 保存ファイル形式]フィールドで、次のいずれかを実行します。
    • バイナリ形式でファイルを保存する場合は、[オブジェクト]を選択します。
    • テキスト形式でファイルを保存する場合は、[JSON]を選択します。
      デフォルトでは、[オブジェクト]が選択されています。
  5. 保存]をクリックします。
    アドホック インメモリ テーブルが構成されました。これをエンリッチメントまたはルール条件の一部としてルールに追加することができます。「ルールへのエンリッチメントの追加」を参照してください。

インメモリ テーブルを追加すると、エンリッチメントとして、またはルール条件の一部としてルールに追加できます。たとえば、次のルールでは、インメモリ テーブルをルール条件の中でホワイトリストとして使用しています。また、インメモリ テーブルに含まれるusr_dstの詳細情報をアラートの付加情報として設定しています。 

このルールでは、インメモリ テーブルをホワイトリスト ルール条件として使用しています。

ルール内のエンリッチメント

次に、User_listインメモリ テーブルをアラートのエンリッチメントとして設定しています。

ポスト アラート エンリッチメント

つまり、User_listインメモリ テーブルは、ホワイトリストの作成に使用されると同時に、アラートがトリガーされた場合は、アラートのデータに付加するエンリッチメントとしても使用されています。 

繰り返しインメモリ テーブルの追加

  1. 構成>[ESAルール]に移動します。
    [構成]ビューが表示され、[ESAルール]タブが開きます。
  2. 設定]タブをクリックします。
  3. [オプション]パネルで、[エンリッチメント ソース]を選択します。
  4. [リストの追加]アイコン>[インメモリ テーブル]をクリックします。
  5. インメモリ テーブルを記述するには、次の手順を実行します。
    1. 繰り返し]をクリックします。
    2. デフォルトで、[有効化]が選択されています。ルールにインメモリ テーブルを追加すると、アラートにはインメモリ テーブルのデータが付加されます。
      ルールをインメモリ テーブルに追加しても、アラートに情報を付加しない場合には、チェックボックスをオフにします。
    3. ユーザ定義テーブル]フィールドに、インメモリ テーブル構成の名前(Student Informationなど)を入力します。
    4. アラートに追加するエンリッチメントの情報を説明する場合には、[説明]に次のような説明を記入します。
      例:アラートをRollnoでグループ化するとき、このエンリッチメントによって名前や点数などの生徒の情報を付加します。
  6. インメモリ テーブルにデータをフィードするCSVファイルのURLを入力します。[確認]をクリックして、リンクを検証し、CSVファイルの列を設定します。 プラスまたはマイナス ボタンを使用して列を追加または削除できます。 
  7. プロキシ経由でサーバにアクセスする必要がある場合には、[プロキシを使用]を選択します。
  8. ログインが必要な場合には、[認証情報]を選択します。
  9. 繰り返し間隔]では、ESAが最新のCSVファイルを確認する間隔を指定します。
    1. [分]、[時間]、[日]、[週]を選択します。
    2. [週]を選択した場合には、曜日を選択します。 
    3. 日付範囲]をクリックして、繰り返しの[開始日]と[終了日]を選択します。
      日付範囲
  10. キー]ドロップダウン メニューで、エンリッチメントとしてCSVベースのインメモリ テーブルを使用する場合に、受信イベントとインメモリ テーブルを結合するデフォルトのキーとして使用するフィールドを選択します。デフォルトでは最初の列が選択されています。また、エンリッチメント ソースでインメモリ テーブルを開き、後からキーを変更することもできます。
  11. 最大行数]ドロップダウン メニューで、個々のインスタンスがインメモリ テーブルに格納できる行数を選択します。
  12. ESAサービスが停止した場合に、サービスの再開時にテーブルのデータを再投入するには、[永続的]を選択して、インメモリ テーブルをディスクに保存します。
  13. 保存ファイル形式]フィールドで、次のいずれかを実行します。
    • バイナリ形式でファイルを保存する場合は、[オブジェクト]を選択します。
    • テキスト形式でファイルを保存する場合は、[JSON]を選択します。
      デフォルトでは、[オブジェクト]が選択されています。
  14. 保存]をクリックします。
    繰り返しインメモリ テーブルが構成されました。これをエンリッチメントまたはルール条件の一部としてルールに追加することができます。「ルールへのエンリッチメントの追加」を参照してください。

エンリッチメント ソースとしてのEsperクエリの構成

「エキスパート モード」を使用すると、Esperクエリに基づいてエンリッチメント ソースまたは名前付きウィンドウを作成できます。これにより、コンテンツをより詳細に制御し、より動的なコンテンツを作成することができます。これを行う場合、EPLクエリはイベント ストリームから対象の状態を収集するために、名前付きウィンドウを構築します。

ワークフロー

次に、名前付きウィンドウを使用してクエリを作成するためのワークフローを示します。

  1. イベントがEsperエンジンに送信されます。
  2. EPLクエリが生成されます。
  3. アラートがトリガーされます。
  4. クエリにより、イベントと名前付きウィンドウの間に接続があるかどうかが確認されます。
  5. 接続がある場合、名前付きウィンドウにデータを投入するクエリが実行され、投入されます。
  6. 名前付きウィンドウのコンテンツがアラート コンテンツに追加され、(設定に応じて)送信または表示されます。

Esperクエリ ワークフロー

前提条件

  • EPLステートメントで使用されるメタがデータ内に存在する必要があります。
  • 正しい形式のEPLステートメントを作成する必要があります。

手順

EPLクエリを使用したインメモリ テーブルの構成

  1. 構成>[ESAルール]に移動します。
    [構成]ビューが表示され、[ルール]タブが開きます。
  2. 設定]タブをクリックします。
  3. [オプション]パネルで、[エンリッチメント ソース]を選択します。
  4. エンリッチメント ソース]セクションで、[リストの追加]アイコン[インメモリ テーブル]
    インメモリ テーブル-高度なエンリッチ クエリをクリックします。
  5. アドホック]のチェックボックスをオンにします。
    デフォルトで、[有効化]が選択されています。ルールにインメモリ テーブルを追加すると、アラートにはインメモリ テーブルのデータが付加されます。
  6. ユーザ定義テーブル名]フィールドに、インメモリ テーブルの名前を入力します。
  7. アラートに追加するエンリッチメントについて説明する場合は、[説明]フィールドに情報を入力します。
    この説明は[エンリッチメント ソース]ビューからエンリッチメントのリストを表示するときに表示されるため、ベスト プラクティスとして詳細な説明を入力することをお勧めします。これにより、他のユーザがエンリッチメント ソースの定義を開いて調べなくても、コンテンツトを理解することができます。
  8. EPLクエリを記述して、高度なインメモリ テーブルの構成を定義する場合は、[エキスパート モード]を選択します。
    [テーブル列]が[クエリ]フィールドにより置換されます。
  9. ESAサービスが停止した場合に、サービスの再開時にテーブルのデータを再投入するには、[永続的]を選択して、インメモリ テーブルをディスクに保存します。
  10. クエリ]フィールドにEPLクエリを入力します。クエリは正しい形式で記述する必要があります。また、フィールドに入力する前にテストすることをお勧めします。
  11. 保存]をクリックします。

たとえば、5回のログイン試行失敗後のログイン成功を検索するルールを作成したとします。このルールがトリガーされた場合に、最後にログインが成功したときのユーザに関する情報が通知に含まれるようにします。このエンリッチメントを通知に追加するには、受信イベントからデータを投入するストリーム ベースのインメモリ ルックアップ テーブルを作成して、IPアドレスとそのIPアドレスから最後にログインしたユーザのマッピングを管理します。これを行うには、クエリをソースとして使用するエンリッチメントを作成します。

ステップ1.ルールの作成

まず、相関ルールを作成する必要があります。この例では、失敗と成功のルール条件を作成し、ip_srcでグループ化します。

                               
ルールの条件説明
Failuresこの条件では、[Followed By]コネクタを使用して、5回のログイン失敗を検索します。つまり、条件(Failures)の後には次の条件(Success)が続く必要があります。
Successこの条件では、1回のログイン成功を検索します。 
GroupBy: ip_src, device class[GroupBy]フィールドによって、前述のすべての条件をip_srcとdevice classでグループ化します。これは、ユーザが同じ宛先アカウントに複数回ログインを試み、最終的にログインに成功した場合を検索するルールを作成するうえで重要です。device classでグループ化することにより、同じマシンからログインしたユーザが1つのアカウントに複数回ログインしていることを確認できます。結果をグループ化しない場合、このルールは予期しない結果を返す可能性があります。
Occurs within 5minutesイベントが発生するタイム ウィンドウは5分です。このタイム ウィンドウ外でイベントが発生した場合、ルールはトリガーされません。 
Event Sequence: Strictイベントの発生シーケンスに、厳格なパターン マッチングが適用されます。つまり、イベントの発生順序が、間に別のイベントをはさむことなく、指定された順序と正確に一致する必要があることを示します。 

このルール条件を記述するには、次のステートメントを作成します。

  • 「Failures」ステートメントでは、失敗したログイン試行を検索します。
    Failuresステートメント
  • 「Success」ステートメントでは、成功したログインを検索します。
    Successステートメント
  • 組み合わせると、次のような相関ルールになります。
    成功が後に続くログイン失敗

ステップ2. エンリッチメントの作成

ルールを作成したら、通知出力に追加するためのエンリッチメントを作成する必要があります。上述のステップに従ってエンリッチメントを作成し、Last_Logonという名前を付けて、次のクエリを追加します。

create window LastLogon.std:unique(ip_src) as (ip_src string, user_dst string);

insert into LastLogon select ip_src, user_dst from CoreEvent

where ec_activity='Logon' and ec_outcome='Success';

エンリッチメントは、次のようになります。

高度なクエリが表示されている[インメモリ テーブル]ダイアログ

 

ステップ3. ルールへのエンリッチメントの追加

基本ルールとエンリッチメントを作成したので、エンリッチメントをルールに追加し、ルールのメタにエンリッチメントを結合する(接続する)必要があります。

Login_Failure_Followed_by_Successルールを開いて、編集します。

ルールに追加されたエンリッチメント

                                 
フィールド入力値説明
出力

インメモリ テーブル

[インメモリ テーブル]オプションを指定すると、EPLクエリ データを投入する名前付きウィンドウが作成されます。
エンリッチメント ソースLast_Logon(上で作成したエンリッチメント)。IPアドレスとそのIPアドレスから最後にログインしたユーザのマッピングを管理するため、受信イベントからデータを投入するストリーム ベースのインメモリ ルックアップ テーブルです。

ESAイベント ストリーム メタ

ip_src

投入されるエンリッチメント データと結合するための、イベント ストリーム メタです。本質的には、ip_srcは結合条件です。

エンリッチメント ソース列名ip_srcイベント ストリーム データと結合するための、エンリッチメントのメタです。[イベント ストリーム メタ]フィールドの結合条件と同じである必要があります。

エンリッチメントを追加すると、ルールを保存することができます。

ルールがトリガーされると、ESAがエンリッチメントのクエリを実行し、名前付きウィンドウにデータを投入します。名前付きウィンドウ内のデータが結合条件と一致する場合、通知の設定に応じてメール、SNMP、Syslog、スクリプトの出力にデータが追加されます。

You are here
Table of Contents > データ エンリッチメント ソースの追加 > エンリッチメント ソース > エンリッチメント ソースとしてのイン メモリ テーブルの構成

Attachments

    Outcomes