Surveiller l’intégrité et auditer l’intégrité de vos règles d’analyse

Pour garantir une détection complète, ininterrompue et sans falsification des menaces dans votre service Microsoft Sentinel, suivez l’intégrité et l’intégrité de vos règles d’analyse. Gardez-les à fonctionner de manière optimale en surveillant leurs insights d’exécution, en interrogeant les journaux d’intégrité et d’audit, et en utilisant la réexécution manuelle pour tester et optimiser vos règles.

Configurez des notifications d’événements d’intégrité et d’audit pour les parties prenantes concernées, qui peuvent ensuite prendre des mesures. Par exemple, définissez et envoyez des e-mails ou des messages Microsoft Teams, créez des tickets dans votre système de tickets, etc.

Cet article explique comment utiliser les fonctionnalités d’audit et de surveillance de l’intégrité de Microsoft Sentinel pour effectuer le suivi de l’intégrité et de l’intégrité de vos règles d’analyse dans Microsoft Sentinel.

Pour plus d’informations sur les insights sur les règles et le réexécution manuelle des règles, consultez Surveiller et optimiser l’exécution de vos règles d’analyse planifiées.

Résumé

  • Journaux d’intégrité des règles Microsoft Sentinel Analytics :

    • Ce journal capture les événements qui enregistrent l’exécution des règles d’analyse et le résultat final de ces exécutions, si elles ont réussi ou échoué, et si elles ont échoué, pourquoi.
    • Le journal enregistre également, pour chaque exécution d’une règle d’analyse :
      • Nombre d’événements capturés par la requête de la règle.
      • Indique si le nombre d’événements a dépassé le seuil défini dans la règle, ce qui provoque le déclenchement d’une alerte par la règle.

    Ces journaux sont collectés dans la table SentinelHealth de Log Analytics.

  • Journaux d’audit des règles Microsoft Sentinel Analytics :

    • Ce journal capture les événements qui enregistrent les modifications apportées à une règle d’analyse, y compris les détails suivants :
      • Nom de la règle qui a été modifiée.
      • Quelles propriétés de la règle ont été modifiées.
      • État des paramètres de règle avant et après la modification.
      • L’utilisateur ou l’identité qui a apporté la modification.
      • Adresse IP source et date/heure de la modification.
      • ... et bien plus encore.

    Ces journaux sont collectés dans la table SentinelAudit de Log Analytics.

Utiliser les tables de données SentinelHealth et SentinelAudit

Pour obtenir des données d’audit et d’intégrité à partir des tables décrites précédemment, vous devez d’abord activer la fonctionnalité d’intégrité Microsoft Sentinel pour votre espace de travail. Pour plus d’informations, consultez Activer l’audit et la surveillance de l’intégrité pour Microsoft Sentinel.

Une fois la fonctionnalité d’intégrité activée, la table de données SentinelHealth est créée lors du premier événement de réussite ou d’échec généré pour vos règles d’automatisation et vos playbooks.

Présentation des événements de table SentinelHealth et SentinelAudit

La table SentinelHealth enregistre les types d’événements d’intégrité des règles d’analyse suivants :

  • Exécution de règle d’analyse planifiée.
  • Exécution d’une règle d’analyse NRT.

Pour plus d’informations, consultez Schéma des colonnes de table SentinelHealth.

La table SentinelAudit enregistre les types suivants d’événements d’audit de règle d’analyse :

  • Créer ou mettre à jour une règle d’analyse.
  • Règle d’analyse supprimée.

Pour plus d’informations, consultez Schéma des colonnes de table SentinelAudit.

Exécuter des requêtes pour détecter les problèmes d’intégrité et d’intégrité

Pour obtenir de meilleurs résultats, générez vos requêtes sur les fonctions prédéfinies pour ces tables, _SentinelHealth() et _SentinelAudit() au lieu d’interroger directement les tables. Ces fonctions maintiennent la compatibilité descendante de vos requêtes si des modifications sont apportées au schéma des tables.

Dans un premier temps, filtrez les tables pour les données liées aux règles d’analyse. Utilisez le SentinelResourceType paramètre .

