AQL のデータ計算および書式設定の関数

Ariel データベースから取得した検索結果に対して、Ariel 照会言語 (AQL) の計算および書式設定の関数を使用します。

以下のリストで、計算およびデータの書式設定に使用される AQL 関数について説明します。

BASE64

目的
バイナリー・データを表す Base64 エンコード・ストリングを返します。
SELECT BASE64(payload)
FROM events
 
イベントのペイロードを BASE64 形式で返します。


CONCAT

目的
渡されたすべてのストリングを 1 つのストリングに連結します。
SELECT CONCAT(username, ':', sourceip,  ':', destinationip) 
FROM events LIMIT 5 


DATEFORMAT

目的
1970 年 1 月 1 日の協定世界時 (UTC) 00:00:00 からの時間 (ミリ秒) をユーザーが判読可能な形式に書式設定します。
SELECT 
DATEFORMAT(startTime, 'yyyy-MM-dd hh:mm:ss')
AS StartTime
FROM events
SELECT DATEFORMAT(starttime,'yyyy-MM-dd hh:mm') 
AS 'Start Time', 
DATEFORMAT(endtime, 'yyyy-MM-dd hh:mm') 
AS Storage_time, 
QIDDESCRIPTION(qid) 
AS 'Event Name' 
FROM events

その他の例を見る



DOUBLE

目的
数値を表す値を double 型に変換します。
DOUBLE('1234')


LONG

目的
数値を表す値を長整数に変換します。
SELECT destinationip, 
LONG(SUM(sourcebytes+destinationbytes)) 
AS TotalBytes 
FROM flows 
GROUP BY sourceip

上記の例では、宛先 IP アドレス、送信元および宛先のバイト数の合計を TotalBytes 列に返します。

SELECT
LONG(sourceip)
AS long_ip
FROM events
INTO <cursor_name>
WHERE (long_ip & 0x<ff>000000) = 0x<hexadecimal value of IP address>000000
GROUP BY long_ip
LIMIT 20

QRadar®7.3.1では、LONG 関数を使用して IP アドレスを長整数に変換できます。 QRadar は、ビット単位演算子を持つ長整数を使用して、AQL 照会で IP アドレスの算術計算およびフィルター処理を行います。 上記の例では、送信元 IP が整数として返され、ビット単位 AND 演算子によって使用されます。

上記の例では、<ff> は、IP アドレスの最初のオクテット位置にある <IP アドレスの 16 進値> に対応しています。 <cursor_name> は、使用したい任意の名前にすることができます。

例えば、最初のオクテットで数値 9 を持つすべてのソース IP アドレスを戻す場合は、16 進値 9 を、<IP アドレスの 16 進値>の 10 進値と同じ値に置き換えます。

ビット単位演算子で使用される long 関数の例をさらに参照してください


PARSEDATETIME

目的
時刻値 (例: PARSEDATETIME('time reference')) をパーサーに渡します。 time reference は、照会の解析時刻を示します。
SELECT * FROM events 
START PARSEDATETIME('1 hour ago')

その他の時間関数の例を見る



PARSETIMESTAMP

目的
日時のテキスト表現を解析し、UNIX エポック時間に変換します。

例えば、次のテキスト日付形式を解析します。

Thursday, August 24, 2017 3:30:32 PM GMT +01:00 および次のエポック・タイムスタンプ: 1503588632 に変換します。

この関数を使用すると、API からスクリプトに基づく呼び出しを容易に発行できます。
時刻形式の変換の仕組みを示す例

次の例は、DATEFORMAT 関数を使用してエポック時間をどのように指定された日付形式でテキスト・タイム・スタンプに変換し、さらに PARSETIMESTAMP 関数を使用してテキスト・タイム・スタンプをどのようにエポック時間の形式に変換するかを実際に示しています。

