レポート:IPDBルールの構文

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

このトピックでは、IPDB Extractorサービスを使用する場合のルール構文について、サポートされる構文とサポートされない構文の例を挙げて説明します。IPDB Extractorサービスを使用してレポート用のルールを作成する場合、サポートされる構文とサポートされない構文があります。このトピックでは以下の項目を説明します。

  • サポートされる構文とサポートされない構文の説明と例。
  • サポートされる集計関数。
  • サポートされる演算子。
  • サポートされるクエリーの例。 

サポートされる構文とサポートされない構文

IPDBデータベースに対するルールを作成するときには、次の表に示す説明と構文例に従う必要があります。

サポートされるリテラル(データ)値の構文

                     
説明サポートされる構文の例
テキストまたは文字列のデータ タイプの場合、その文字列またはテキストは一重引用符で囲みます。アポストロフィ(')などの特殊文字が含まれる場合は('data'など)、一重引用符を2つ使用して(''data'')データ値を囲みます。 select msg.id where msg='(Primary) Link status ''Down'' on interface INTNAME.'
日付と時刻(date/timestampデータ タイプの列)では、
yyyy-mmm-ddhh:mm:ss」という構文を使用します。
select time where time = ‘2012-sep-04 13:09:03’
システムではリテラルのIPアドレスをサポートしています。  システムではIPアドレスが含まれる列を文字列/テキストとして扱うため、式の比較には文字列の比較演算子を使用します。

正しく処理するには、次の演算子を使用してください。
  • =(等しい)
  • !=(等しくない)
  • in(含まれる)
  • not in(含まれない)
 

サポートされないIN構文

             
説明サポートされない構文の例
Security Analyticsでは、IPアドレスにIN構文を使用できません。select ip.src where ip.src in between 'n.n.n.n' and 'n.n.n.n'

サポートされないLIKE構文

             
説明サポートされない構文の例
Security Analyticsではlikeに()を付けませんuser.dst not like ('%')

サポートされるLIST構文

               
説明サポートされる構文の例
Where句のフィールドでは、リストを括弧で囲みます。

IN演算子を使用します。

次の値以外は、リストの値を一重引用符で囲む必要があります。
  • 英数字
  • :(コロン)
  • _(下線)
  • .(ピリオド)
select ip.src,ip.dst where ip.dst IN ($[LIST])

サポートされないLIST構文

                 
説明サポートされない構文の例
括弧は省略できません。select ip.src,ip.dst where ip.dst IN $[LIST]
IN演算子は省略できません。select ip.src,ip.dst where ip.dst =($[LIST])

サポートされる変数構文

スケジュール設定時に変数に値を代入するときは、その値を''のように一重引用符で囲む必要があります。

           
説明サポートされる構文の例
変数の前に$を挿入します。

変数を中括弧で囲みます。
columnname=${variable}

サポートされない変数構文

                   
説明サポートされない構文の例
$は省略できません。columnname={variable}
中括弧は省略できません。columnname=$variable        
中括弧の代わりに角括弧を使うことはできません。columnname=$[variable]

サポートされるselect句の構文

select句には、order by列とgroup by列を含める必要があります。

                         
説明サポートされる構文の例
IPDBデータ ソースのすべての列を選択します。select *
IPDBデータ ソースから具体的な列を選択します(各列はコンマで区切る必要があります)。 select column1,column2,column3,...,columnN
select句でdistinctを使用します。distinctを使用するときには、列を括弧で囲む必要があります。select distinct(column1)
select句で集計関数を使用します。本セクションで説明する集計関数の一覧については、後述の「サポートされる集計関数」セクションを参照してください。select count(msg.id)

select count(distinct(msg.id))

サポートされないselect句の構文

                           
説明サポートされない構文の例
集計を指定する場合以外は、列名を括弧で囲まないでください。次の例は、サポートされない括弧の使用法を表しています。select (msg.id), (ip.src)
列で計算式を使用しないでください。次の例は、サポートされない計算式の使用法を表しています。select msg.id+100, ip.src
select句に別名として記載する形式の列のエイリアスは使用できません(ASのある場合と、ない場合いずれも)。次の例は、サポートされない列のエイリアスの使用法を表しています。select msg.id as ID, ip.src SRC
Security Analyticsではselect句でLower関数をサポートしていません。 

サポートされるwhere句の構文

where句には、order by列とgroup by列を含める必要があります。

                                                 
説明サポートされる構文の例
値にスペースが含まれる場合は、値を一重引用符で囲みます。次の構文は正しくありません。

where msg = Auth start for user USERNAME from 20.20.20.2/20 to 10.10.10.1/10.
where msg = 'Auth start for user USERNAME from 20.20.20.2/20 to 10.10.10.1/10'
値に特殊文字が含まれる場合は、
値を一重引用符で囲みます。次の文字は一重引用符で囲む必要はありません。
  • 英数字
  • :(コロン)
  • _(下線)
  • .(ピリオド)

次の構文は機能しません。

select url,size
  device spec: device-specifications
  where url = http://1.1.1.1//tsweb/images
   /clear.gif

次の構文は機能しません。

where url = some/urls/string

次の構文は機能しません。

where msg = Failover cable OK.

次の構文は機能します。

where msg.id = 101001:10

次の構文は機能します。

select url,size
device spec: device-specifications
where url = 'http://1.1.1.1//tsweb/images/clear.gif'

次の構文は機能します。

where url = 'some/urls/string'

次の構文は機能します。

where msg = ‘Failover cable OK.’
フィルタ条件を表すにはこの構文を使用します。column1 <operator> 'value'
ブール演算子andまたはブール演算子orを使用するには、この構文を使用します。サポートされる演算子のリストについては、「サポートされる演算子」を参照してください。column1 <operator> 'value' and column2<operator'value' or column1 <operator> 'value' 
nullを確認するには、この構文を使用します。column1 is null

column1 is not null
in演算子を使用して、含まれる、含まれない、を確認するには、この構文を使用します。column1 in ('value1','value2',...,'valueN')

column1 not in ('value1','value2',...,'valueN')
between演算子を使用して範囲を指定するには、この構文を使用します。column1 between 'value1' and 'value2'

column1 not between 'value1' and 'value2'
like演算子を使用して文字列を比較するには、この構文を使用します。column1 like 'value'

column1 not like 'value'
ワイルドカード%とlike演算子を使用してパターンを検索するには、この構文を使用します。select msg.id where msg like 'ip%'
where句の検索で大文字と小文字の違いを無視するには、Lower関数を使用します。

where句ではLower関数をテキスト型の列でのみ使用することができます。  Lowerをテキスト型以外の列で使用すると、Security Analyticsからエラー メッセージが表示されます。

Security Analyticsでは、Lower関数をBETWEEN、IN、NOT NULL演算子に対して使用できません。
Lower(columnName) like ‘some%’
Lower(columnName) like lower(‘some%’)

 サポートされないwhere句の構文

                 
説明サポートされない構文の例
ネストされたクエリーは使用できません。select msg.id where msg.id in (select msg.id from table where ip.src = '1.1.1.1')
Lower関数はBETWEEN、IN、NOT NULL演算子に対しては使用できません。 

サポートされるorder by句の構文

order by句では大文字と小文字を区別しません。

                   
説明サポートされる構文の例

order byを使用して昇順(asc)および降順(desc)のソートを実行するには、この構文を使用します。

  • order by size asc
  • order by msg desc
  • order by size asc, msg desc
  • order by count(size) asc

列に集計関数を適用する場合は、列名だけを括弧で囲みます。次の例はorder by句での括弧の誤った使用法を表しています。

order by (count(size)) asc

order by count(size) asc

サポートされるgroup by句の構文

               
説明サポートされる構文の例
1つ以上の列をグループ化するには、この構文を使用します。列名を囲むのに、括弧は使用できません。group by関数では大文字と小文字を区別しません。
  • group by size
  • group by msg

サポートされる集計関数

IPDB Extractorサービスでは、次の集計関数と構文をサポートしています。

  • count
  • max
  • min
  • sum
  • avg

次の構文で示すように、distinctと集計関数を一緒に使用することができます。

  • count(distinct)
  • max(distinct)
  • min(distinct)
  • sum(distinct)
  • avg(distinct)

サポートされる演算子

                                                 
演算子構文
=(等しい)column1 = 'value'
!=(等しくない)column1 != 'value'
<=(以下)column1 <= 'value'
>=(以上)column1 >= 'value'
<(より小さい)column1 < 'value'
>(より大きい)column1 > 'value'
INcolumn1 NOT ('value1','value2',...,'valueN')

column1 not in ('value1','value2',...,'valueN')
between(2つの値の間の範囲)column1 between 'value1' and 'value2'

column1 NOT between 'value1' and 'value2'
and、or、NOT(ブール演算子)condition1 and condition2

condition1 or condition2

condition1 not in ('value1','value2',...,'valueN')
likecolumn1 like 'value'

column1 not like 'value'

サポートされるクエリーの例

select msg.id, ip.src, ip.dst, user.dst where size is not null

select msg.id, size, ip.srcport where msg.id='109007' and size not between '10' and '20'

select max(distinct(size)) where msg.id in ('109007','109001')

select * where size != '99' and ip.src = '20.20.20.2'

select ip.srcport,ip.dstport where ip.dst != '225.31.125.90' order by ip.dstport asc

select ip.srcport,ip.dstport where ip.dst != '225.31.125.90' order by ip.dstport asc,ip.srcport desc

select ip.srcport,ip.dstport where ip.dst != '225.31.125.90' group by ip.srcport,ip.dstport order by min(distinct(ip.dstport)) asc, sum(distinct(ip.srcport)) desc

select time where time = ‘2012-sep-04 13:09:03’

select * where ip.src = '20.20.20.2' and ip.dst != '10.31.125.90' or ip.dst!= '225.31.125.90'

サポートされないクエリーの例

                                           
サポートされないクエリー理由
select msg.id, ip.src, ip.dst, user.dst where size is not null.列を括弧で囲むことはできません。
select msg.id where msg.id IN (select msg.id from table where ip.src = ‘1.1.1.1’)ネストしたselect(サブクエリー)を使用して別の条件でのmsg.idフィールドを取得することはできません。
select ip.src where ip.src in between ’10.10.10.1’ and ’10.10.9.1’between演算子は、数値または日付と時刻のデータ タイプにしか使用できません。
select ip.srcport,ip.dstport where ip.dst != '225.31.125.90' order by count(distinct ip.dstport) ascdistinctまたは他の集計関数を使用するときには、列名を括弧で囲む必要があります。
select ip.srcport,ip.dstport where ip.dst != '225.31.125.90' order by (ip.dstport) asc,(ip.srcport) desc列名を括弧で囲むことはできません。
select ip.srcport,ip.dstport where ip.dst != '225.31.125.90' group by ip.srcport,ip.dstport order by COUNT((ipsrcport))列名を囲むのに使用できる括弧は1組だけです。システムは複数の括弧をネストされた式と見なすため、これはサポートされていません。
select time where time = ‘1999-NOVEMBER-01 10:10:10’Timestamp形式が正しくありません。
select time where time = ‘2012-11-11 10:10:10’Timestamp形式が正しくありません。
Previous Topic:ルールの概要
You are here
Table of Contents > レポート ルールの操作 > ルールの概要 > IPDBルールの構文

Attachments

    Outcomes