Génération de requêtes KQL

Le langage de requête Kusto (KQL) est un langage de requête que vous pouvez utiliser pour interroger le lac de données QRadar® . KQL vous permet de générer une variété de types de requêtes allant de requêtes de recherche simples à des requêtes agrégées plus complexes.

Procédure

  1. Accédez à Menu > Data Explorer > Rechercher.
    Astuce: Vous pouvez également cliquer sur Commencer la recherche dans la page d'accueil.
  2. Dans la liste déroulante des types de requête, sélectionnez Journaux / Alertes (KQL).
  3. Dans la zone de texte de la requête, entrez votre requête. Par exemple, la requête suivante renvoie tous les événements des 5 dernières minutes, jusqu'à un maximum de 10000 événements.
    events    
        | project original_time, data_source_name, name, user_id, low_level_categories,
            src_ip, src_port, dst_ip, dst_port, payload
        //--- Search for the last 5 minutes of data
        | where original_time > ago(5m)    
        //--- USER Criteria Here    
        | take 10000

    Chaque filtre préfixé par le caractère de barre verticale (|) est une instance d'un opérateur, avec des paramètres.

    La liste suivante contient des opérateurs KQL communs que vous pouvez utiliser dans les requêtes.

    Opérateur KQL Descriptif
    commande Trie les résultats dans l'ordre en fonction d'une ou de plusieurs colonnes.
    projet Renvoie uniquement un sous-ensemble de colonnes spécifié. Par exemple, project original_time, name et payload.
    récapituler Organise les résultats en groupes ayant les mêmes valeurs après les expressions by .
    prendre Renvoie uniquement le nombre de lignes spécifié (5).
    Filtre les résultats pour le sous-ensemble de lignes spécifié dans les arguments.
    Note: Pour le format ISO 8601, l'opérateur datetime() peut être entouré ou non de guillemets. Pour d'autres normes telles que RFC 822, RFC 850 et Sortable format, les requêtes comprenant des espaces doivent être placées entre guillemets.

Résultats

En cas d'erreur de syntaxe dans votre requête, l'option Exécuter la requête est désactivée jusqu'à ce que vous résolviez l'erreur. Chaque erreur de syntaxe est mise en évidence avec un trait de soulignement rouge, une infobulle contenant des détails sur l'erreur de syntaxe et une aide contextuelle donnant des suggestions de correction de la syntaxe.

Lors de l'exécution d'une requête, une carte 'requête active query' est ajoutée. Chaque requête expire 4 jours après sa création. Le délai d'expiration est indiqué sur la carte.

Exemple

Renvoie 100 lignes de la table d'événements.

events
| take 100

Renvoie 10 catégories d'événements ayant le plus d'événements.

events_all
| summarize Count=count() by qid_event_category
| order by Count desc
| take 10

Renvoie 10 sources de données ayant le plus grand nombre d'événements.

events
| project data_source_name, original_time
| where data_source_name != ''
| summarize Events=count() by data_source_name
| order by Events desc
| take 10

Renvoie les sources de données au cours de la dernière heure.

events
| project original_time, data_source_name
| where original_time > ago(1h)  
| summarize Count=count() by Time=bin(original_time, 5m), data_source_name  
| order by Time, data_source_name desc

Renvoie les événements des 5 dernières minutes jusqu'à un maximum de 10000.

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for the last 5 minutes of data
    | where original_time > ago(5m)    
    //--- USER Criteria Here    
    | take 10000

Renvoie les événements de la dernière heure jusqu'à un maximum de 10000

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for the last hour of data
    | where original_time > ago(5m)    
    //--- USER Criteria Here    
    | take 10000

Recherchez les événements des dernières 24 heures ayant l'adresse IP source 127.0.0.1.

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for IP = 127.0.0.1 over the last 24 hour of data
    | where original_time > ago(24h) and src_ip = ‘127.0.0.1’  
    //--- USER Criteria Here    
    | take 100

Recherchez les événements des dernières 24 heures qui n'ont pas d'adresse IP source 127.0.0.1.

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for IP not equal to 127.0.0.1 over the last 24 hour of data
    | where original_time > ago(24h) and src_ip != ‘127.0.0.1’  
    //--- USER Criteria Here    
    | take 100

Recherchez les événements de la dernière heure où le contenu a une correspondance sur svchost.

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for payload that has a match on ‘svchost’ over last hour
    | where original_time > ago(1h) and payload has ‘svchost’  
    //--- USER Criteria Here    
    | take 100