_SentinelHealth()
| where SentinelResourceType == "Analytics Rule"

Si vous le souhaitez, vous pouvez filtrer davantage la liste pour un type particulier de règle d’analyse. Utilisez le SentinelResourceKind paramètre pour cela.

| where SentinelResourceKind == "Scheduled"

# OR

| where SentinelResourceKind == "NRT"

Voici quelques exemples de requêtes pour vous aider à démarrer :

  • Recherchez les règles qui sont « autodisables » :

    _SentinelHealth()
    | where SentinelResourceType == "Analytics Rule"
    | where Reason == "The analytics rule is disabled and was not executed."
    
  • Comptez les règles et les exécutions qui ont réussi ou échoué, par raison :

    _SentinelHealth()
    | where SentinelResourceType == "Analytics Rule"
    | summarize Occurrence=count(), Unique_rule=dcount(SentinelResourceId) by Status, Reason
    
  • Rechercher l’activité de suppression de règle :

    _SentinelAudit()
    | where SentinelResourceType =="Analytic Rule"
    | where Description =="Analytics rule deleted"
    
  • Recherchez l’activité sur les règles, par nom de règle et nom d’activité :

    _SentinelAudit()
    | where SentinelResourceType =="Analytic Rule"
    | summarize Count= count() by RuleName=SentinelResourceName, Activity=Description
    
  • Rechercher l’activité sur des règles, par nom de l’appelant (l’identité qui a effectué l’activité) :

    _SentinelAudit()
    | where SentinelResourceType =="Analytic Rule"
    | extend Caller= tostring(ExtendedProperties.CallerName)
    | summarize Count = count() by Caller, Activity=Description
    

Pour plus d’informations sur les éléments suivants utilisés dans les exemples précédents, consultez la documentation Kusto :

Pour plus d’informations sur KQL, consultez vue d’ensemble de Langage de requête Kusto (KQL).

Autres ressources :

Règles planifiées

Lorsqu’une règle de planification échoue, elle est retentée cinq fois de plus dans la même fenêtre. La règle n’ignore pas la fenêtre et ne rate pas une alerte tant que l’une des six tentatives réussit.

L’échec de l’une des six tentatives indique un retard dans le déclenchement de l’alerte. La requête suivante calcule le délai exact :

_SentinelHealth()
| where SentinelResourceType == @"Analytics Rule" 
| where SentinelResourceKind == "Scheduled"
| extend startTime = todatetime(ExtendedProperties["QueryStartTimeUTC"]), executionStart = todatetime(ExtendedProperties["executionStart"])
| extend delay = datetime_diff('minute', startTime, executionStart)

Pour rechercher les échecs complets (autrement dit, une fenêtre qui a été ignorée), utilisez la requête suivante :

_SentinelHealth()| where SentinelResourceType == @"Analytics Rule" 
| where SentinelResourceKind == "Scheduled"
| where Status != "Success"
| extend startTime = tostring(ExtendedProperties["QueryStartTimeUTC"])
| summarize failuresByStartTime = count() by startTime, SentinelResourceId
| where failuresByStartTime == 6
| summarize count() by SentinelResourceId

Cette requête recherche les exécutions de règles d’analyse planifiées où aucune des six tentatives n’a réussi. Vous pouvez identifier une nouvelle tentative en examinant l’heure de début de la fenêtre de la règle, car les nouvelles tentatives examinent toujours l’heure de début d’origine. Cette requête vous donne la quantité de fenêtres ignorées pour chaque règle analytique. Nous pensons que les fenêtres ignorées seront rares. Si vous voyez que vous avez des règles d’analyse avec des fenêtres ignorées, utilisez les requêtes pour comprendre la raison de l’échec de ces règles spécifiques et le tableau des raisons et des atténuations des défaillances pour les corriger.

Règles NRT

Le mécanisme de nouvelle tentative pour les règles NRT se comporte différemment des règles planifiées. Si une règle ne parvient pas à s’exécuter, le système considère également la fenêtre ayant échoué lors de l’exécution suivante (une minute plus tard). Ce comportement se poursuit jusqu’à 60 échecs (une heure).

