Créer une logique avec le générateur d'expressions

Compatible avec :

Le générateur d'expressions vous permet d'analyser et de modifier les résultats JSON pour les utiliser dans des actions ultérieures. Il génère diverses fonctions de transformation dynamique que vous pouvez enchaîner, prévisualiser et tester, ce qui vous offre une expérience interactive pour transformer et analyser les résultats d’action bruts.

Après avoir sélectionné un espace réservé pour le paramètre dans l'action du playbook, vous pouvez utiliser les résultats JSON. Ces résultats vous fournissent des informations complètes renvoyées par l'action, que vous pouvez utiliser dans les actions et le flux de playbook ultérieurs. Pour en savoir plus, consultez la section Cas d'utilisation du générateur d'expressions.

Afficher le générateur d'expressions

Cet exemple présente des données potentielles et ne reflète pas les résultats en temps réel. Les données réelles peuvent être différentes et contenir plus ou moins de champs. Si un analyste connaît des champs supplémentaires qui seront renvoyés au moment de l'exécution, il peut saisir le chemin de clé correspondant dans le champ syntax (syntaxe).

Fonctions

Les fonctions de canalisation suivantes sont compatibles :

  • First (x) : renvoie les X premiers éléments d'un tableau.
    Exemple : alerts | First(2) (si alerts est [{"id": "A"}, {"id": "B"}, {"id": "C"}], renvoie [{"id": "A"}, {"id": "B"}])
  • Last (x) : renvoie les X derniers éléments d'un tableau.
    Exemple : alerts | Last(1) (si alerts est [{"id": "A"}, {"id": "B"}, {"id": "C"}], renvoie [{"id": "C"}])
  • Min (KeyPath) : renvoie l'élément avec la valeur minimale d'un tableau. Si un paramètre keyPath est fourni, il renvoie l'objet avec la valeur minimale au chemin spécifié.
    Exemple : alerts | Min("score") (si alerts contient une liste d'objets avec un champ score, renvoie l'objet avec le score le plus bas)
  • Max (KeyPath) : renvoie l'élément avec la valeur maximale d'un tableau. Si un paramètre keyPath est fourni, il renvoie l'objet avec la valeur maximale au chemin spécifié.
    Exemple : alerts | Max("score") (si alerts contient une liste d'objets avec un champ score, renvoie l'objet avec le score le plus élevé)
  • Filter (ConditionKey, Operator, Value) : filtre un tableau d'objets et ne renvoie que les objets qui correspondent à une condition sur un champ spécifié.
    • ConditionKey : champ de chaque objet à évaluer par rapport à la condition.
    • Opérateur : opérateur à utiliser pour la condition.
      • Pour une entrée de chaîne : =, !=, in, not in.
      • Pour une entrée de nombre/date : =, !=, >, >=, < , <=.
  • Valeur : valeur à vérifier dans la condition.
    Exemple : alerts | Filter("severity", "=", "HIGH") (renvoie toutes les alertes où le champ severity est "HIGH")
  • DateFormat ("pattern") : met en forme une date selon un modèle donné (le modèle est spécifié en tant que paramètre) au format suivant : YYYY-MM-DDThh:mm:ssZ.
    Exemple : timestamp_field | DateFormat("yyyy/MM/ddTHH:mm:ss") (si timestamp_field est "2024/07/20T10:00:00Z", renvoie "2024-07-20 10:00:00")
  • Count () : renvoie le nombre d'éléments dans le tableau d'entrée.
    Exemple : alerts | Count() (si alerts est un tableau de quatre éléments, renvoie 4)
  • OrderBy ("keyPath", "direction") : trie un tableau d'objets en fonction des valeurs d'un chemin de clé spécifié.
    Exemple : alerts | OrderBy("score", "DESC") (trie le tableau alerts par score dans l'ordre décroissant)
  • toLower () : convertit une entrée en caractères minuscules.
    Exemple : status_field | toLower() (si status_field est "OPEN", renvoie "open")
  • toUpper () : convertit une entrée en caractères majuscules.
    Exemple : severity_field | toUpper() (Si severity_field est "high", renvoie "HIGH")
  • Replace ("x", "y") : remplace une sous-chaîne dans une chaîne par une autre chaîne.
    Exemple : message_field | Replace("World", "Universe") (si message_field est "Hello World", renvoie "Hello Universe")
  • Distinct () : supprime les valeurs en double d'un tableau. Pour les tableaux d'objets, effectue une comparaison approfondie pour identifier les objets en double.
    Exemple : [10, 20, 30, 20, 40] | Distinct() (renvoie [10, 20, 30, 40])
  • getByIndex ("index") : récupère les éléments d'un tableau par un index spécifié ou une liste d'index.
    Exemple : alerts | getByIndex("0") (renvoie le premier élément du tableau alerts)
    Exemple : alerts | getByIndex("0,2") (renvoie les premier et troisième éléments du tableau alerts)
  • split ("delimiter") : divise une chaîne en un tableau de sous-chaînes à l'aide d'un délimiteur spécifié.
    Exemple : "tag1,tag2,tag3" | split(",") (renvoie ["tag1", "tag2", "tag3"])
  • join ("delimiter") : concatène un tableau de chaînes en une seule chaîne à l'aide d'un délimiteur spécifié.
    Exemple : ["malware", "critical"] | join(" & ") (renvoie "malware & critical")
  • trim () : supprime les espaces blancs de début et de fin d'une chaîne.
    Exemple : " hello world " | trim() (renvoie "hello world")
  • trimChars ("characters") : supprime les caractères spécifiés au début et à la fin d'une chaîne. Les espaces blancs de début et de fin sont toujours supprimés, même s'ils ne sont pas explicitement spécifiés.
    Exemple : "--TEST--ABC--" | trimChars("-") (renvoie "TEST--ABC")
  • substring (start, end) : extrait une sous-chaîne d'une chaîne à l'aide d'un index de début spécifié et d'un index de fin facultatif.
    Exemple : "Hello World" | substring(0, 5) (renvoie "Hello")
    Exemple : "Hello World" | substring(6) (renvoie "World")
  • incrementValue (value): augmente une valeur numérique d'un montant spécifié. Si aucun montant n'est spécifié, la valeur est incrémentée de 1.
    Exemple : score_field | incrementValue(5) (si score_field est 90, renvoie 95)
    Exemple : counter_field | incrementValue() (si counter_field est 10, renvoie 11)
  • setIfEmpty ("defaultValue") : renvoie la valeur par défaut fournie si la valeur d'entrée est vide.
    Exemple : optional_field | setIfEmpty("N/A") (si optional_field est vide, renvoie "N/A" ; sinon, renvoie la valeur de optional_field)
  • toUnixtime () : convertit une chaîne de date et d'heure lisible par un humain (par exemple, "2014/03/12T13:37:27Z" ou "2014-03-12T13:37:27+01:00") en un code temporel Unix, exprimé en UTC.
    Exemple : "2024-07-20T10:00:00Z" | toUnixtime() (renvoie 1721469600)
  • ifThenElse ("operator", "comparedValue", "trueResult", "falseResult") : évalue une condition et renvoie la première expression si elle est vraie, sinon renvoie la deuxième expression.
    Exemple : severity_field | ifThenElse("=", "HIGH", "High Priority", "Normal Priority") (si severity_field est "HIGH", renvoie "High Priority" ; sinon, renvoie "Normal Priority")
    Exemple : score_field | ifThenElse(">", "70", "Above Threshold", "Below Threshold") (si score_field est 90, renvoie "Above Threshold" ; si score_field est 60, renvoie "Below Threshold")

Expression:

Le champ "Expression" vous permet d'insérer les résultats JSON avec les fonctions et les canaux pour ajouter plusieurs fonctions et créer l' expression.

Exécuter / Résultats :

Après avoir rempli le générateur d'expressions, cliquez sur Exécuter pour afficher les résultats en fonction des exemples de données JSON affichés dans le générateur d'expressions.

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