トランザクション照会の詳細化
EXPLICIT 式を BEGIN 式および END 式と一緒に使用することで、トランザクション AQL 照会を詳細化します。 また、TIMEOUT 式と TIMEWINDOW 式を使用して、時間間隔を指定します。
EXPLICIT 式を BEGIN 式および END 式と一緒に使用して、より詳細なフィルタリングをトランザクション照会に適用します。
例えば、BEGIN 式を EXPLICIT END 式と一緒に使用して、いくつかの失敗したログイン試行で始まり (BEGIN)、後に 1 回の成功したログインが続く (EXPLICIT END) ケースを取り込むことができます。
セッションの時間フィルターをトランザクション照会に適用するには、TIMEOUT式と TIMEWINDOW 式を使用します。
式
以下で説明されている式を使用して、トランザクション AQL 照会を詳細化します。
| 照会式 | 説明 |
|---|---|
| BEGIN | BEGIN 式に一致するイベントを取得した場合、または前のイベントがセッションを終了した場合、セッションが開始されます。 |
| EXPLICIT BEGIN | EXPLICIT BEGIN 式 が true である場合のみ、新しいセッションを開始します。 |
| END | END 式が true であるイベントを取得した場合、または次のイベントが新しいセッションを開始した場合、セッションが終了されます。 |
| EXPLICIT END | EXPLICIT END 式 が true である場合のみ、現在のセッションを閉じます。 |
| TIMEOUT | 前のイベントが発生した時刻から現在のイベントが発生した時刻までに指定の TIMEOUT 期間が経過した場合、セッションを閉じます。 |
| TIMEWINDOW | セッション時間を追跡します。 最初のイベントが発生した時刻から現在のイベントが発生した時刻までに指定の TIMEWINDOW 期間が経過した場合、セッションを閉じます。 |
- 構文
SESSION BY <TimeExpression> <ExpressionList> [EXPLICIT] BEGIN <booleanExpression> [EXPLICIT] END <booleanExpression> TIMEOUT <IntegerLiteral millieseconds> TIMEWINDOW <IntegerLiteral SECONDS|MINUTES|HOURS|DAYS>
以下の例では、使用可能な照会式のさまざまな組み合わせを使用することで得られる結果の例を示します。
BEGIN 式と END 式
イベントが BEGIN 式と一致する場合、または前のイベントがセッションを終了した場合、BEGIN 式がセッションを開始します。
END 式が イベントについて true である場合、または次のイベントが新しいセッションを開始した場合、END 式がセッションを終了します。
EXPLICIT 式を BEGIN 式および END 式と一緒に使用することで、より詳細なフィルターを適用して結果セットを絞り込みます。
以下の照会および結果の例を参照してください。
以下の照会例では、BEGIN 式と END 式を使用します。
Select sessionId,
DATEFORMAT(starttime,'YYYY-MM-dd HH:mm:ss')
start_time, username, sourceip,
category from events into TR1
where username = 'user_x'
SESSION BY starttime username, sourceip
BEGIN category=16001
END category=16003
start '2016-12-10 16:00' stop '2016-12-10 23:30'
以下の表に、BEGIN と END を使用する照会の結果を示します。
| sessionID | start_Time | ユーザー名 | sourceip | カテゴリー |
|---|---|---|---|---|
| 1 | 2016-12-10 16:00:06 | user_x | 10.2.2.10 | 16001 |
| 1 | 2016-12-10 16:00:06 | user_x | 10.2.2.10 | 16003 |
| 2 | 2016-12-10 16:00:06 | user_x | 10.2.2.10 | 16003 |
| 3 | 2016-12-10 16:00:10 | user_x | 10.2.2.10 | 16001 |
| 3 | 2016-12-10 16:00:10 | user_x | 10.2.2.10 | 16003 |
| 4 | 2016-12-10 16:00:11 | user_x | 10.2.2.10 | 16003 |
| 3 | 2016-12-10 16:00:11 | user_x | 10.2.2.10 | 16001 |
| 3 | 2016-12-10 16:00:11 | user_x | 10.2.2.10 | 16003 |
EXPLICIT BEGIN 式と END 式
セッションが開始されず、かつイベントが EXPLICIT
BEGIN イベントでない場合、イベントはスキップされます。
Select sessionId,
DATEFORMAT(starttime,'YYYY-MM-dd HH:mm:ss')
start_time, username, sourceip,
category from events into TR2
where username='user_x'
SESSION BY starttime username, sourceip
EXPLICIT BEGIN category=16001
END category=16003 start '2016-12-10 16:00'
stop '2016-12-10 23:30'
以下の表に、EXPLICIT BEGIN と END を使用する照会の結果を示します。
| sessionID | start_Time | ユーザー名 | sourceip | カテゴリー |
|---|---|---|---|---|
| 1 | 2016-12-10 16:00:06 | user_x | 10.2.2.10 | 16001 |
| 1 | 2016-12-10 16:00:06 | user_x | 10.2.2.10 | 16003 |
| 2 | 2016-12-10 16:00:07 | user_x | 10.2.2.10 | 16001 |
| 2 | 2016-12-10 16:00:07 | user_x | 10.2.2.10 | 16003 |
| 3 | 2016-12-10 16:00:11 | user_x | 10.2.2.10 | 16001 |
| 3 | 2016-12-10 16:00:11 | user_x | 10.2.2.10 | 16003 |
| 3 | 2016-12-10 16:00:11 | user_x | 10.2.2.10 | 16003 |
| 4 | 2016-12-10 16:00:14 | user_x | 10.2.2.10 | 16001 |
| 5 | 2016-12-10 16:00:15 | user_x | 10.2.2.10 | 16001 |
| 5 | 2016-12-10 16:00:15 | user_x | 10.2.2.10 | 16003 |
EXPLICIT BEGIN 式を満たすイベントのみが返されます。
EXPLICIT BEGIN および END の Sessionid 2 および Sessionid 4 は、EXPLICIT BEGIN 式を満たしません。
BEGIN と EXPLICIT END
EXPLICIT END 式 が true である場合のみ、現在のセッションを閉じます。 EXPLICIT END 式 が true である場合、セッション内の BEGIN イベントはそれ以上チェックされません。
単一セッション内の複数の BEGIN イベントは、1 つの EXPLICIT
END 式に関連付けることができます。 例えば、EXPLICIT END 式を使用して、特定の時間間隔 (セッション・タイムアウト) における、後に成功したログインが続く、複数の失敗ログイン試行をカウントすることができます。
以下の照会例では、BEGIN 式と EXPLICIT END 式を使用します。
Select sessionId,
DATEFORMAT(starttime,'YYYY-MM-dd HH:mm:ss')
start_time, username, sourceip,
category from events into TR3
where username = 'user_x'
SESSION BY starttime username, sourceip
BEGIN category=16001
EXPLICIT END category=16003
start '2016-12-10 16:00'
stop '2016-12-10 23:30'
以下の表に、BEGIN 式と EXPLICIT END 式を使用する照会の結果を示します。
| sessionID | start_Time | ユーザー名 | sourceip | カテゴリー |
|---|---|---|---|---|
| 1 | 2016-12-10 16:00:06 | user_x | 10.2.2.10 | 16001 |
| 1 | 2016-12-10 16:00:06 | user_x | 10.2.2.10 | 16003 |
| 2 | 2016-12-10 16:00:07 | user_x | 10.2.2.10 | 16003 |
| 2 | 2016-12-10 16:00:10 | user_x | 10.2.2.10 | 16001 |
| 2 | 2016-12-10 16:00:10 | user_x | 10.2.2.10 | 16003 |
| 3 | 2016-12-10 16:00:11 | user_x | 10.2.2.10 | 16001 |
| 3 | 2016-12-10 16:00:11 | user_x | 10.2.2.10 | 16003 |
| 4 | 2016-12-10 16:00:12 | user_x | 10.2.2.10 | 16003 |
| 4 | 2016-12-10 16:00:12 | user_x | 10.2.2.10 | 16001 |
| 4 | 2016-12-10 16:00:12 | user_x | 10.2.2.10 | 16003 |
| 5 | 2016-12-10 16:00:13 | user_x | 10.2.2.10 | 16001 |
| 4 | 2016-12-10 16:00:11 | user_x | 10.2.2.10 | 16003 |
EXPLICIT BEGIN と EXPLICIT END
セッションが開始されず、かつイベントが EXPLICIT BEGIN イベントでない場合、イベントは無視されます。
EXPLICIT END 式 が true である場合のみ、現在のセッションを閉じます。 EXPLICIT END 式 が true である場合、セッション内の BEGIN イベントはそれ以上チェックされません。
以下の照会例では、EXPLICIT BEGIN 式と EXPLICIT END 式の両方を使用します。
Select sessionId,
DATEFORMAT(starttime,'YYYY-MM-dd HH:mm:ss')
start_time, username, sourceip,
category from events into TR4
where username = 'user_x'
SESSION BY starttime username, sourceip
EXPLICIT BEGIN category=16001
EXPLICIT END category=16003
start '2016-12-10 16:00'
stop '2016-12-10 23:30'
以下の表に、EXPLICIT BEGIN 式と EXPLICIT END 式を使用する照会の結果を示します。
| sessionID | start_Time | ユーザー名 | sourceip | カテゴリー |
|---|---|---|---|---|
| 1 | 2016-12-10 16:00:06 | user_x | 10.2.2.10 | 16001 |
| 1 | 2016-12-10 16:00:06 | user_x | 10.2.2.10 | 16003 |
| 2 | 2016-12-10 16:00:10 | user_x | 10.2.2.10 | 16001 |
| 2 | 2016-12-10 16:00:10 | user_x | 10.2.2.10 | 16003 |
| 3 | 2016-12-10 16:00:11 | user_x | 10.2.2.10 | 16001 |
| 3 | 2016-12-10 16:00:12 | user_x | 10.2.2.10 | 16001 |
| 3 | 2016-12-10 16:00:12 | user_x | 10.2.2.10 | 16003 |
| 4 | 2016-12-10 16:00:13 | user_x | 10.2.2.10 | 16001 |
| 4 | 2016-12-10 16:00:14 | user_x | 10.2.2.10 | 16001 |
| 4 | 2016-12-10 16:00:14 | user_x | 10.2.2.10 | 16003 |
| 5 | 2016-12-10 16:00:15 | user_x | 10.2.2.10 | 16001 |
| 5 | 2016-12-10 16:00:15 | user_x | 10.2.2.10 | 16003 |
TIMEOUT
前のイベントが発生した時刻から現在のイベントが発生した時刻までに指定の TIMEOUT 期間が経過した場合、セッションを閉じます。 現在のイベントは新しいセッションの一部となります。 TIMEOUT 値はミリ秒単位で指定します。
以下の照会例では、TIMEOUT 式を使用します。
Select sessionId,
DATEFORMAT(starttime,'YYYY-MM-dd HH:mm:ss.SSS')
start_time, username, sourceip,
category from events into TR5
where username='user_x'
SESSION BY starttime username, sourceip
BEGIN category=16001
EXPLICIT END category=16003
TIMEOUT 3600
start '2016-12-10 16:00'
stop '2016-12-10 23:30'
以下の表に、TIMEOUT 式を使用する照会の結果を示します。
| sessionID | start_Time | ユーザー名 | sourceip | カテゴリー |
|---|---|---|---|---|
| 1 | 2016-12-10 16:00:06.716 | user_x | 10.2.2.10 | 16003 |
| 2 | 2016-12-10 16:00:10.328 | user_x | 10.2.2.10 | 16001 |
Sessionid 1 が終了し、sessionid 2 が開始されます。これは、3600 の TIMEOUT が超過したためです。
TIMEWINDOW
セッション時間を追跡します。 最初のイベントが発生した時刻から現在のイベントが発生した時刻までに指定の TIMEWINDOW 期間が経過した場合、セッションを閉じます。 現在のイベントは新しいセッションの一部となります。 TIMEWINDOW 値は、秒単位、分単位、時間単位、または日単位で指定できます。
以下の照会例では、TIMEWINDOW 式を使用します。
Select sessionId,
DATEFORMAT(starttime,'YYYY-MM-dd HH:mm:ss.SSS')
start_time, username, sourceip,
category from events into TR6
where username='user_x'
SESSION BY starttime username, sourceip
BEGIN category=16001
EXPLICIT END category=16003
TIMEWINDOW 3000
start '2016-12-10 16:00'
stop '2016-12-10 23:30'
以下の表に、TIMEWINDOW 式を使用する照会の結果を示します。
| sessionID | start_Time | ユーザー名 | sourceip | カテゴリー |
|---|---|---|---|---|
| 1 | 2016-12-10 16:00:06.415 | user_x | 10.2.2.10 | 16001 |
| 1 | 2016-12-10 16:00:06.433 | user_x | 10.2.2.10 | 16003 |
| 2 | 2016-12-10 16:00:06.716 | user_x | 10.2.2.10 | 16003 |
| 3 | 2016-12-10 16:00:10.328 | user_x | 10.2.2.10 | 16001 |
| 3 | 2016-12-10 16:00:06.328 | user_x | 10.2.2.10 | 16003 |
Sessionid 1 は TIMEWINDOW 式の時間内にありますが、3600 の TIMEWINDOW が超過しているため、sessionid 2 は終了します。