Étant donné qu’une défaillance d’une exécution spécifique ne reflète qu’un délai d’une minute, n’examinez pas les défaillances uniques. Utilisez plutôt la requête suivante pour surveiller le délai de chaque règle analytique :

_SentinelHealth()
| where SentinelResourceKind == "NRT"
| extend startTime = todatetime(ExtendedProperties["QueryStartTimeUTC"]), endTime = todatetime(ExtendedProperties["QueryEndTimeUTC"]), alertsCreated = toint(ExtendedProperties["AlertsGeneratedAmount"])
| where alertsCreated == 0 
| extend ruleDelay = datetime_diff('minute', endTime, startTime)
| project TimeGenerated, ruleDelay, SentinelResourceId
| render timechart

Vous pouvez également définir une règle d’analyse pour déclencher des alertes sur des retards importants (par exemple, si une règle NRT a un délai de plus de 10 minutes).

États, erreurs et étapes suggérées

Pour l’exécution de règle d’analyse planifiée ou l’exécution de règles d’analyse NRT, vous pouvez voir l’un des états et descriptions suivants :

  • Réussite : la règle a été exécutée avec succès, générant des <n> alertes.

  • Réussite : la règle s’est exécutée avec succès, mais n’a pas atteint le seuil (<n>) requis pour générer une alerte.

  • Échec : ces descriptions expliquent l’échec des règles et ce que vous pouvez faire à leur sujet.

    Description Assainissement
    Une erreur de serveur interne s’est produite lors de l’exécution de la requête.
    L’exécution de la requête a expiré.
    Une table référencée dans la requête est introuvable. Vérifiez que la source de données appropriée est connectée.
    Une erreur sémantique s’est produite lors de l’exécution de la requête. Essayez de réinitialiser la règle d’analyse en la modifiant et en l’enregistrant (sans modifier les paramètres).
    Une fonction appelée par la requête est nommée avec un mot réservé. Supprimez ou renommez la fonction.
    Une erreur de syntaxe s’est produite lors de l’exécution de la requête. Essayez de réinitialiser la règle d’analyse en la modifiant et en l’enregistrant (sans modifier les paramètres).
    L’espace de travail n’existe pas.
    Cette requête utilise trop de ressources système et n’a pas pu s’exécuter. Passez en revue et réglez la règle d’analyse. Consultez notre vue d’ensemble des Langage de requête Kusto et la documentation sur les meilleures pratiques.
    Une fonction appelée par la requête est introuvable. Vérifiez l’existence dans votre espace de travail de toutes les fonctions appelées par la requête.
    L’espace de travail utilisé dans la requête est introuvable. Vérifiez que tous les espaces de travail de la requête existent.
    Vous ne disposez pas des autorisations nécessaires pour exécuter cette requête. Essayez de réinitialiser la règle d’analyse en la modifiant et en l’enregistrant (sans modifier les paramètres).
    Vous ne disposez pas des autorisations d’accès à une ou plusieurs ressources dans la requête.
    La requête faisait référence à un chemin de stockage introuvable.
    L’accès à un chemin de stockage a été refusé à la requête.
    Plusieurs fonctions portant le même nom sont définies dans cet espace de travail. Supprimez ou renommez la fonction redondante et réinitialisez la règle en la modifiant et en l’enregistrant.
    Cette requête n’a retourné aucun résultat.
    Plusieurs jeux de résultats dans cette requête ne sont pas autorisés.
    Les résultats de la requête contiennent un nombre incohérent de champs par ligne.
    L’exécution de la règle a été retardée en raison de temps d’ingestion de données longs.
    L’exécution de la règle a été retardée en raison de problèmes temporaires.
    L’alerte n’a pas été enrichie en raison de problèmes temporaires.
    L’alerte n’a pas été enrichie en raison de problèmes de mappage d’entités.
    < Nombre> les entités ont été supprimées dans le nom> de l’alerte < en raison de la limite de taille d’alerte de 32 Ko.
    < Nombre> les entités ont été supprimées dans le nom> de l’alerte < en raison de problèmes de mappage d’entités.
    La requête a donné lieu à < un nombre> d’événements, qui dépasse le nombre maximal de résultats autorisés pour < les règles de <>type> de règle avec une configuration de regroupement d’événements d’alerte par ligne. Une alerte par ligne a été générée pour les premiers < événements de limite 1> et une alerte agrégée supplémentaire a été générée pour prendre en compte tous les événements.
    - <number> = nombre d’événements retournés par la requête
    - <limite> = actuellement 150 alertes pour les règles planifiées, 30 pour les règles NRT
    - Type <de> règle = Planifié ou NRT

