Reporting : Syntaxe de la règle IPB

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

Cette section décrit la syntaxe de règle prise en charge pour le service Extracteur IPDB grâce aux descriptions et exemples de syntaxe prise en charge et non prise en charge. Dans cette version, il existe un nombre limité de syntaxes que vous pouvez utiliser pour élaborer des règles pour les rapports à l'aide du service IPDB Extractor. Cette rubrique contient :

  • des descriptions de syntaxe prise en charge ou non avec des exemples ;
  • les fonctions d'agrégation prises en charge ;
  • les opérateurs pris en charge ;
  • des exemples de requêtes prises en charge. 

Syntaxe prise en charge ou non

Lorsque vous élaborez des règles contenant des requêtes SQL pour la base de données IPDB de cette version, vous devez vous conformer aux descriptions et aux exemples de syntaxe décrits dans les tableaux suivants.

Syntaxe de valeurs littérales (données) prise en charge

                     
Description :Exemples de syntaxe prise en charge
Pour les données de type TEXTE ou chaîne, placez la chaîne ou le texte entre des guillemets simples. S'il y a des caractères spéciaux comme les apostrophes (par exemple, 'data'), utilisez deux guillemets simples, ''data'' pour placer la valeur des données. select msg.id where msg='(Primary) Link status ''Down'' on interface INTNAME.'
Pour la date et l'heure (colonnes de type données de date/horodatage), utilisez la
syntaxe 'aaaa-mmm-jj hh:mm:ss'.
select time where time = ‘2012-sep-04 13:09:03’
Le système prend en charge les adresses IP littérales.  Il traite les colonnes contenant les adresses IP comme des chaînes ou du texte, de façon à pouvoir utiliser l'opérateur de comparaison des chaînes pour évaluer les expressions.

