Utiliser l’opérateur de synthèse
L’opérateur Count avec ses variantes crée une colonne avec le résultat calculé pour les champs spécifiés.
La première instruction ci-dessous retourne une colonne qui est une liste unique de valeurs de colonne d’activité.
La deuxième instruction retourne le nombre de lignes SecurityEvent pour lesquelles EventID est égal à 4688 et le nombre est regroupé par processus et ordinateur. En raison de la clause by, le jeu de résultats contient trois colonnes : process, Computer, Count.
Exécutez chaque requête séparément pour voir les résultats.
SecurityEvent | summarize by Activity
SecurityEvent
| where EventID == "4688"
| summarize count() by Process, Computer
L’exemple ci-dessous présente une liste partielle des fonctions d’agrégation simples les plus courantes utilisées avec l’opérateur summarize.
Fonction(s) | Description |
---|---|
count(), countif() | Retourne un nombre d'enregistrements par groupe de totalisation |
dcount(), dcountif() | Retourne une estimation du nombre de valeurs distinctes prises par une expression scalaire dans le groupe de résumé. |
avg(), avgif() | Calcule la moyenne d’Expr dans le groupe. |
max(), maxif() | Retourne la valeur maximale dans l'ensemble du groupe. |
min(), minif() | Retourne la valeur minimale dans l'ensemble du groupe. |
percentile() | Retourne une estimation pour le centile spécifié du rang le plus proche de la population définie par Expr. La précision dépend de la densité de population dans la région du centile. |
stdev(), stdevif() | Calcule l’écart type de Expr au sein du groupe, en considérant le groupe comme un échantillon. |
sum(), sumif() | Calcule la moyenne d’Expr dans le groupe. |
variance(), varianceif() | Calcule l’écart type de Expr au sein du groupe, en considérant le groupe comme un échantillon. |
exemple de fonction count
Une colonne de fonction d’agrégation peut être explicitement nommée en incluant « FieldName = » avant la fonction d’agrégation.
L’instruction KQL retourne trois colonnes : « cnt », « AccountType » et « Computer ». Le nom du champ « cnt » remplacera le nom « count_ » par défaut.
SecurityEvent
| where TimeGenerated > ago(1h)
| where EventID == 4624
| summarize cnt=count() by AccountType, Computer
Exemple de fonction <dcount>
L’exemple suivant retourne un nombre d’adresses IP uniques.
SecurityEvent
| summarize dcount(IpAddress)
Prenons un exemple réel.
L’instruction suivante est une règle permettant de détecter les échecs pour cause de mot de passe non valide sur plusieurs applications pour le même compte.
L’opérateur where pour ResultDescription filtre le jeu de résultats sur les résultats incluant « Mot de passe non valide ». Ensuite, l’instruction « summarize » produit un nombre distinct de noms d’application et les regroupe par utilisateur et par adresse IP. Enfin, il existe une vérification par rapport à une variable créée (seuil) pour déterminer si le nombre dépasse la quantité autorisée.
let timeframe = 30d;
let threshold = 1;
SigninLogs
| where TimeGenerated >= ago(timeframe)
| where ResultDescription has "Invalid password"
| summarize applicationCount = dcount(AppDisplayName) by UserPrincipalName, IPAddress
| where applicationCount >= threshold