Partager via


Vue d’ensemble du Langage de requête Kusto

S’applique à : ✅Microsoft Fabric

Le langage de requête Kusto (KQL) est un outil puissant permettant d’explorer vos données et d’y découvrir des modèles, d’identifier des anomalies et des valeurs hors norme, de créer une modélisation statistique, etc.

KQL est un langage simple et puissant pour interroger des données structurées, semi-structurées et non structurées. Le langage est expressif, facile à lire et à comprendre l’intention de requête et optimisé pour les expériences de création. KQL est optimal pour interroger les données de télémétrie, les métriques et les journaux avec prise en charge approfondie de la recherche de texte et de l’analyse, des opérateurs et fonctions de série chronologique, d’analyse et d’agrégation, de recherches géospatiales, de similarité vectorielle et de nombreuses autres constructions de langage qui fournissent le langage le plus optimal pour l’analyse des données. La requête utilise des entités de schéma organisées dans une hiérarchie similaire à SQLs : bases de données, tables et colonnes.

Si vous avez un arrière-plan dans l’écriture de scripts ou l’utilisation de bases de données, une grande partie du contenu de cet article doit se sentir familière. Si ce n’est pas le cas, ne vous inquiétez pas, car la nature intuitive du langage vous permet rapidement de commencer à écrire vos propres requêtes et à créer de la valeur pour votre organisation.

Cet article fournit une explication du langage de requête et propose des exercices pratiques pour vous aider à écrire des requêtes. Pour accéder à l’environnement de requête, utilisez l’interface utilisateur web Azure Data Explorer. Pour savoir comment utiliser KQL, consultez Tutoriel : Découvrir les opérateurs courants.

Cet article fournit une explication du langage de requête et propose des exercices pratiques pour vous aider à écrire des requêtes. Pour accéder à l’environnement de requête, utilisez l’ensemble de requêtes KQL . Pour savoir comment utiliser KQL, consultez Tutoriel : Découvrir les opérateurs courants.

KQL est également le langage que vous utilisez pour utiliser et manipuler des données dans Microsoft Sentinel. Les journaux que vous alimentez dans votre espace de travail ne valent pas grand chose si vous ne pouvez pas les analyser et obtenir les informations importantes cachées dans toutes ces données. KQL a non seulement la puissance et la flexibilité pour obtenir ces informations, mais la simplicité pour vous aider à commencer rapidement.

Cet article présente les principes de base de KQL, couvrant certaines des fonctions et opérateurs les plus utilisés, qui doivent traiter de 75 à 80 % des requêtes que les utilisateurs écrivent quotidiennement. Lorsque vous avez besoin de plus de profondeur ou pour exécuter des requêtes plus avancées, vous pouvez tirer parti du classeur Advanced KQL pour Microsoft Sentinel.

Pourquoi KQL pour Microsoft Sentinel ?

Microsoft Sentinel s’appuie sur le service Azure Monitor et utilise les espaces de travail Log Analytics d’Azure Monitor pour stocker toutes ses données. Ces données incluent les éléments suivants :

  • données ingérées de sources externes dans des tables prédéfinies à l’aide de connecteurs de données Microsoft Sentinel.
  • données ingérées de sources externes dans des tables personnalisées définies par l’utilisateur, à l’aide de connecteurs de données personnalisés et de certains types de connecteurs prêts à l’emploi.
  • données créées par Microsoft Sentinel proprement dit, résultant des analyses qu’il crée et effectue (par exemple, les alertes, les incidents et les informations liées à UEBA).
  • données chargées sur Microsoft Sentinel pour faciliter la détection et l’analyse (par exemple, les flux de renseignements sur les menaces et les watchlists).

KQL a été développé dans le cadre du service Azure Data Explorer , et il est donc optimisé pour la recherche dans des magasins Big Data dans un environnement cloud. Il est conçu pour vous aider à approfondir vos données et à explorer leurs trésors cachés.

KQL est également utilisé dans Azure Monitor et prend en charge des fonctionnalités Supplémentaires d’Azure Monitor qui vous permettent de récupérer, visualiser, analyser et analyser des données dans les magasins de données Log Analytics. Dans Microsoft Sentinel, vous utilisez des outils basés sur KQL chaque fois que vous visualisez et analysez des données et recherchez des menaces, que ce soit dans des règles et des classeurs existants ou dans la création de vos propres données.