Utiliser le classeur d’audit et de surveillance de l’intégrité

  1. Pour rendre le classeur disponible dans votre espace de travail, installez la solution de classeur à partir du hub de contenu Microsoft Sentinel :

    1. Dans le portail Microsoft Sentinel, sélectionnez Hub de contenu (préversion) dans le menu Gestion de contenu.

    2. Dans le hub de contenu, entrez Intégrité dans la barre de recherche, puis sélectionnez Analytics Health & Audit parmi les solutions de classeur sous Autonome dans les résultats.

      Capture d’écran de la sélection du classeur d’intégrité analytique à partir du hub de contenu.

    3. Sélectionnez Installer dans le volet d’informations, puis sélectionnez Enregistrer qui apparaît à sa place.

  2. Lorsque la solution indique qu’elle est installée, sélectionnez Classeurs dans le menu Gestion des menaces .

    Capture d’écran montrant que la solution de classeur d’intégrité analytique est installée à partir du hub de contenu.

  3. Dans la galerie Classeurs , sélectionnez l’onglet Modèles , entrez intégrité dans la barre de recherche, puis sélectionnez Analytics Health & Audit parmi les résultats.

    Capture d’écran de la sélection d’un classeur d’intégrité analytique à partir de la galerie de modèles.

  4. Sélectionnez Enregistrer dans le volet d’informations pour créer une copie modifiable et utilisable du classeur. Une fois la copie créée, sélectionnez Afficher le classeur enregistré.

  5. Une fois dans le classeur, sélectionnez d’abord l’abonnement et l’espace de travail que vous souhaitez afficher (ils sont peut-être déjà sélectionnés), puis définissez timeRange pour filtrer les données en fonction de vos besoins. Utilisez le bouton bascule Afficher l’aide pour afficher l’explication sur place du classeur.

    Capture d’écran de l’onglet Vue d’ensemble du classeur d’intégrité des règles d’analyse.

Ce classeur comporte trois sections à onglets :

Onglet Overview

L’onglet Vue d’ensemble affiche les résumés de l’intégrité et de l’audit :

  • Résumés de l’intégrité de la status des exécutions de règles d’analyse dans l’espace de travail sélectionné : nombre d’exécutions, réussites et échecs, et détails des événements d’échec.
  • Résumés d’audit des activités sur les règles d’analyse dans l’espace de travail sélectionné : nombre d’activités au fil du temps, nombre d’activités par type et nombre d’activités de différents types par règle.

Onglet Intégrité

L’onglet Intégrité vous permet d’explorer des événements d’intégrité spécifiques.

