Configurer des champs calculés

Compatible avec :

Ce guide est destiné aux analystes de sécurité et aux responsables de SOC qui souhaitent automatiser l'enrichissement des données dans leurs opérations de sécurité. Il explique comment créer et gérer des champs calculés à l'aide de formules logiques pour dériver de nouvelles valeurs à partir des données d'alertes et de cas existantes. En suivant cette méthode, vous pouvez éliminer la saisie manuelle des données et vous assurer que les métriques critiques sont mises à jour en temps réel. Une fois cette procédure terminée, les capacités analytiques de la plate-forme sont améliorées et le tri des incidents est accéléré grâce au remplissage automatique des champs.

Grâce aux champs calculés, vous pouvez dériver dynamiquement de nouveaux points de données dans les cas et les alertes Google Security Operations. En définissant des formules logiques, vous pouvez calculer des valeurs en fonction de champs système ou personnalisés existants. La valeur calculée est automatiquement évaluée et stockée en temps réel dans un champ personnalisé préexistant sélectionné par l'utilisateur (appelé Champ cible).

Cas d'utilisation courants

Les scénarios suivants représentent les façons les plus fréquentes dont les entreprises utilisent les champs calculés pour améliorer l'efficacité opérationnelle et la clarté des données.

Scoring de risque automatisé

  • Objectif : catégoriser les cas en fonction du volume d'événements ou des niveaux de priorité.
  • Valeur : standardise le tri et permet à l'équipe de voir immédiatement les incidents à haut risque.

Normalisation des données

  • Objectif : signaler les alertes comme Test ou Production en fonction des conventions d'attribution de noms.
  • Valeur : réduit le bruit en permettant aux analystes de filtrer les données de test non critiques de leur vue principale.

Terminologie clé

  • Formule : expression logique basée sur du texte que vous définissez à l'aide de fonctions, d'opérateurs et de références de champ pour calculer une valeur.
  • Champ cible : champ personnalisé existant (de type Texte libre) dans lequel le résultat du calcul de la formule est stocké.
  • Dépendances : champs référencés dans votre formule. Lorsque la valeur d'un champ de dépendance change, le champ calculé est réévalué de manière synchrone.

Avant de commencer

Avant de créer un calcul, assurez-vous que votre environnement répond aux exigences techniques suivantes :

  • Autorisations : vous devez disposer d'un accès administrateur au menu Paramètres et des autorisations nécessaires pour gérer les données de cas.
  • Vérification de l'environnement : assurez-vous que vous disposez de champs personnalisés existants et actifs (de type Texte libre) qui serviront de champs cibles.

Assurez-vous que vous disposez de champs personnalisés existants à utiliser comme champs cibles dans votre système. Si ce n'est pas le cas, procédez comme suit :

  1. Accédez à Paramètres > Données de cas > Champs personnalisés.
  2. Créez un champ personnalisé et définissez le type sur Texte libre.

Pour en savoir plus sur les champs personnalisés, consultez Créer un champ personnalisé.

Contraintes techniques et règles de validation

Avant de définir un calcul, assurez-vous que vos champs cibles et votre logique respectent les contraintes système suivantes. Ces règles régissent la façon dont le moteur Google SecOps valide et conserve les résultats des formules.

Critères de validation des champs

Le moteur de calcul applique strictement les exigences suivantes à tout champ désigné comme champ cible :

  • Type de données : le champ doit être de type Texte libre.
  • État opérationnel : le champ doit être actif ; le système ne peut pas écrire dans des champs supprimés ou invalidés.
  • Mappage des dépendances : pour éviter une logique circulaire, un champ ne peut pas être une cible s'il est déjà une dépendance pour un autre champ calculé.

Définition du champ d'application

Lorsque vous créez un champ personnalisé avec un champ d'application Both, le système génère des entrées uniques pour chaque contexte. Cela vous permet de conserver une logique distincte pour les cas et les alertes au sein de la même catégorie logique.

Dans le menu Champ cible, vous devez sélectionner le champ d'application spécifique correspondant à votre formule :

  • Champ d'application du cas : libellé CaseCustom.YourField (par exemple, CaseCustom.RiskLevel)
  • Champ d'application de l'alerte : libellé AlertCustom.YourField (par exemple, AlertCustom.RiskLevel)

