Configurer les filtres du tableau de bord

Compatible avec :

Ce document explique comment appliquer des filtres aux champs de source de données pour affiner les données affichées dans les graphiques applicables.

Ajouter un filtre

Pour ajouter un filtre, procédez comme suit :

  1. Sur la page Modifier le tableau de bord, cliquez sur Filtre pour ajouter un filtre.

  2. Dans la fenêtre Gérer les filtres, cliquez sur Ajouter pour ajouter un filtre.

  3. Dans le champ Champ à filtrer, saisissez le champ que vous souhaitez utiliser pour filtrer les données. Pour en savoir plus sur les sources de données et les champs compatibles, consultez Sources de données compatibles.

  4. Dans le champ Nom du filtre, saisissez un nom pour le filtre.

  5. Dans le champ Appliquer à, sélectionnez les graphiques auxquels le filtre doit être appliqué.

  6. Facultatif : Définissez une valeur par défaut pour le filtre.

  7. Cliquez sur OK pour ajouter le filtre et fermer la fenêtre Gérer les filtres.

Limites des filtres de source de données SOAR

Le tableau de bord SOAR de surveillance du workflow SOC par défaut et la source de données SOAR sous-jacente utilisent leur propre champ environment et ne sont pas directement mappés au champ principal.namespace utilisé par les sources de données SIEM.

Par conséquent, un tableau de bord unifié contenant à la fois des widgets SIEM et SOAR ne peut pas être filtré par environnement à l'aide d'un seul filtre global mappé sur principal.namespace. Si vous appliquez un filtre sur principal.namespace, il ne s'appliquera pas aux widgets SOAR. Pour filtrer les deux ensembles de données, vous devrez peut-être définir des filtres distincts ou créer des tableaux de bord personnalisés dans lesquels la logique de filtrage est explicitement définie pour chaque source.

Filtrage avancé

Google Security Operations propose le filtrage avancé dans sa plate-forme de tableau de bord intégrée. Contrairement aux filtres de base, qui sont liés à des champs spécifiques, les filtres avancés fonctionnent comme des variables de requête, également appelées jetons. Cette fonctionnalité permet aux analystes de sécurité d'injecter des valeurs dynamiques, des expressions régulières complexes ou une logique booléenne directement dans les requêtes YARA-L au moment de l'exécution.

Principales fonctionnalités

  • Filtrage flexible : utilisez une seule entrée de filtre (par exemple, $token$) pour filtrer simultanément plusieurs champs dans plusieurs graphiques d'un tableau de bord.
  • Options de menu déroulant dynamique : remplissez les choix de filtres de manière dynamique en utilisant les résultats d'une requête YARA-L distincte. Les utilisateurs sélectionnent ainsi toujours des données à jour.
  • Mise en forme flexible : définissez des préfixes, des suffixes et des délimiteurs personnalisés (par exemple, / pour les expressions régulières ou , pour les clauses IN) afin de mettre en forme les valeurs sélectionnées par l'utilisateur avant de les insérer dans la requête.
  • Valeurs par défaut : configurez des valeurs par défaut pour vous assurer que les tableaux de bord se chargent immédiatement avec des données et pour prendre en charge les rapports programmés automatisés sans interaction de l'utilisateur.
  • Prise en charge de la sélection multiple : permet aux utilisateurs de sélectionner plusieurs valeurs pour un même jeton, séparées par un séparateur défini par l'utilisateur.

Sécurité et autorisations

Le filtrage avancé utilise les autorisations de contrôle des accès basé sur les rôles (RBAC) existantes. Aucune nouvelle autorisation n'est requise. Les autorisations Identity and Access Management (IAM) suivantes sont pertinentes :

Autorisation IAM Objectif
nativeDashboards.update Créez et configurez des filtres avancés dans un tableau de bord.
nativeDashboards.get Affichez les tableaux de bord et utilisez les commandes d'entrée de filtre.
dashboardQueries.execute Exécutez les requêtes résolues finales avec les jetons substitués.

