Configurer les filtres de 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 Edit Dashboard (Modifier le tableau de bord), cliquez sur Filter (Filtrer) pour ajouter un filtre.

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

  3. Dans le champ Field to filter (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 Filter name (Nom du filtre), saisissez un nom pour le filtre.

  5. Dans le champ Apply to (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 Done (OK) pour ajouter le filtre et fermer la fenêtre Manage filters (Gérer les filtres).

Filtrage avancé

Google Security Operations fournit un filtrage avancé au sein de 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 dynamiques : remplissez les choix de filtre de manière dynamique à l'aide des résultats d'une requête YARA-L distincte. Ainsi, les utilisateurs sélectionnent 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 qu'elles ne soient injectées 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 intervention de l'utilisateur.
  • Prise en charge de la sélection multiple : permettez aux utilisateurs de sélectionner plusieurs valeurs pour un seul jeton, jointes par un séparateur défini par l'utilisateur.

Sécurité et autorisations

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

Autorisation IAM Objectif
nativedashboards.update Créer et configurer des filtres avancés dans un tableau de bord.
nativeDashboards.get Afficher les tableaux de bord et utiliser les commandes d'entrée de filtre.
dashboardQueries.execute Exécuter les requêtes finales résolues avec des 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. Ainsi, 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 le processus 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 Manage Filters (Gérer les filtres) dans un tableau de bord.
  2. Sélectionnez puis Advanced Filter (Filtre avancé) comme Filter Type (Type de filtre).
  3. Saisissez un Filter Name (Nom du filtre) (libellé) et une Token Variable (Variable de jeton) (par exemple, token).
    • Contraintes de syntaxe de la variable 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 jeton doivent être uniques. Les conflits empêchent l'enregistrement du filtre.
  4. Sélectionnez Generate from Query (Générer à partir d'une requête) (résultats YARA-L dynamiques) ou Manual Entry (Saisie manuelle) (liste statique).
    1. Lorsque Generate from Query (Générer à partir d'une requête) est sélectionné :
      1. Saisissez une requête et définissez une Time Range (Période).
      2. Cliquez sur Run Search (Exécuter la recherche).
      3. Choisissez une colonne dans le menu déroulant Select Column (Sélectionner une colonne).
      4. Choisissez une valeur dans le menu déroulant Preview Filter Dropdown (Aperçu du menu déroulant du filtre).
    2. Lorsque Manual entry (Saisie manuelle) est sélectionné, saisissez une valeur dans le champ Manual Entry (Saisie manuelle), puis cliquez sur Add (Ajouter).
  5. Choisissez un Prefix (Préfixe) et un Suffix (Suffixe) pour encapsuler les valeurs d'une logique spécifique, telle que 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 Prefix (Préfixe) ni de Suffix (Suffixe).
    • Si le jeton est utilisé sans délimiteurs d'expression régulière, mais qu'il est destiné à fonctionner comme une expression régulière ancrée (par exemple, principal.ip = $token$), définissez le Prefix (Préfixe) sur /^ et le Suffix (Suffixe) sur $/.
  6. Activez le bouton Allow Selection of Multiple Options (Autoriser la sélection de plusieurs options) pour définir un Delimiter (Délimiteur) (par exemple, | pour la logique OR des expressions régulières).
  7. Sélectionnez une Default Value (Valeur par défaut) dans le menu déroulant.
  8. Cochez ou décochez la case Apply Prefix/Suffix for Default Value(s) (Appliquer le préfixe/suffixe aux valeurs par défaut).
  9. Cliquez sur Done (OK).

Utiliser des jetons dans les requêtes de graphique

Les créateurs de tableaux de bord doivent insérer manuellement le jeton, encapsulé dans des 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 lors du 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 recherche et un remplacement de votre $token$ par la valeur sélectionnée avant la compilation de la requête. La requête fait office de modèle, et l'utilisateur est responsable de s'assurer que la requête finale substituée par un jeton est syntaxiquement correcte.

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 programmés.

Voici des exemples de configurations efficaces de 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 un code YARA-L valide.
Correspondance exacte principal.hostname = "$host$" Laisser le champ vide Réussite : la valeur est principal.hostname = "", ce qui ne renvoie aucun résultat, mais est syntaxiquement valide.
Caractère générique (tout afficher) principal.hostname = /.*$host$.*/ .* Réussite : la valeur est principal.hostname = /.*/, une expression régulière "catch-all" qui renvoie tous les résultats.
Expression régulière (tout afficher) principal.hostname = $host$ /.*/ Réussite : la valeur est principal.hostname = /.*/, qui correspond à tous les noms d'hôte.
Ancre d'expression régulière metadata.product_name = /^$token$$/ .* Réussite : la valeur est metadata.product_name = /^.*$/ au chargement, ce qui correspond à tous les produits.
Entiers (tout afficher) principal.host = $token$ 0 or 1=1 Réussite : 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$ /.*/ Réussite : la valeur est cast.as_string(principal.host) = /.*/, ce qui correspond à toutes les représentations de chaînes d'entiers d'hôte.
Jeton à sélection unique avec logique par défaut $log = metadata.log_type \n $log = if($log$ = "", metadata.log_type, $log$)\n match: $log Laisser le champ vide (avec le préfixe ", le suffixe ") Réussite : avec une valeur par défaut vide, $log devient "". L'instruction if devient $log = if("" = "", metadata.log_type, ""), ce qui se simplifie en $log = metadata.log_type. La requête correspond alors à 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 ", le suffixe ") Réussite : la valeur est $et = "EMAIL_TRANSACTION" au chargement, ce qui limite les résultats par défaut à une catégorie d’événements 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 /, 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) correspond à $log = /DNS|DHCP/.
Valeur par défaut toujours vraie (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 = ", Appliquer le préfixe/suffixe aux valeurs par défaut : décoché) Réussite : la valeur est $et = "USER_LOGIN" or 1=1 au chargement, ce qui correspond à tous les événements. La sélection d'options spécifiques remplace la chaîne 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 le champ vide (avec le préfixe metadata.event_type = ", le suffixe ", le délimiteur " or metadata.event_type = ", Appliquer le préfixe/suffixe aux valeurs par défaut : décoché) Réussite : le jeton lui-même injecte l'intégralité du prédicat de champ cible. La sélection de USER_LOGIN et NETWORK_DNS s'étend à metadata.event_type = "USER_LOGIN" or metadata.event_type = "NETWORK_DNS".
Expression régulière par défaut $pet = metadata.product_event_type \n $pet = $pet$ \n match: $pet /.*/ (avec le préfixe ", le suffixe ", Appliquer le préfixe/suffixe aux valeurs par défaut : décoché) Réussite : la valeur est $pet = /.*/ au chargement, ce qui correspond à tous les types d'événements de produit. La sélection d'une valeur spécifique applique des guillemets (par exemple, $pet = "USER_LOGIN").

Considérations sur la syntaxe des filtres avancés

Le système n'effectue pas d'échappement automatique pour 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 sont conformes à la syntaxe du langage de requête (YARA-L) que vous utilisez.

Spécifications de l'API

Pour obtenir des spécifications d'API détaillées, 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 temporel global peut être appliqué, procédez comme suit :

  1. Sur la page Edit Dashboard (Modifier le tableau de bord), cliquez sur Filter (Filtrer) pour ajouter un filtre.

  2. Dans la fenêtre Manage filters (Gérer les filtres), sélectionnez Global time filter (Filtre temporel global) dans la liste des filtres.

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

  4. Dans le champ Apply to (Appliquer à), sélectionnez les graphiques auxquels appliquer le filtre temporel global.

  5. Dans le champ Set default values (Définir les valeurs par défaut), définissez une période pour afficher les données à l'aide de valeurs absolues ou relatives.

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

Appliquer un filtre de tableau de bord

Pour appliquer un filtre, procédez comme suit :

  1. Sur la page Edit Dashboard (Modifier le tableau de bord), cliquez sur Back (Retour) > Filter (Filtrer) pour afficher les filtres du tableau de bord.

  2. Dans la fenêtre Dashboard filters (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 Apply (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 période par défaut.

Pour modifier la valeur du filtre temporel global, procédez comme suit :

  1. Cliquez sur Schedule (Planifier).

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

  3. Sélectionnez la période.

  4. Cliquez sur Apply (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"

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 est toujours le 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 de l'horodatage actuel.
  • Jours, semaines, mois, années : ces unités ajustent 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 suivant présente des exemples basés sur un horodatage actuel de 13h13 le 2 juillet 2025 :

Valeur Unité Heure de début du filtre
n Secondes 2 juillet 2025 à 13h13:00 moins n secondes
n Minutes 2 juillet 2025 à 13h13:00 moins n minutes
n Heures 2 juillet 2025 à 13h13:00 moins n heures
1 Jour 2 juillet 2025 à 00h00:00 (début du jour en cours)
2 Jours 1er juillet 2025 à 00h00:00 (début du jour précédent)
1 Semaine 00h00: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 1er juillet 2025 à 00h00:00 (début du mois en cours)
2 Mois 1er juin 2025 à 00h00:00 (début du mois précédent)
1 Année 1er janvier 2025 à 00h00:00 (début de l'année en cours)
2 Années 1er janvier 2024 à 00h00:00 (début de l'année précédente)

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