Créer et gérer des champs calculés

Cette section explique comment définir un nouveau calcul et résoudre les problèmes courants lors du processus de configuration.

Créer un calcul

Pour créer un calcul, procédez comme suit :

  1. Accédez à Paramètres > Données de cas > Champs calculés.
  2. Cliquez sur add Ajouter.
  3. Dans le champ Nom du champ calculé, saisissez un nom et une description uniques pour votre calcul.
  4. Dans la zone Champ cible, sélectionnez le champ personnalisé existant dans lequel stocker le résultat.

    1. Échec prévu : le champ sélectionné n'apparaît pas dans le menu.
    2. Mesure corrective : vérifiez que le champ personnalisé est actif, défini sur Texte libre et qu'il n'est pas déjà une dépendance pour un autre calcul.
  5. Dans l'éditeur de texte, créez votre formule à l'aide des fonctions, des opérateurs et de la syntaxe compatibles. Créez une expression logique (par exemple, IF ([case.priority] == "High") THEN "Urgent" ELSE "Standard"). Pour en savoir plus, consultez Langage et syntaxe des formules.

  6. Cliquez sur Enregistrer.

    1. Échec prévu : le système refuse l'enregistrement et affiche une erreur en rouge.
    2. Mesure corrective : recherchez les erreurs de syntaxe, telles que les parenthèses manquantes autour des conditions IF ou les mots clés en minuscules.

Accéder aux assets et aux références avancés

Les formules doivent respecter des règles strictes de grammaire et de sensibilité à la casse pour tous les opérateurs et fonctions intégrés. Utilisez les spécifications techniques suivantes pour vous assurer que vos calculs sont valides.

Exemples de formules

Les modèles suivants montrent comment combiner des fonctions et des opérateurs pour automatiser l'enrichissement des données. Vous pouvez copier et adapter ces extraits pour qu'ils correspondent à vos noms de champs spécifiques et aux exigences de votre organisation.

Exemple 1 : Définir un niveau de risque

Utilisez cette formule pour catégoriser les cas en fonction de mots clés spécifiques trouvés dans le titre du cas.

  • Champ cible : CaseCustom.risk_level (Texte)
  • Objectif : attribuer automatiquement l'état "Élevé" aux incidents urgents
  • Formule :

    IF (CONTAINS([case.name], "urgent")) THEN "High" ELSE "Medium"

Exemple 2 : Signaler les alertes de test

Cette logique identifie et libelle les données de test pour aider les analystes à filtrer leurs vues principales et à se concentrer sur les incidents de production.

  • Champ cible : AlertCustom.is_test (Texte)
  • Objectif : détecter le suffixe -TEST ou la chaîne TEST dans un nom d'alerte
  • Formule :

    IF (CONTAINS([alert.name], "TEST") OR ENDS_WITH([alert.name], "-TEST"))
    THEN "TRUE"
    ELSE "FALSE"
    

Exemple 3 : Combiner des conditions

Cet exemple illustre une logique imbriquée permettant de hiérarchiser les examens en fonction du volume d'événements et des niveaux de priorité existants.

  • Champ cible : CaseCustom.review_status (Texte)
  • Objectif : déclencher un examen manuel uniquement lorsque la longueur du journal est significative et que la priorité n'est pas Low.
  • Formule :

    IF (LENGTH(\[AlertCustom.event\_details\]) \> 100 AND NOT IS(\[case.priority\], "Low"))
    THEN "Needs Review"
    ELSE "Auto-Closed"
    

Langage et syntaxe des formules

Le moteur de calcul est sensible à la casse pour tous les opérateurs, mots clés et fonctions intégrés. Vous devez écrire les mots clés (par exemple, IF, THEN, ELSE, AND, OR, NOT) et les noms de fonctions (par exemple, CONTAINS, LENGTH, STARTS_WITH, ENDS_WITH, IS, IS_NOT, DOES_NOT_CONTAIN) en majuscules. Toutefois, les tests de chaînes de texte dans les fonctions et les opérateurs d'égalité ne sont pas sensibles à la casse. Par exemple, la recherche de "phishing" correspondra à "PHISHING" ou "Phishing".