SELECT starttime, DATEFORMAT(starttime,'EEE, MMM d, "yyyy"') 
AS "text time format", 
PARSETIMESTAMP('EEE, MMM d, "yyyy"', "text time format") 
AS 'epoch time returned' from events limit 5

次の例は、照会からの出力を抜き出して示したものです。


starttime       text time format      epoch time returned
1503920389888   Mon, M08 28, "2017"   1503920389888      
時間計算を実行するために、PARSETIMESTAMP を使用してどのように時間をエポック時間に変換するかを示す例。

次の例では、ログアウト時間からログイン時間までの間隔が 1 時間未満である場合にイベントが返されます。

EEE, d MMM yyyy HH:mm:ss.SSSZ 時刻形式は、使用する可能性がある時刻形式の 1 つの例にすぎません。my_login および my_logout は、既知の時刻形式のカスタム・プロパティーです (例: EEE, MMM d, "yy")。

SELECT * from events 
WHERE 
PARSETIMESTAMP('EEE, d MMM yyyy HH:mm:ss.SSSZ', my_logout)
- PARSETIMESTAMP('EEE, d MMM yyyy HH:mm:ss.SSSZ', my_login) 
< 3600000 last 10 days 

その他の時間関数の例を見る



NOW

目的
1970 年 1 月 1 日の協定世界時 (UTC) 00:00:00 からの時間をミリ秒で表現した現在時刻を返します。
SELECT ASSETUSER(sourceip, NOW()) 
AS 'Asset user' FROM events
時刻のこの瞬間 (NOW) のアセットのユーザーを検索します。


LOWER

目的

ストリングをすべて小文字にして返します。

SELECT 
LOWER(username), 
LOWER(LOGSOURCENAME(logsourceid)) 
FROM events
ユーザー名とログ・ソース名を小文字で返します。


REPLACEALL

目的
正規表現と突き合わせ、すべての一致をテキストで置換します。

入力シーケンス内の、パターン (arg1) と一致するすべてのサブシーケンス (arg2) を、置き換えストリング (arg3) で置換します。

REPLACEALL('\d{16}',
username, 'censored')


REPLACEFIRST

目的
正規表現と突き合わせ、最初の一致をテキストで置換します。

入力シーケンス内の、パターン (arg1) と一致する最初のサブシーケンス (arg2) を、置き換えストリング (arg3) で置換します。

REPLACEFIRST('\d{16}',
 username, 'censored')


STR

目的
任意のパラメーターをストリングに変換します。
STR(sourceIP)


STRLEN

目的
このストリングの長さを返します。
SELECT STRLEN(sourceIP), 
STRLEN(username) from events
sourceipusername のストリング長を返します。


STRPOS

目的
あるストリング内の別のストリングの位置 (インデックス - 先頭はゼロ) を返します。 ストリング内で、指定したサブストリングのインデックスを検索します。 オプションで、指定したパターンの検索を開始する位置 (インデックス) を示す追加パラメーターを指定できます。

ストリングの検索は、指定したオフセットから開始され、ストリングの末尾に向かって進みます。

STRPOS(string, substring, index)

サブストリングが見つからない場合、-1 を返します。
SELECT STRPOS(username, 'name') FROM events
 

SELECT STRPOS(sourceip, '180', 2) FROM events)
 


SUBSTRING

目的
文字の範囲をコピーして新しいストリングを作成します。
SELECT SUBSTRING(userName, 0, 3) FROM events
 
SELECT SUBSTRING(sourceip, 3, 5) FROM events
 


UPPER

目的
ストリングをすべて大文字にして返します。
SELECT 
UPPER(username), 
UPPER(LOGSOURCENAME(logsourceid)) 
FROM events
ユーザー名とログ・ソース名を大文字で返します。


UTF8

目的
バイト配列の UTF8 ストリングを返します。
SELECT UTF8(payload)
FROM events
WHERE sourceip='192.0.2.0'
 
送信元 IP アドレスが 192.0.2.0 であるイベントの UTF8 ペイロードを返します。