Créer une logique avec le générateur d'expressions
Le générateur d'expressions vous permet d'analyser et de modifier les résultats JSON, afin de les utiliser dans des actions ultérieures. L'outil de création d'expressions génère diverses fonctions de transformation dynamique que vous pouvez chaîner, prévisualiser et tester. Il offre une expérience interactive pour transformer et analyser les résultats bruts des actions.
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 suivants. Pour en savoir plus, consultez 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 d'autres champs qui seront renvoyés lors de l'exécution, il peut saisir le chemin de clé correspondant dans le champ syntaxe.
Fonctions
Les fonctions de canalisation suivantes sont acceptées :
- First (x) : renvoie les X premiers éléments d'un tableau.
Exemple :alerts | First(2)(sialertsest[{"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)(sialertsest[{"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 d'accès spécifié.
Exemple :alerts | Min("score")(sialertscontient une liste d'objets avec un champscore, renvoie l'objet avec le score le plus bas) - Max (KeyPath) : renvoie l'élément ayant la valeur maximale d'un tableau. Si un paramètre keyPath est fourni, il renvoie l'objet avec la valeur maximale au chemin d'accès spécifié.
Exemple :alerts | Max("score")(sialertscontient une liste d'objets avec un champscore, 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 les entrées de chaîne :
=,!=,in,not in. - Pour les entrées de nombre/date :
=,!=,>,>=,<,<=. - Valeur : valeur à vérifier dans la condition.
Exemple :alerts | Filter("severity", "=", "HIGH")(renvoie toutes les alertes dont le champseverityest "HIGH") -
dateFormat ("pattern") : met en forme une chaîne de date. Utilisez le paramètre "pattern" pour décrire le format de votre chaîne de date d'entrée. La fonction standardise la date au format suivant :
YYYY-MM-DD hh:mm:ss.
Exemple :timestamp_field | dateFormat("yyyy/MM/ddTHH:mm:ss")(sitimestamp_fieldest "2024/07/20T10:00:00Z", renvoie "2024-07-20 10:00:00")Jetons de modèle compatibles :
- Année :
yyyy(4 chiffres),yy(2 chiffres),y(1 ou 2 chiffres). - Mois :
MM(01-12),M(1-12),MMMM(nom complet),MMM(abrégé). - Jour :
dd(01-31),d(1-31),dddd(nom complet du jour),ddd(nom abrégé). - Heure :
HH(24 heures, 00-23),H(24 heures, 0-23),hh(12 heures, 01-12),h(12 heures, 1-12). - Minute :
mm(00-59),m(0-59). - Secondes :
ss(00-59),s(0-59). - Fractions de seconde :
fffouFFF. - Fuseau horaire :
zzz(par exemple,-08:00),zz,z. - AM/PM :
tt(AM/PM),t(A/P).
- Année :
-
Count () : renvoie le nombre d'éléments du tableau d'entrée.
Exemple :alerts | Count()(sialertsest un tableau de quatre éléments, renvoie 4) -
OrderBy ("keyPath", "direction") : classe un tableau d'objets en fonction des valeurs d'un chemin de clé spécifié.
Exemple :alerts | OrderBy("score", "DESC")(trie le tableaualertsparscoredans l'ordre décroissant) -
toLower () : convertit une entrée en minuscules.
Exemple :status_field | toLower()(sistatus_fieldest "OPEN", renvoie "open") -
toUpper () : convertit une entrée en caractères majuscules.
Exemple :severity_field | toUpper()(siseverity_fieldest "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")(simessage_fieldest "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 ou une liste d'index spécifiés.
Exemple :alerts | getByIndex("0")(renvoie le premier élément du tableaualerts)
Exemple :alerts | getByIndex("0,2")(renvoie le premier et le troisième élément du tableaualerts) -
split ("délimiteur") : 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, en utilisant 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 ("caractères") : 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)(siscore_fieldest égal à 90, renvoie 95)
Exemple :counter_field | incrementValue()(sicounter_fieldest égal à 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")(sioptional_fieldest vide, renvoie "N/A", sinon renvoie la valeur deoptional_field) -
toUnixtime () : convertit une chaîne de date et heure lisible par l'humain (par exemple, "2014/03/12T13:37:27Z" ou "2014-03-12T13:37:27+01:00") en 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, ou la deuxième si elle est fausse.
Exemple :severity_field | ifThenElse("=", "HIGH", "High Priority", "Normal Priority")(renvoie "Priorité élevée" siseverity_fieldest défini sur "HIGH", sinon renvoie "Priorité normale")
Exemple :score_field | ifThenElse(">", "70", "Above Threshold", "Below Threshold")(renvoie "Au-dessus du seuil" siscore_fieldest défini sur 90, sinon renvoie "En dessous du seuil")score_field
Expression
Le champ "Expression" est l'endroit où vous insérez les résultats JSON avec les fonctions et les pipes 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 de membres de la communauté et de professionnels Google SecOps.