Capture d’écran de la sélection de l’onglet Intégrité dans le classeur d’intégrité analytique.

  • Filtrez les données de page entières par status (réussite ou échec) et type de règle (planifié ou NRT).
  • Consultez les tendances des exécutions de règles réussies et ayant échoué (en fonction du filtre status) sur la période sélectionnée. Vous pouvez « brosser le temps » le graphique de tendance pour voir un sous-ensemble de l’intervalle de temps d’origine. Capture d’écran des exécutions de règles d’analyse au fil du temps dans le classeur d’intégrité analytique.
  • Filtrez le reste de la page par raison.
  • Consultez le nombre total d’exécutions pour toutes les règles d’analyse, affichées proportionnellement par status dans un graphique à secteurs.
  • Voici un tableau indiquant le nombre de règles d’analyse uniques exécutées, réparties par type de règle et status.
    • Sélectionnez un status pour filtrer les graphiques restants pour cette status.
    • Effacez le filtre en sélectionnant l’icône « Effacer la sélection » (elle ressemble à une icône « Annuler ») dans le coin supérieur droit du graphique. Capture d’écran du nombre de règles exécutées par status et tapez dans le classeur d’intégrité analytique.
  • Consultez chaque status, avec le nombre de raisons possibles pour cette status. (Seules les raisons représentées dans les exécutions dans la période sélectionnée sont affichées.)
    • Sélectionnez un status pour filtrer les graphiques restants pour cette status.
    • Effacez le filtre en sélectionnant l’icône « Effacer la sélection » (elle ressemble à une icône « Annuler ») dans le coin supérieur droit du graphique. Capture d’écran du nombre de raisons uniques par status dans le classeur d’intégrité analytique.
  • Ensuite, consultez la liste de ces raisons, avec le nombre total d’exécutions de règle combinées et le nombre de règles uniques qui ont été exécutées.
    • Sélectionnez une raison pour filtrer les graphiques suivants pour cette raison.
    • Effacez le filtre en sélectionnant l’icône « Effacer la sélection » (elle ressemble à une icône « Annuler ») dans le coin supérieur droit du graphique. Capture d’écran des exécutions de règles pour une raison unique dans le classeur d’intégrité analytique.
  • Après, il s’agit d’une liste des règles d’analyse uniques exécutées, avec les derniers résultats et courbes de tendance de leur réussite et de leur échec (en fonction de la status sélectionnée pour filtrer la liste).
    • Sélectionnez une règle pour explorer et afficher une nouvelle table avec toutes les exécutions de cette règle (dans la période sélectionnée).
    • Effacez ce tableau en sélectionnant l’icône « Effacer la sélection » (elle ressemble à une icône « Annuler ») dans le coin supérieur droit du graphique. Capture d’écran de la liste des règles uniques exécutées, avec status et courbes de tendance, dans le classeur d’intégrité analytique.
  • Si vous sélectionnez une règle dans la liste, une nouvelle table s’affiche avec les détails d’intégrité de la règle sélectionnée. Capture d’écran de la liste des exécutions de la règle d’analyse sélectionnée, dans le classeur d’intégrité analytique.

Onglet Audit

L’onglet Audit vous permet d’explorer des événements d’audit particuliers.

Capture d’écran de la sélection de l’onglet Audit dans le classeur d’intégrité analytique.

  • Filtrez les données de la page entière par type de règle d’audit (planifié/Fusion).
  • Consultez les tendances de l’activité auditée sur les règles d’analyse sur la période sélectionnée. Vous pouvez « brosser le temps » le graphique de tendance pour voir un sous-ensemble de l’intervalle de temps d’origine. Capture d’écran de l’activité d’audit des tendances dans le classeur d’intégrité analytique.
  • Consultez le nombre d’événements audités, répartis par activité et type de règle.
    • Sélectionnez une activité pour filtrer les graphiques suivants pour cette activité.
    • Effacez le filtre en sélectionnant l’icône « Effacer la sélection » (elle ressemble à une icône « Annuler ») dans le coin supérieur droit du graphique. Capture d’écran du nombre d’événements d’audit par activité et de type dans le classeur d’intégrité analytique.
  • Consultez le nombre d’événements audités par nom de règle.
    • Sélectionnez un nom de règle pour filtrer le tableau suivant pour cette règle, puis pour explorer et afficher une nouvelle table avec toute l’activité sur cette règle (dans la période sélectionnée). (Voir après la capture d’écran suivante.)
    • Effacez le filtre en sélectionnant l’icône « Effacer la sélection » (elle ressemble à une icône « Annuler ») dans le coin supérieur droit du graphique. Capture d’écran des événements audités par nom de règle et appelant dans le classeur d’intégrité analytique.
  • Consultez le nombre d’événements audités par l’appelant (l’identité qui a effectué l’activité).
  • Si vous avez sélectionné un nom de règle dans le graphique précédent, un autre tableau s’affiche montrant les activités auditées sur cette règle. Sélectionnez la valeur qui s’affiche sous forme de lien dans la colonne ExtendedProperties pour ouvrir un panneau latéral affichant les modifications apportées à la règle. Capture d’écran de l’activité d’audit de la règle sélectionnée dans le classeur d’intégrité analytique.

Étapes suivantes