Pour l'application du contrôle RBAC des données, les requêtes utilisées pour remplir les menus déroulants dynamiques sont exécutées dans le contexte de l'utilisateur qui les consulte. Cela permet de s'assurer que les utilisateurs ne voient que les valeurs (telles que des adresses IP spécifiques) auxquelles ils sont autorisés à accéder.

Configurer et utiliser des filtres avancés

Les sections suivantes décrivent en détail la procédure de configuration et d'utilisation des filtres avancés dans les tableaux de bord Google SecOps.

Créer un filtre avancé

Pour créer un filtre avancé, procédez comme suit :

  1. Ouvrez la boîte de dialogue Gérer les filtres dans un tableau de bord.
  2. Sélectionnez , puis Filtre avancé comme Type de filtre.
  3. Saisissez un nom de filtre (libellé) et une variable de jeton (par exemple, token).
    • Contraintes de syntaxe des variables de jeton : le nom de la variable de jeton n'autorise que les caractères alphanumériques et les traits de soulignement (^[a-zA-Z0-9_]+$).
    • Unicité : les noms de jetons doivent être uniques. Les conflits empêchent l'enregistrement du filtre.
  4. Sélectionnez Générer à partir d'une requête (résultats YARA-L dynamiques) ou Saisie manuelle (liste statique).
    1. Lorsque l'option Générer à partir d'une requête est sélectionnée :
      1. Saisissez une requête et définissez une période.
      2. Cliquez sur Exécuter la recherche.
      3. Choisissez une colonne dans le menu déroulant Sélectionner une colonne.
      4. Sélectionnez une valeur dans le menu déroulant Aperçu du filtre.
    2. Si vous sélectionnez Saisie manuelle, saisissez une valeur dans le champ Saisie manuelle, puis cliquez sur Ajouter.
  5. Choisissez un préfixe et un suffixe pour encapsuler les valeurs d'une logique spécifique, comme les expressions régulières.
    • Si le jeton est utilisé dans des délimiteurs d'expression régulière dans la requête YARA-L (par exemple, principal.ip = /$token$/), vous n'avez généralement pas besoin de spécifier de préfixe ni de suffixe.
    • Si le jeton est utilisé sans délimiteurs d'expression régulière, mais est censé fonctionner comme une expression régulière ancrée (par exemple, principal.ip = $token$), définissez Prefix (Préfixe) sur /^ et Suffix (Suffixe) sur $/.
  6. Activez le bouton Autoriser la sélection de plusieurs options pour définir un délimiteur (par exemple, | pour la logique des expressions régulières OR).
  7. Sélectionnez une valeur par défaut dans le menu déroulant.
  8. Cochez ou décochez la case Appliquer le préfixe/suffixe aux valeurs par défaut.
  9. Cliquez sur OK.

Utiliser des jetons dans les requêtes de graphiques

Les créateurs de tableaux de bord doivent insérer manuellement le jeton, entre les symboles $, dans la requête du graphique.

Exemples :

  • principal.hostname = $hostname$
  • re.regex(target.ip, $ip_regex$)

Pour la validation des jetons, une bannière d'avertissement jaune s'affiche si une requête utilise un jeton non défini. Dans ce cas, le système traite le jeton comme une chaîne littérale.

Comportement par défaut au chargement

Les filtres avancés des tableaux de bord Google SecOps fonctionnent exclusivement par substitution de chaînes. Contrairement aux filtres standards, le système n'interprète pas la logique pour vous, mais effectue une opération de recherche et remplacement de votre $token$ par la valeur sélectionnée avant la compilation de la requête. La requête sert de modèle, et l'utilisateur est responsable de la correction syntaxique de la requête finale après substitution des jetons.

Valeurs par défaut et validité des requêtes

Étant donné que le système n'ignore pas automatiquement un jeton si aucune entrée n'est fournie, vous devez définir des valeurs par défaut qui maintiennent une structure de requête valide pour les chargements initiaux et les rapports planifiés.

Voici des exemples de configurations efficaces pour la valeur par défaut :