Types de données et littéraux

Un littéral est une valeur fixe utilisée dans les expressions. Nous vous recommandons de vous assurer que vos opérations et arguments de fonction utilisent des types compatibles.

Type Syntaxe et règles Exemple
STRING Texte entre guillemets doubles. "critical", "N/A"
NUMBER Nombres entiers ou décimaux. 100, 3.14
BOOLEAN Doit être en majuscules. TRUE, FALSE
NULL Représente une valeur vide. NULL

Références de champ

Pour utiliser la valeur d'un autre champ, placez le nom du champ entre crochets, par exemple [object.field_name].

  • Règle de syntaxe : vous devez utiliser un préfixe avec les références de champ. Vous devez utiliser un préfixe (par exemple, case. ou AlertCustom.), suivi d'un point et du nom du champ. Le nom du champ lui-même peut contenir des lettres, des chiffres, des traits de soulignement et des espaces. Par exemple : [case.name], [alert.priority], [AlertCustom.my_custom_field].
  • Vous pouvez utiliser les champs système suivants : case.name, case.stage, case.priority, alert.name, alert.priority, alert.rule_generator.
  • Vous pouvez référencer tous les champs personnalisés définis par l'utilisateur.
  • Une formule de champ calculé ne peut pas référencer un autre champ calculé.

Opérateurs

Utilisez des opérateurs pour les comparaisons et les opérations logiques. Utilisez des parenthèses () pour ignorer la priorité par défaut et regrouper les expressions.

  • Opérateurs de comparaison : ==, !=, >, >=, <, <=
  • Opérateurs logiques : AND, OR, NOT
  • Priorité des opérateurs : NOT, >, >=, <, <=, AND, OR,

Expressions conditionnelles

Le système est compatible avec la logique conditionnelle à l'aide de la syntaxe IF (condition) THEN expression1 ELSE expression2. La partie ELSE est facultative. Si vous l'omettez et que la condition est FALSE, le résultat est défini par défaut sur NULL.

La condition doit être une expression qui renvoie TRUE ou FALSE.

Par exemple, IF ( [CaseCustom.score] > 75 ) THEN "High Risk" ELSE "Low Risk".

Fonctions

Les fonctions sont des opérations prédéfinies qui doivent être entièrement en majuscules. Le tableau suivant répertorie les fonctions compatibles pour la manipulation et l'évaluation des données.

Fonction Description Syntaxe Type renvoyé
CONTAINS(field, substring) Vérifie si un champ de texte contient une sous-chaîne (sans tenir compte de la casse) CONTAINS([case.name], "phishing") BOOLEAN
DOES_NOT_CONTAIN(field, substring) Vérifie si un champ de texte ne contient pas de sous-chaîne (sans tenir compte de la casse) DOES_NOT_CONTAIN([case.name], "test") BOOLEAN
LENGTH(field) Renvoie le nombre de caractères dans un champ LENGTH([case.name]) NUMBER
STARTS_WITH(field, prefix) Vérifie si le champ commence par un préfixe (sans tenir compte de la casse) STARTS_WITH([CaseCustom.hostname], "srv-") BOOLEAN
ENDS_WITH(field, suffix) Vérifie si le champ se termine par un suffixe (sans tenir compte de la casse) ENDS_WITH([AlertCustom.filename], ".exe") BOOLEAN
IS(field, literal) Vérifie si la valeur du champ est égale au littéral (sans tenir compte de la casse) IS([alert.priority], "High") BOOLEAN
IS_NOT(field, literal) Vérifie si la valeur du champ n'est PAS égale au littéral (sans tenir compte de la casse) IS_NOT([alert.priority], "Low") BOOLEAN

Mots clés et identifiants réservés

Le moteur de calcul réserve des mots spécifiques pour les opérations et les fonctions logiques. Vous ne pouvez pas utiliser ces termes comme noms de champs personnalisés ou autres identifiants dans une formule :

  • Logique : AND, OR, NOT, IF, THEN, ELSE
  • Valeurs : NULL, TRUE, FALSE
  • Fonctions : CONTAINS, LENGTH, STARTS_WITH, ENDS_WITH, IS, IS_NOT, DOES_NOT_CONTAIN

