Syntaxe de filtrage

Pour limiter les résultats renvoyés dans une demande d'extraction de l'API ( HTTP GET), la plupart des points d'extrémité de l'API qui renvoient des listes de ressources prennent en charge le paramètre IBM® QRadar® Qui renvoient des listes de ressources prennent en charge le paramètre filter .

La syntaxe de paramètre filter est cohérente pour tous les noeuds finaux qui les prennent en charge. Reportez-vous à la documentation du noeud final pour déterminer si le paramètre de filtre s'y applique. Les limitations relatives à la syntaxe de filtre figurent dans la description de ce noeud final. Les paramètres de la requête doivent être encodés en double URL avant d'être envoyés.

Opérateurs de comparaison

Le tableau des opérateurs de comparaison de filtre ci-après décrit les opérateurs de comparaison que vous pouvez utiliser dans le paramètre de filtre.

Tableau 1. Opérateurs de comparaison de filtre
Opérateur Descriptif Exemple de syntaxe de filtre
= Égalité entre l'identificateur et la valeur spécifiée retournée. Pour rechercher des infractions où status=CLOSED, utilisez la syntaxe suivante:

GET /api/siem/offenses?filter=status%3DCLOSED

> L'identificateur est supérieur à la valeur spécifiée. Pour rechercher des infractions où credibility > 3, utilisez la syntaxe suivante:

/api/siem/offenses?filter=credibility%20%3E%203

< L'identificateur est inférieur à la valeur spécifiée. Pour rechercher des infractions où magnitude < 9, utilisez la syntaxe suivante:

/api/siem/offenses?filter=magnitude%20%3C%209

<= L'identificateur est inférieur ou égal à la valeur spécifiée. Pour rechercher des infractions où id <= 1004, utilisez la syntaxe suivante:

/api/asset_model/properties?filter=id%20%3C%3D%201004

>= L'identificateur est supérieur ou égal à la valeur spécifiée.

Pour rechercher des infractions où scanProfileId >= 3, utilisez la syntaxe suivante:

/api/scanner/scanprofiles?filter=scanProfileId%20%3E%3D%203

!=,

<>,

^=

L'identificateur n'est pas égal à la valeur spécifiée.

Les exemples suivants filtrent tous les ID qui ne sont pas égaux à 5:

/api/siem/offenses?filter=id%20!%3D%205

/api/siem/offenses?filter=id%20%3C%3E%205

/api/siem/offenses?filter=id%20%5E%3D%205

in L'identificateur est égal à au moins l'une des valeurs spécifiées dans la liste. Syntaxe : id in (1001,1111,1200)

Exemple : /api/asset_model/assets?filter=id%20in%20(1001%2C1111%2C1200)

not in L'identificateur n'est égal à aucune des valeurs spécifiées dans la liste. Syntaxe: id not in (1001,1002,1003):

Exemple : /api/asset_model/saved_searches?filter=id%20not%20in%20(14%2C20%2C1003)

between … and … L'identificateur est compris entre deux valeurs spécifiées. Syntaxe: id between 0 and 3:

Exemple : /api/siem/offenses?filter=id%20between%200%20and%203

not between … and … L'identificateur n'est pas compris entre deux valeurs spécifiées. Syntaxe: id not between 30 and 31:

Exemple : /api/siem/offenses?filter=id%20not%20between%2030%20and%2031

is null L'identificateur est nul. Syntaxe: assigned_to is null:

Exemple : /api/siem/offenses?filter=assigned_to%20is%20null

is not null L'identificateur n'est pas nul. Syntaxe: assigned_to is not null:

Exemple : /api/siem/offenses?filter=assigned_to%20is%20not%20null

Valeurs nulles et opérateurs de comparaison

Lorsque la zone sur laquelle vous appliquez un filtre comporte une valeur 'null', les opérateurs de comparaison se comportent de la manière suivante :

Les opérateurs "=", "> ", "> =", "<", "< =", "IN" et "BETWEEN" renvoient toujours la valeur false.
"! =", "< >", "^ =", "NOT BETWEEN" et "NOT IN" renvoient toujours la valeur true.

