SA構成:ESAアラート通知テンプレートの定義

Document created by RSA Information Design and Development on Feb 17, 2017
Version 1Show Document
  • View in full screen mode
  

このトピックでは、アラート通知用テンプレートを定義する方法について説明します。ESA(Event Stream Analysis)では、アラートに使用可能なテンプレートを定義できます。テンプレートを定義するには、FreeMarkerとESAデータ モデルに関する十分な知識が必要です。FreeMarkerの詳細については、「FreeMarker Template Author's Guide」を参照してください。 

ESAデータ モデル

以下に示すESAアラート ルールについて考えてみます。

@Name('module_144d43f5_f0b4_4cd0_8c6c_5ce65c37e624_Alert')
@Description('Brute Force Login To Same Destination')
@RSAAlert(oneInSeconds=0, identifiers={"ip_dst"})
SELECT * FROM Event (ec_activity = 'Logon',ec_theme = 'Authentication',ec
outcome =
'Failure',ip_dst IS NOT NULL)

.std:groupwin(ip_dst)
.win:time_length_batch(60 seconds, 2)
GROUP BY ip_dst HAVING COUNT(*) = 2;

上のルールが発行されると、生成されたアラートは、複数のメタ値を持つNextGenセッションに似た2個のイベントで構成されます。FreeMarkerのテンプレートevaluatorに渡されるアラート データ オブジェクトは次のようになります。

 

(root)   |   +- id = "4e67012f-9c53-4f0b-ac44-753e2c982b79"                    // Unique identifier for each alert   |   +- severity = 1                                                    // The severity of the alert   +- time = 2013-12-31T11:02Z                                        // The alert time (needs a ?datetime for proper rendering)   |  +- moduleType = "ootb"                                          // The module type   |   +- moduleName = "Brute Force Login To Same Destination"            // A description of the module   |   +- statement = "module_144d43f5_f0b4_4cd0_8c6c_5ce65c37e624_Alert" // The name of the EPL statement   |  +- events                                                       // The constituent events - as a sequence of event maps        |   +- [0]                                                    // offset 0 (i.e. the first constituent event)        |   |       |   |        |   +- event_cat_name = "User.Activity.Failed Logins"        |   +- device_class = "Firewall"                              // event meta (accessible as ${events[0].device_class}$)        |   |       |   +- event_source_id = "uttam:50002:1703395"    // Investigation URI to the individual session (used by SA)        |   |        |   +- ...                                                    // Other meta        |   |        |   +- sessionid = 1703395                                    // NextGen sessionid        |   |        |   +- time = 1388487764                                      // event/session time at NextGen source (as a long Unix timestamp)        |   |        |   +- user_dst = "user5"        |        +- [1]                                                        // offset 1 (i.e. the second consituent event)            |            +- device_class = "Firewall"            |            +- event_cat_name = "User.Activity.Failed Logins"            |            +- event_source_id = "uttam:50002:1703405"            |            +- ...                                                               |            +- sessionid = 1703405            |            +- time = 1388487766            |            +- user_dst = "user5"

データ モデルで利用できるテンプレート変数には次の2つのタイプあります。

  • アラート メタ データ:これらは、ステートメント名、モジュール名、アラートID、アラートの時刻、重大度など、アラート レベルの詳細を保持します。FreeMarkerの用語では、これらはアラート インスタンス自体に関連づけられたトップ レベルの変数であり、${moduleName}のようにそれらの名前で単純に参照できます。 timeメタは特別です。これはDate 型で、適切にレンダリングするには、?datetime というサフィックスを追加する必要があります。
  • 要素イベント メタ データ:これらは、アラートを構成する個々のイベントのセッション メタ フィールドを含みます。アラートは複数のイベントで構成できます。そのため、同一のアラートにマップが複数存在する場合があります。これらは、FreeMarkerのテンプレートevaluatorへのハッシュシーケンスとして表示され、参照できる必要があります。たとえば、アラートが2個のイベント要素で構成されている場合、最初のevent_source_idは ${events[0].event_source_id} として利用でき、2つ目は${events[1].event_source_id}としてアクセスできます。また、複数値のメタ フィールドに注意する必要があります。それらのフィールドはシーケンスとして扱う必要があります。たとえば、${events[0].alias_host}はシーケンスであるため、機能しません。

注:指定されたアラートの要素イベントで利用可能なメタデータは、EPL SELECT句によって決定されます。たとえば、SELECT sessionid, time FROM ...のアラートでは、利用できるメタ値は2つのみ(sessionid、time)です。SELECT * FROM Event ...の要素イベントでは、Eventタイプで、null以外の値を持つすべてのメタ フィールドを利用できます。

すべてのアラート出力に存在するとは限らないメタ キーをテンプレートで使用している場合、FreeMarkerによるデフォルト値のプロビジョニングの利用を検討してください。

たとえば、テキストId=${id},ec_outcome=${ec_outcomeを含むテンプレートが、メタ キーec_outcomeを含まないアラートに対して評価されると、このテンプレートの評価は失敗します。このような場合、不足している値のプレースホルダーとして、${ec_outcome!”default”}を使用できます。

You are here
Table of Contents > 標準的な手順 > 通知テンプレートの構成 > ESAアラート通知テンプレートの定義

Attachments

    Outcomes