Compatibilité des types de données

Pour garantir une évaluation réussie, vérifiez que toutes les opérations et tous les arguments de fonction utilisent des types compatibles. Les types compatibles incluent STRING, NUMBER, BOOLEAN et NULL.

Le résultat final de la formule doit correspondre au type attendu du champ cible. Étant donné que les champs cibles sont limités au "texte libre", votre formule doit finalement être résolue en une chaîne ou une valeur qui peut être implicitement convertie au format de la cible.

Mise en forme et espace blanc

Bien que les espaces, les tabulations et les sauts de ligne soient généralement ignorés entre les jetons, ils sont strictement nécessaires pour séparer les mots clés des identifiants. Utilisez l'espace blanc de manière stratégique pour structurer des formules complexes sur plusieurs lignes afin d'améliorer la maintenabilité et la relecture par les pairs.

Écrire des formules efficaces

Bien que le moteur de calcul soit flexible avec les espaces blancs, respectez ces normes de mise en forme pour éviter les erreurs de logique et simplifier le dépannage.

  • Regroupement explicite : utilisez des parenthèses pour définir clairement l'ordre des opérations, même lorsque vous vous appuyez sur la priorité standard. Cela permet d'éviter toute ambiguïté logique.
  • Structure visuelle : appliquez des espaces autour des opérateurs (==, AND, OR) et insérez des sauts de ligne pour les instructions IF/THEN imbriquées afin de rendre la logique lisible.
  • Validation du type : vérifiez toujours que le résultat final de votre formule correspond au type attendu du champ cible pour éviter les erreurs d'évaluation.

    IF (
        (IS([CaseCustom.event_count], "100") AND NOT IS([case.priority], "Low"))
        OR CONTAINS([case.name], "Critical")
    )
    THEN "Needs Immediate Review"
    ELSE "Standard Review"
    

Dépannage

Cette section décrit les attentes en termes de performances et fournit des solutions en libre-service pour les problèmes de déploiement courants rencontrés lors de la création ou de la gestion de formules.

Latence et limites

Les champs calculés sont évalués de manière synchrone chaque fois qu'un champ de dépendance change. Pour maintenir les performances du système, un champ calculé ne peut pas référencer un autre champ calculé ; le système bloque ces dépendances enchaînées pour éviter la récursivité et les retards de traitement.

Correction des erreurs

Lorsque vous écrivez des formules manuellement, des erreurs peuvent se produire en raison d'une syntaxe ou d'un type de données incorrects. Le tableau suivant vous permet de mapper des codes d'erreur spécifiques liés au parcours à leurs corrections exactes et exploitables.

Type d'erreur Problème Corriger
Syntaxe La formule ne respecte pas les règles de grammaire, par exemple les parenthèses ne correspondent pas ou les mots clés sont en minuscules. Placez toutes les conditions IF entre parenthèses et vérifiez que tous les mots clés sont en majuscules.
Validation La formule fait référence à un champ inconnu (par exemple, [\case.typo]) ou entraîne une incompatibilité de type. Vérifiez les noms de champs entre crochets et assurez-vous que le résultat correspond au type de champ cible.
Évaluation La formule est valide, mais échoue lors de l'exécution, affichant souvent #ERROR!. Recherchez les problèmes d'exécution, par exemple en transmettant une valeur non chaîne à une fonction telle que LENGTH().

Modifier ou supprimer des champs cibles

Le système protège activement les champs sur lesquels vos formules s'appuient pour maintenir l'intégrité des données. Si vous tentez de supprimer ou de modifier un champ personnalisé utilisé comme champ cible, le système bloque l'action et affiche un avertissement indiquant son utilisation active dans un champ calculé.

Validation et test

Après avoir enregistré un nouveau calcul, vérifiez les résultats en accédant à un cas ou à une alerte et en mettant à jour un champ de dépendance. Vérifiez que le champ cible est rempli avec la valeur attendue en temps réel.

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