Interroger des données en utilisant le langage de requête Kusto

Effectué

Vous pouvez utiliser le langage de requête Kusto (KQL) dans Microsoft Sentinel pour lancer des recherches dans les données collectées et les filtrer.

Langage de requête Kusto

KQL vous permet de créer, stocker et exécuter des analytiques interactives sur les données collectées. Microsoft Sentinel utilise KQL pour visualiser et analyser les données importantes. Vous pouvez utiliser KQL pour créer des requêtes analytiques complexes qui incluent certains des opérateurs suivants :

  • Colonnes calculées
  • Fonctions de jointure
  • Regroupement par agrégats

Écrire et exécuter des requêtes de base

Une requête est une demande en lecture seule qui traite des données et retourne les résultats de ce traitement sans modifier les données ou les métadonnées. De façon similaire aux requêtes SQL, les requêtes KQL utilisent des entités de schéma qui sont organisées dans une hiérarchie constituée de bases de données, de tables et de colonnes. Un schéma est une collection de tables regroupées en catégories logiques. Les requêtes se composent de séquences d’instructions de requête qui sont délimitées par un point-virgule (;).

Quand vous construisez une requête, vous commencez par un nom de table ou par une commande de recherche. Par exemple, la requête suivante récupère tous les enregistrements de la table Event :

Event

Vous pouvez utiliser le caractère de barre verticale (|) pour séparer des commandes. La sortie de la première commande devient l’entrée de la commande suivante. Vous pouvez ajouter n’importe quel nombre de commandes à une seule requête. La requête suivante récupère les enregistrements de la table Event, puis recherche le terme error dans toutes les propriétés :

Event

| search error

Vous pouvez construire la requête avec des opérateurs tabulaires et scalaires que KQL combine en plusieurs instructions d’expressions tabulaires, qui produisent les résultats de la requête.

source1 | operator1 | operator2

Dans l’exemple suivant, la source est AzureActivity. Le premier opérateur est where, qui filtre les enregistrements en fonction de l’expression logique. Le deuxième opérateur est à nouveau where :

AzureActivity

| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'

Par défaut, Log Analytics limite les requêtes à l’intervalle de temps des dernières 24 heures. Pour définir une autre plage horaire, vous pouvez ajouter un filtre TimeGenerated explicite à la requête ou utiliser le contrôle Time range. Par exemple, la requête suivante retourne les données de l’heure précédente :


AzureActivity

| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
| where TimeGenerated > ago (1h)

Vous pouvez combiner vos requêtes avec certains des opérateurs les plus couramment utilisés :

  • count. retourne le nombre de lignes dans la table.
  • take. retourne au maximum le nombre spécifié de lignes de données.
  • project. sélectionne un sous-ensemble de colonnes.
  • sort. Trie les lignes de la table d’entrée dans l’ordre selon une ou plusieurs colonnes.
  • top. Retourne les N premiers enregistrements triés selon les colonnes spécifiées.
  • extend. calcule des colonnes dérivées.
  • summarize. agrège des groupes de lignes.
  • render. affiche les résultats sous la forme d’une sortie graphique.

Pour combiner les enregistrements de deux sources (tables), vous pouvez utiliser l’opérateur join. L’opérateur union combine deux tables ou plus en une seule.

Pour plus d’informations, consultez le tutoriel Log Analytics qui utilise des fonctionnalités de Log Analytics pour générer et exécuter une requête au lieu d’utiliser la requête elle-même.

Vous pouvez également utiliser le tutoriel Azure Data Explorer pour en savoir plus sur KQL.

Notes

Microsoft Sentinel Log Analytics ne prend pas en charge la syntaxe KQL utilisée dans Azure Data Explorer.

Dépôt Microsoft Sentinel sur GitHub

Vous pouvez également utiliser le dépôt Microsoft Sentinel sur GitHub pour rechercher des requêtes et des workbooks spécialisés afin de renforcer la sécurité de votre environnement et de repérer des menaces. Par exemple, la requête suivante du dépôt GitHub Microsoft Sentinel affiche les délégations suspectes d’autorisations à des comptes d’utilisateur.

let timeframe = 7d;
AzureActivity
| where TimeGenerated >= ago(timeframe)
| where OperationName == "Create role assignment"
| where ActivityStatus == "Succeeded"
| project Caller, CallerIpAddress
| evaluate basket()
| extend AccountCustomEntity = Caller, IPCustomEntity = CallerIpAddress

La requête analyse l’adresse IP à partir de laquelle l’administrateur accorde à d’autres utilisateurs l’accès à des ressources Azure. Si une opération ne provient pas d’une adresse IP valide, la requête signale une activité suspecte, que vous pouvez ensuite investiguer plus en détail.

Si vous voulez essayer quelques exemples, utilisez l’environnement de démonstration sur le portail Azure.

Vérifiez vos connaissances

1.

Lequel des outils suivants un administrateur peut-il utiliser pour interroger les données dans Microsoft Sentinel ?

2.

Lequel des caractères suivants peut être utilisé par un administrateur pour séparer les commandes dans la requête ?