Utilisez les opérateurs suivants pour assurer un traitement précis :
  • = (égal à)
  • != (différent de)
  • in (est contenu dans)
  • not in (n'est pas contenu dans)
 

Syntaxe IN non prise en charge

             
Description :Exemples de syntaxe non prise en charge
Security Analytics ne prend pas en charge l'utilisation de in dans les adresses IPselect ip.src where ip.src in between 'n.n.n.n' and 'n.n.n.n'

Syntaxe LIKE non prise en charge

             
Description :Exemples de syntaxe non prise en charge
Security Analytics ne prend pas en charge l'utilisation de () pour LIKEuser.dst not like ('%')

Syntaxe LIST prise en charge

               
Description :Exemples de syntaxe prise en charge
Placez une liste entre parenthèses dans le champ de la clause Where.

Utilisez l'opérateur IN.

Vous devez placer les valeurs dans une liste avec des guillemets simples, sauf pour les valeurs suivantes :
  • caractères alphanumériques
  • : (deux-points)
  • _ (tiret bat)
  • . (point)
select ip.src,ip.dst where ip.dst IN ($[LIST])

Syntaxe LIST non prise en charge

                 
Description :Exemples de syntaxe non prise en charge
N'oubliez pas les parenthèses.select ip.src,ip.dst where ip.dst IN $[LIST]
N'oubliez pas l'opérateur IN.select ip.src,ip.dst where ip.dst =($[LIST])

Syntaxe prise en charge pour les variables

Lorsque vous attribuez la valeur de la variable dans une configuration d'exécution, vous devez placer la valeur entre guillemets simples : 'value'.

           
Description :Exemples de syntaxe prise en charge
Insérez $ avant une variable.

Placez une variable entre parenthèses.
columnname=${variable}

Syntaxe non prise en charge pour les variables

                   
Description :Exemples de syntaxe non prise en charge
N'oubliez pas le signe $.columnname={variable}
N'oubliez pas les accolades.columnname=$variable        
Ne remplacez pas les parenthèses par des accolades.columnname=$[variable]

Syntaxe prise en charge pour la clause Select

Vous devez inclure les colonnes order by et group by dans les clauses select.

                         
Description :Exemples de syntaxe prise en charge
Sélectionnez toutes les colonnes pour une source de données IPDB.select *
Sélectionnez des colonnes spécifiques à partir d'une source de données IPDB (vous devez séparer chaque colonne par une virgule). select column1,column2,column3,...,columnN
Utilisez distinct dans une clause select. Vous devez placer la colonne entre parenthèses lorsque vous utilisez distinct.select distinct(column1)
Utilisez les fonctions d'agrégation dans la clause select. Reportez-vous à la section « Fonctions d'agrégation prises en charge » ci-dessous pour obtenir la liste complète des fonctions d'agrégation prises en charge dans cette version.select count(msg.id)

select count(distinct(msg.id))

Syntaxe non prise en charge pour la clause Select

                           
Description :Exemples de syntaxe non prise en charge
Ne placez pas les noms de colonnes entre parenthèses à moins que vous ne souhaitiez spécifier une agrégation. L'exemple suivant illustre une utilisation des parenthèses non prise en charge.select (msg.id), (ip.src)
N'utilisez pas de colonnes calculées. L'exemple suivant illustre l'utilisation non prise en charge de colonnes calculées.select msg.id+100, ip.src
N'utilisez pas d'alias pour les colonnes (avec ou sans AS). L'exemple suivant illustre l'utilisation non prise en charge d'alias de colonnes.select msg.id as ID, ip.src SRC
Security Analytics ne prend pas en charge la fonction Lower dans les clauses Select. 

Syntaxe prise en charge pour la clause Where

Vous devez inclure les colonnes order by et group by dans les clauses where.

                                                 
Description :Exemples de syntaxe prise en charge
Si la valeur contient un espace, placez-la entre des guillemets simples. La syntaxe suivante est incorrecte :

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'
Placez la valeur entre des guillemets simples si elle
contient des caractères spéciaux. Vous n'avez pas besoin de placer les caractères suivants entre des guillemets simples :
  • caractères alphanumériques
  • : (deux-points)
  • _ (tiret bat)
  • . (point)

La syntaxe suivante ne fonctionne pas :

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

La syntaxe suivante ne fonctionne pas :

where url = some/urls/string

La syntaxe suivante ne fonctionne pas :

where msg = Failover cable OK.

La syntaxe suivante fonctionne :

where msg.id = 101001:10

La syntaxe suivante fonctionne :

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

La syntaxe suivante fonctionne :

where url = 'some/urls/string'

La syntaxe suivante fonctionne :

where msg = ‘Failover cable OK.’
Utilisez cette syntaxe pour exprimer une condition de filtrage.column1 <operator> 'value'
Utilisez cette syntaxe pour les opérateurs booléens AND ou OR. Reportez-vous à la section « Opérateurs pris en charge » ci-dessous pour obtenir la liste complète des opérateurs pris en charge dans cette version.column1 <operator> 'value' and column2<operator'value' or column1 <operator> 'value' 
Utilisez cette syntaxe pour vérifier les valeurs nulles.column1 is null

column1 is not null
Utilisez cette syntaxe pour vérifier l'adhésion avec l'opérateur IN.column1 in ('value1','value2',...,'valueN')

column1 not in ('value1','value2',...,'valueN')
Utilisez cette syntaxe pour spécifier une plage avec l'opérateur BETWEEN.column1 between 'value1' and 'value2'

column1 not between 'value1' and 'value2'
Utilisez cette syntaxe pour comparer une chaîne avec l'opérateur LIKE.column1 like 'value'

column1 not like 'value'
Utilisez cette syntaxe pour rechercher les modèles à l'aide du caractère générique % avec l'opérateur LIKE.select msg.id where msg like 'ip%'
Utilisez la fonction Lower pour ignorer les majuscules et minuscules dans les recherches avec la clause Where.

Vous pouvez associer la fonction Lower dans une clause Where avec le type de colonne TEXTE exclusivement.  Si vous spécifiez Lower avec un type de colonne autre que TEXTE, Security Analytics affiche un message d'erreur.

Security Analytics ne prend pas en charge la fonction Lower pour les opérateurs BETWEEN, IN et NOT NULL.
Lower(columnName) like ‘some%’
Lower(columnName) like lower(‘some%’)

 Syntaxe non prise en charge pour la clause Where

                 
Description :Exemples de syntaxe non prise en charge
N'utilisez pas les requêtes imbriquées.select msg.id where msg.id in (select msg.id from table where ip.src = '1.1.1.1')
N'utilisez pas la fonction Lower pour les opérateurs BETWEEN, IN et NOT NULL. 

Syntaxe prise en charge pour la clause Order by

La fonctionnalité Order by n'est pas sensible à la casse.

                   
Description :Exemples de syntaxe prise en charge

Utilisez cette syntaxe pour réaliser des tris par ordre croissant (asc) et décroissant (desc) avec Order by.

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

Ne placez les noms de colonnes entre parenthèses que si vous appliquez une fonction d'agrégation à la colonne. L'exemple suivant illustre une utilisation non valide des parenthèses dans une clause Order by :

order by (count(size)) asc

order by count(size) asc

Syntaxe prise en charge pour la clause Group by

               
Description :Exemples de syntaxe prise en charge
Utilisez cette syntaxe pour grouper une ou plusieurs colonnes. N'utilisez pas de parenthèses pour placer les noms de colonnes. La fonctionnalité Group by n'est pas sensible à la casse.
  • group by size
  • group by msg

Fonctions d'agrégation prises en charge

Le service IPDB Extractor prend en charge les fonctions d'agrégation et syntaxes suivantes dans cette version.

  • count
  • max
  • min
  • sum
  • avg

Vous pouvez utiliser Distinct avec les fonctions d'agrégation, comme l'indique la syntaxe suivante :

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

Opérateurs pris en charge

                                                 
OpérateurSyntaxe
= (égal à)column1 = 'value'
!= (différent de)column1 != 'value'
<= (inférieur ou égal à)column1 <= 'value'
>=  (supérieur ou égal à)column1 >= 'value'
< (inférieur à)column1 < 'value'
> (supérieur à)column1 > 'value'
INcolumn1 NOT ('value1','value2',...,'valueN')

column1 not in ('value1','value2',...,'valueN')
between (plage entre deux valeurs)column1 between 'value1' and 'value2'

column1 NOT between 'value1' and 'value2'
and, or, not (opérateur booléen)condition1 and condition2

condition1 or condition2

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

column1 not like 'value'

Exemples de requêtes prises en charge

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'

Exemples de requêtes non prises en charge

                                           
Requête non prise en chargeRaison
select (msg.id), (ip.src), ip.dst, user.dst where size is not null.Vous ne pouvez pas placer des colonnes entre parenthèses.
select msg.id where msg.id IN (select msg.id from table where ip.src = ‘1.1.1.1’)Vous ne pouvez pas utiliser de clause Select imbriquée (sous-requête) pour obtenir msg.idfield sur une autre condition.
select ip.src where ip.src in between ’10.10.10.1’ and ’10.10.9.1’Vous ne pouvez utiliser l'opérateur Between que pour des types de données numériques et de date/heure.
select ip.srcport,ip.dstport where ip.dst != '225.31.125.90' order by count(distinct  ip.dstport) ascLorsque vous utilisez Distinct sur n'importe quelle fonction d'agrégation, vous devez placer le nom de la colonne entre parenthèses.
select ip.srcport,ip.dstport where ip.dst != '225.31.125.90' order by (ip.dstport) asc,(ip.srcport) descVous ne pouvez pas placer les noms de colonnes entre parenthèses.
select ip.srcport,ip.dstport   where ip.dst != '225.31.125.90' group by ip.srcport,ip.dstport  order by COUNT((ipsrcport))Vous ne pouvez utiliser qu'une seule paire de parenthèses pour placer les noms de colonnes. Le système traite les ensembles multiples de parenthèses comme des expressions imbriquées, et elles ne sont pas prises en charge.
select time where time = ‘1999-NOVEMBER-01 10:10:10’Le format d'horodatage est incorrect.
select time where time = ‘2012-11-11 10:10:10’Le format d'horodatage est incorrect.
You are here
Table of Contents > Utilisation des règles de Reporting > Présentation de la règle > Syntaxe de la règle IPB

Attachments

    Outcomes