La meilleure façon de tester les valeurs nulles est d'utiliser les opérateurs "is null" ou "is not null".

Opérateurs logiques

Utilisez les opérateurs logiques OR, AND et NOT pour effectuer des opérations logiques sur des sous-expressions. Le tableau ci-après comporte des exemples d'utilisation des opérateurs logiques dans les filtres.

Opérateur Descriptif Exemple
or Effectue une opération OR logique sur les deux sous-expressions. Les sous-expressions peuvent être des noeuds de comparaison ou d'autres noeuds logiques. assigned_to n'est pas null OU id = 111:

/api/siem/offenses?filter=assigned_to%20is%20not%20null%20or%20id%20%3D%20111

and Effectue une opération AND logique sur les deux sous-expressions. Les sous-expressions peuvent être des noeuds de comparaison ou d'autres noeuds logiques. assigned_to n'est pas null ET id = 111:

/api/siem/offenses?filter=assigned_to%20is%20not%20null%20and%20id%20%3D%20111

not Effectue une opération NOT logique sur la sous-expression. protected =true and not id in (111,112,113)

/api/siem/offenses?filter=protected%20%3D%20true%20and%20not%20id%20in%20(111%2C112%2C113)

Indication de zones JSON pour les comparaisons

Le tableau ci-après indique comment indiquer les zones JSON à utiliser avec des opérateurs de comparaison dans les filtres.

Exemple de zone JSON Descriptif Exemple
{
"name": "Proprietary Data",
"element_type": "ALN"
}
Lorsque vous appliquez un filtre à une zone directement dans l'objet qui est retourné, cette zone est spécifiée par nom.

name = "Proprietary Data"

GET /api/reference_data/sets?filter=name%20%3D%20%22Proprietary%20Data%22

{
 "description": "String",
 "duration": {
  "days": 42,
  "hours": 42,
  "minutes": 42,
  "months": 42,
  "seconds": 42.5,
  "years": 42
  }
}

Lorsque vous appliquez un filtre à une zone imbriquée dans un sous-objet, utilisez des crochets pour spécifier la zone interne.

duration(days) >= 20

GET /api/scanner/scanprofiles?filter=duration(days)%20%3E%3D%201

["events","flows","simarc"]
Pour les types JSON simples dans lesquels il n'existe aucun libellé de zone, tels que des chaînes, des nombres ou une valeur booléenne, utilisez l'opérateur . .

.= events

GET /api/ariel/databases?filter=.%3D%20events

Indication de valeurs de chaîne et de valeurs numériques dans les filtres

Lorsque vous effectuez un filtrage sur des chaînes comportant des valeurs comportant des caractères non alphanumériques, vous devez placer la chaîne cible entre guillemets. Lorsque vous filtrez sur des valeurs numériques, celles-ci peuvent être soumises aux conditions suivantes :

  • Elles doivent commencer par un signe + ou -.
  • Contient ou commence par un séparateur décimal.
  • Incluez un exposant en utilisant la notation e.

Filtrage d'objets complexes à l'aide de l'opérateur CONTAINS

Vous pouvez filtrer des objets complexes à l'aide de l'opérateur CONTAINS. L'opérateur CONTAINS permet de tester le contenu de listes ou de cartes. A gauche de l'opérateur figure un identificateur qui est au format standard, par exemple x(y(z)). L'identificateur doit faire référence à un élément qui est une liste, une carte ou une collection. Sur le côté droit de l'opérateur se trouve une expression qui indique comment les objets de la liste doivent être mis en correspondance. Il existe deux cas d'utilisation de base pour l'utilisation de l'opérateur CONTAINS:

  • La liste examinée contient des éléments simples tels que des chaînes ou des nombres.
  • La liste contient des objets complexes.
Listes contenant des types simples
Pour les listes contenant des types simples comme des chaînes ou des nombres, l'expression est une valeur du même type. Pour les comparaisons uniques, aucun crochet n'est requis.