Cas d'utilisation Contexte de la requête Configuration de la valeur par défaut Logique résultante
Correspondance exacte principal.hostname = $host$ Incorrect : laisser le champ vide entraîne une syntaxe non valide (principal.hostname =). Correct : utilisez un espace réservé qui maintient une syntaxe valide. Exemple avec une valeur par défaut vide : échec, car principal.hostname = n'est pas une expression YARA-L valide.
Correspondance exacte principal.hostname = "$host$" Laisser vide Succès : la valeur est principal.hostname = "", qui ne renvoie aucun résultat, mais est syntaxiquement valide.
Caractère générique (tout afficher) principal.hostname = /.*$host$.*/ .* Succès : renvoie principal.hostname = /.*/, une expression régulière "générique" qui renvoie tous les résultats.
Expression régulière (tout afficher) principal.hostname = $host$ /.*/ Succès : la valeur est principal.hostname = /.*/, qui correspond à tous les noms d'hôte.
Ancre d'expression régulière metadata.product_name = /^$token$$/ .* Succès : la valeur est metadata.product_name = /^.*$/ au chargement, ce qui correspond à tous les produits.
Entiers (tout afficher) principal.host = $token$ 0 or 1=1 Succès : la valeur est principal.host = 0 or 1=1, ce qui renvoie tous les résultats.
Entiers (tout afficher) cast.as_string(principal.host) = $token$ /.*/ Succès : la valeur est cast.as_string(principal.host) = /.*/, qui correspond à toutes les représentations sous forme de chaîne des entiers hôtes.
Jeton à sélection unique avec logique "Tout" par défaut $log = metadata.log_type \n $log = if($log$ = "", metadata.log_type, $log$)\n match: $log Laisser vide (avec le préfixe " et le suffixe ") Réussite : avec une valeur par défaut vide, $log devient "". L'instruction if devient $log = if("" = "", metadata.log_type, ""), qui se simplifie en $log = metadata.log_type. La requête correspond ensuite à tous les types de journaux.
Valeur par défaut spécifique unique $et = metadata.event_type \n $et = $et2$ \n match: $et EMAIL_TRANSACTION (avec le préfixe " et le suffixe ") Succès : la valeur est $et = "EMAIL_TRANSACTION" au chargement, ce qui limite les résultats par défaut à une catégorie d'événement spécifique.
Expression régulière à sélection multiple $log = metadata.log_type \n $log = $logs$ \n match: $log .* (avec le préfixe /, le suffixe / et le délimiteur |) Réussite : la valeur est $log = /.*/ au chargement, ce qui correspond à tous les types de journaux. La sélection de plusieurs valeurs (par exemple, DNS, DHCP) est évaluée à $log = /DNS|DHCP/.
Valeur par défaut "Toujours vrai" (Tout afficher) $et = metadata.event_type \n $et = $et4$ \n match: $et "USER_LOGIN" or 1=1 (avec le délimiteur " or metadata.event_type = " et l'option "Appliquer le préfixe/suffixe aux valeurs par défaut" décochée) Succès : la valeur est $et = "USER_LOGIN" or 1=1 au chargement, ce qui correspond à tous les événements. Si vous sélectionnez des options spécifiques, la chaîne est remplacée par des clauses d'égalité OR explicites.
Injection de clause complète (sélection multiple) $et$ \n $et = metadata.event_type \n match: $et Laisser vide (avec le préfixe metadata.event_type = ", le suffixe ", le délimiteur " or metadata.event_type = " et l'option "Appliquer le préfixe/suffixe aux valeurs par défaut" décochée) Succès : le jeton lui-même injecte le prédicat de champ cible entier. Si vous sélectionnez USER_LOGIN et NETWORK_DNS, metadata.event_type = "USER_LOGIN" or metadata.event_type = "NETWORK_DNS" s'affiche.
Collecteur par défaut d'expression régulière $pet = metadata.product_event_type \n $pet = $pet$ \n match: $pet /.*/ (avec le préfixe ", le suffixe " et l'option "Appliquer le préfixe/suffixe aux valeurs par défaut" décochée) Succès : la valeur est $pet = /.*/ au chargement, ce qui correspond à tous les types d'événements produit. Si vous sélectionnez une valeur spécifique, des guillemets sont appliqués (par exemple, $pet = "USER_LOGIN").

Points à prendre en compte concernant la syntaxe des filtres avancés

Le système n'échappe pas automatiquement les caractères spéciaux (tels que les guillemets ou les barres obliques). Vérifiez toujours que le préfixe, le suffixe et le séparateur que vous avez configurés correspondent à la syntaxe du langage de requête (YARA-L) que vous utilisez.

Spécifications de l'API

Pour obtenir des spécifications détaillées sur l'API, consultez AdvancedFilterConfig.

Gérer le filtre temporel global

Le filtre temporel global s'applique à tous les graphiques, quelle que soit leur source de données.

Pour sélectionner les graphiques auxquels le filtre de période global peut être appliqué, procédez comme suit :

  1. Sur la page Modifier le tableau de bord, cliquez sur Filtre pour ajouter un filtre.

  2. Dans la fenêtre Gérer les filtres, sélectionnez Filtre temporel global dans la liste des filtres.

  3. Cliquez sur le bouton bascule pour vous assurer que le filtre temporel global est activé.

  4. Dans le champ Appliquer à, sélectionnez les graphiques auxquels appliquer le filtre de période global.

  5. Dans le champ Définir les valeurs par défaut, définissez une période pour afficher les données, en utilisant des valeurs absolues ou relatives.

  6. Cliquez sur OK pour activer le filtre et fermer la fenêtre Gérer les filtres.

Appliquer un filtre de tableau de bord

Pour appliquer un filtre, procédez comme suit :

  1. Sur la page Modifier le tableau de bord, cliquez sur Retour > Filtrer pour afficher les filtres du tableau de bord.

  2. Dans la fenêtre Filtres du tableau de bord, sélectionnez le filtre que vous avez créé.

  3. Saisissez une valeur pour le champ sélectionné.

  4. Cliquez sur Appliquer. Les graphiques auxquels le filtre s'applique sont actualisés avec de nouvelles données.

Modifier le filtre temporel global

Lorsque vous ouvrez un tableau de bord, le filtre temporel global est appliqué aux graphiques concernés avec la plage de dates par défaut.

Pour modifier la valeur du filtre temporel global :

  1. Cliquez sur Programmer.

  2. Dans la boîte de dialogue Filtre temporel global, sélectionnez l'opérateur past ou between.

  3. Sélectionnez la période.

  4. Cliquez sur Appliquer. Les graphiques sélectionnés sont mis à jour avec de nouvelles données en fonction du filtre temporel global.

Comprendre l'opérateur "Past" (Précédent)

L'opérateur past calcule une heure de début en fonction de la valeur et de l'unité que vous fournissez. L'heure de fin correspond toujours au moment actuel.

Le calcul de l'heure de début dépend de l'unité :

  • Secondes, minutes, heures : ces unités calculent l'heure de début en soustrayant le nombre exact de secondes, de minutes ou d'heures du code temporel actuel.
  • Jours, semaines, mois, années : ces unités définissent l'heure de début au début de la période actuelle ou précédente (par exemple, le début du jour ou du mois en cours).

Le tableau ci-dessous présente des exemples basés sur le code temporel actuel 13:13 le 2 juillet 2025 :

Valeur Unité Heure de début du filtre
n Secondes 13:13:00 le 2 juillet 2025 moins n secondes
n Minutes 13h13 le 2 juillet 2025 moins n minutes
n Heures 13h13 le 2 juillet 2025 moins n heures
1 Jour 00:00:00 : 2 juillet 2025 (début de la journée en cours)
2 Jours 00:00:00 le 1er juillet 2025 (début de la veille)
1 Semaine 00:00:00 du premier jour de la semaine en cours. Le jour de début de la semaine dépend des paramètres régionaux de votre système.
1 Mois 00:00:00 1er juillet 2025 (début du mois en cours)
2 Mois 00:00:00 le 1er juin 2025 (début du mois précédent)
1 Année 00:00:00 1er janvier 2025 (début de l'année en cours)
2 Années 00:00:00 1er janvier 2024 (début de l'année précédente)

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.