Étant donné que KQL fait partie de presque tout ce que vous faites dans Microsoft Sentinel, une compréhension claire de son fonctionnement vous aide à tirer parti de votre SIEM.

Qu’est-ce qu’une requête Kusto ?

Une requête Kusto est une requête en lecture seule pour traiter les données et retourner des résultats. La demande est indiquée en texte brut, à l’aide d’un modèle de flux de données facile à lire, créer et automatiser. Les requêtes Kusto sont effectuées sur une ou plusieurs instructions de requête.

Une requête Kusto n’écrit aucune donnée. Les requêtes opèrent sur des données qui sont organisées dans une hiérarchie de bases de données, de tables et de colonnes, comme en SQL.

Qu’est-ce qu’une instruction de requête ?

Il existe trois types d’instructions de requête utilisateur:

  • Instruction d' expression tabulaire
  • Une instruction let
  • Instruction set

Toutes les instructions de requête sont séparées par un ; (point-virgule) et affectent uniquement la requête à la main.

Remarque

Pour plus d’informations sur les instructions de requête d’application, consultez instructions de requête d’application.

Le type d’instruction de requête le plus courant est une expression tabulaire instruction, ce qui signifie que son entrée et sa sortie se composent de tables ou de jeux de données tabulaires. Les instructions tabulaires contiennent zéro ou plusieurs opérateurs , chacun commençant par une entrée tabulaire et retourne une sortie tabulaire. Les opérateurs sont séquencés par un | (canal). Les flux de données, ou sont redirigés, d’un opérateur à l’autre. Les données sont filtrées ou manipulées à chaque étape, puis transmises à l’étape suivante.

C’est comme un entonnoir, où vous commencez avec une table de données entière. Chaque fois que les données passent par un autre opérateur, elles sont filtrées, réorganisées ou résumées. Étant donné que le piping des informations d’un opérateur à un autre est séquentiel, l’ordre de l’opérateur de requête est important et peut affecter à la fois les résultats et les performances. À la fin de l’entonnoir, vous êtes laissé avec une sortie affinée.

Examinons un exemple de requête.

Exécuter le de requête

StormEvents
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"
| count
Compter
28

Remarque

KQL respecte la casse pour tout : noms de tables, noms de colonnes de table, opérateurs, fonctions, et ainsi de suite. Les mots clés peuvent être utilisés comme identificateurs en les plaçant entre crochets et guillemets ([' et '] ou [" et "]). Par exemple, ['where']. Pour plus d’informations, consultez règles de nommage d’identificateur

Cette requête a une instruction d’expression tabulaire unique. L’instruction commence par une référence à une table appelée StormEvents et contient plusieurs opérateurs, where et count, chacun séparé par un canal. Les lignes de données de la table source sont filtrées par la valeur de la colonne StartTime , puis filtrées par la valeur de la colonne d’état . Dans la dernière ligne, la requête retourne une table avec une seule colonne et une seule ligne contenant le nombre de lignes restantes.

Pour essayer d’autres requêtes Kusto, consultez Tutoriel : Écrire des requêtes Kusto.

Commandes de gestion

Contrairement aux requêtes Kusto, les commandes de gestion sont des demandes adressées à Kusto pour traiter ou modifier des données ou des métadonnées. Par exemple, la commande de gestion suivante crée une table Kusto avec deux colonnes, Level et Text:

.create table Logs (Level:string, Text:string)

Les commandes de gestion ont leur propre syntaxe, qui ne fait pas partie de la syntaxe KQL, bien que les deux partagent de nombreux concepts. En particulier, les commandes de gestion se distinguent des requêtes en ayant le premier caractère dans le texte de la commande comme point (.) caractère (qui ne peut pas démarrer une requête). Cette distinction empêche de nombreux types d’attaques de sécurité, tout simplement parce qu’elle empêche l’incorporation de commandes de gestion dans des requêtes.

Toutes les commandes de gestion ne modifient pas les données ou les métadonnées. La grande classe de commandes commençant par .show, est utilisée pour afficher des métadonnées ou des données. Par exemple, la commande .show tables retourne une liste de toutes les tables de la base de données active.

Pour plus d’informations sur les commandes de gestion, consultez Vue d’ensemble des commandes de gestion.

KQL dans d’autres services

KQL est utilisé par de nombreux autres services Microsoft. Pour plus d’informations sur l’utilisation de KQL dans ces environnements, reportez-vous aux liens suivants :