Pour demander uniquement les recherches sauvegardées d'actif comportant la chaîne ftp dans la zone de valeur du filtre :

GET /api/asset_model/saved_searches?filter=filters%20contains%20value%20%3D%20ftp

Pour demander des actifs dont les interfaces contiennent l'adresse IP "192.0.2.0":

GET /api/asset_model/assets?filter=interfaces%20contains%20ip_addresses%20contains%20value%20%3D%20%192.0.2.0%22

Listes contenant des objets complexes

Pour les listes contenant des objets complexes, l'expression est une expression de filtrage complète pour les objets au sein de la liste. Cette expression de sous-filtre utilise la même syntaxe que n'importe quel autre filtre. Vous pouvez utiliser un opérateur dans le sous-filtre afin de tester les sous-listes situées à l'intérieur de la liste d'origine. Les identificateurs dans cette expression sont rattachées aux objets de la liste sur laquelle agit l'opérateur CONTAINS. Dans les expressions de sous-filtre complexes, les crochets sont obligatoires.

Pour demander uniquement des actifs comportant une zone value = 14 et l'opérateur Greater than , appliquez le filtre filters contains (value = 14 or operator = "Greater than"). Ce filtre renvoie le premier et le dernier éléments de la liste.

GET /api/asset_model/saved_searches?filter=filters%20contains%20(value%20%3D%2014%20and%20operator%20%3D%20%22Greater%20than%22)

Pour rechercher des infractions contenant les adresses source dont les valeurs d'ID sont inférieures à 3, appliquez le filtre suivant :

GET /api/siem/offenses?filter=source_address_ids%20contains%20(.%3C3)

Opérateur LIKE

Utilisez l'opérateur LIKE pour extraire des correspondances de chaîne de caractères partielle.

L'opérateur LIKE utilise le format suivant : identifier like "expression". Les guillemets autour de l'expression sont obligatoires. Les guillemets simples et double sont pris en charge. Le mot clé LIKE effectue des correspondances sensibles à la casse.

Les caractères génériques ci-après sont pris en charge. Si vous utilisez des caractères génériques dans une chaîne, vous devez les mettre en échappement.

Caractère générique Descriptif
% Correspond à une chaîne d'au moins zéro caractères
_ Correspond à tout caractère unique
Prenons l'exemple d'une API qui renvoie la collection de données suivante:
GET /path/to/api
[
 {
 "hostname": "server.domain1"
 },
 {
 "hostname": "server.domain2"
 },
 {
 "hostname": "SERVER.domain"
 },
 {
 "hostname": "server.DOMAIN"
 }
]

Vous pouvez combiner les caractères génériques dans la même expression. Par exemple, pour rechercher des serveurs dans domain1 ou domain2, utilisez l'expression: hostname LIKE "%.domain_".

GET /path/to/api?filter=hostname%20LIKE%20%22%25.domain_%22 
[
 {
 "hostname": "server.domain1"
 },
 {
 "hostname": "server.domain2"
 }
]

Notez que SERVER.domain n'est pas renvoyé car le trait de soulignement (_) n'a pas de caractère de fin correspondant.

L'opérateur ILIKE

Utilisez l'opérateur ILIKE pour extraire les correspondances de chaînes partielles insensibles à la casse.

L'opérateur ILIKE est similaire à l'opérateur LIKE, mais il est insensible à la casse. Prenons l'exemple d'une API qui renvoie la collection de données suivante:
GET /path/to/api
[
 {
 "hostname": "server.domain1"
 },
 {
 "hostname": "server.domain2"
 },
 {
 "hostname": "SERVER.domain"
 },
 {
 "hostname": "server.DOMAIN"
 }
] 
Le filtrage à l'aide de l'expression hostname ILIKE "server.domain" génère la collection de données suivante:
GET /path/to/api?filter=hostname%20ILIKE%20%22server.domain%22'
[
 {
 "hostname": "SERVER.domain"
 },
 {
 "hostname": "server.DOMAIN"
 }
]