Référence des nœuds (Pro)

Remarque : Rules Engine 2.0 est une fonctionnalité réservée à DefectDojo Pro.

Rules Engine 2.0 est fourni avec 25 nœuds répartis en quatre catégories. Cette page les documente tous.

Sauf indication contraire, un nœud reçoit une entrée, produit une sortie appelée out, et transmet à cette sortie chaque élément qu’il a reçu. Cela compte lorsque vous enchaînez des nœuds : un nœud de type Constatations modifie la Constatation puis transmet l’élément à la suite, de sorte que plusieurs nœuds enchaînés s’appliquent tous.

Déclencheurs

Chaque graphe possède exactement un déclencheur, et seul un déclencheur peut démarrer une exécution. Les trois déclencheurs produisent des éléments de type Constatation, et tous trois disposent d’une Portée qui restreint les Constatations qu’ils produisent. Voir Créer des règles pour savoir comment fonctionne la portée.

Sur un événement de Constatation

trigger.finding

S’exécute lorsque des Constatations sont créées, mises à jour, clôturées ou rouvertes.

ParamètreValeur par défautRemarques
ÉvénementcreatedLe changement de Constatation qui déclenche cette règle : created, updated, closed, reopened, ou any pour les quatre.
PortéevideLes Constatations que cette règle prend en compte. Vide signifie toutes les Constatations que le propriétaire de la règle peut voir.

Les Constatations désignées par l’événement sont comparées à la portée avant d’entrer dans le graphe : l’événement décide quand, et la portée décide lesquelles.

Sur une planification

trigger.schedule

Balaie toutes les Constatations de la portée selon une planification. Cette planification est configurée sur la règle et se limite à des créneaux au quart d’heure.

ParamètreValeur par défautRemarques
PortéevideLes Constatations que cette règle prend en compte.

Exécution manuelle

trigger.manual

Balaie toutes les Constatations de la portée lorsque vous appuyez sur Run pour la règle.

ParamètreValeur par défautRemarques
PortéevideLes Constatations que cette règle prend en compte.

Logique

Si / Filtre

filter.if

Oriente chaque élément vers la branche true ou la branche false, selon des conditions. C’est le seul nœud à posséder deux sorties, et c’est ainsi qu’un graphe se ramifie.

ParamètreValeur par défautRemarques
ConditionsvideChaque ligne est un chemin, un opérateur et une valeur. Voir Conditions.
CorrespondanceallIndique si toutes les conditions doivent être vérifiées (all), ou une seule d’entre elles (any).

Une liste de conditions vide fait passer tous les éléments par la branche true. Les deux branches sont facultatives : laisser la branche false non connectée se contente d’écarter les éléments qui ont échoué.

Limite

flow.limit

Laisse passer les N premiers éléments et écarte les autres. Utile comme soupape de sécurité pendant que vous testez une règle, et pour plafonner le nombre de tickets ou de messages qu’une seule exécution peut produire.

ParamètreValeur par défautRemarques
Conserver les premiers100Le nombre d’éléments à transmettre.

Dédupliquer au sein de l’exécution

flow.dedupe_batch

Conserve le premier élément par clé et écarte les suivants portant la même clé. Limité à l’exécution en cours, ce nœud déduplique au sein d’une seule exécution et non entre plusieurs exécutions.

ParamètreValeur par défautRemarques
Chemin de la cléfinding.hash_codeLe chemin de l’élément dont la valeur identifie un doublon.

Un usage courant consiste à utiliser finding.component_name, pour notifier une fois par composant affecté plutôt qu’une fois par Constatation.

Constatations

Ces nœuds modifient des Constatations. Chaque modification est attribuée à la règle, à l’exécution et au nœud qui l’a effectuée, et apparaît dans la chronologie de provenance de la Constatation.

Définir la sévérité

finding.set_severity

Définit la sévérité, et recalcule en conséquence la date de SLA et la priorité.

SettingOptions
SévéritéCritical, High, Medium, Low, Info

Définir un champ

finding.set_field

Définit, ajoute à la fin de, ou ajoute au début d’un champ texte.

ParamètreValeur par défautRemarques
ChampaucunL’un des suivants : component_name, component_version, cvssv3, cwe, description, file_path, impact, mitigation, service, title.
Modesetset, append ou prepend. Un vecteur CVSSv3 ne peut être que remplacé.
ValeuraucuneLe texte à écrire. Prend en charge les espaces réservés du type {{finding.title}}.

Définir le statut

finding.set_status

Fait passer la Constatation à un statut.

ParamètreValeur par défautRemarques
Statutaucunactive, inactive, verified, unverified, false_positive, mitigated, reopen.
NotevideUne note facultative enregistrée avec le changement de statut.

Ajouter des étiquettes

finding.add_tags

Ajoute des étiquettes à la Constatation. Les étiquettes existantes sont conservées.

ParamètreRemarques
ÉtiquettesSéparées par des virgules. Prend en charge les espaces réservés du type {{product.name}}, pour pouvoir étiqueter avec des données de la Constatation.

Ajouter une note

finding.add_note

Ajoute une note à la Constatation.

ParamètreRemarques
NoteLe texte de la note. Prend en charge les espaces réservés.

Définir les responsables

finding.set_owners

Rend un groupe responsable de la Constatation.

ParamètreRemarques
GroupeLe groupe responsable de ces Constatations.

Définir les réviseurs

finding.set_reviewers

Soumet la Constatation à la revue des utilisateurs sélectionnés.

ParamètreRemarques
RéviseursUn ou plusieurs utilisateurs devant réviser ces Constatations.

Accepter le risque

finding.risk_accept

Applique une acceptation de risque simple à la Constatation, ou l’ajoute à une fiche d’acceptation du risque.

ParamètreValeur par défautRemarques
Méthodesimplesimple applique une acceptation de risque simple à la Constatation. acceptance l’ajoute à une fiche d’acceptation du risque.
AcceptéactivéAffiché pour simple. Désactivez pour annuler l’acceptation du risque.
Acceptation du risqueaucuneAffiché pour acceptance. La fiche d’acceptation du risque à laquelle ajouter ces Constatations.

Définir la politique d’atténuation

finding.set_mitigation_policy

Définit la politique d’atténuation sous laquelle la Constatation est corrigée.

ParamètreRemarques
Politique d’atténuationLa politique à appliquer.

Modifier la priorité

finding.set_priority

Définit la priorité, ou l’ajuste arithmétiquement. Cela remplace la priorité calculée.

ParamètreValeur par défautRemarques
Opérationsetset, add, subtract, multiply, divide.
ValeuraucuneLa priorité à définir, ou la quantité de l’ajustement.

Définir le risque

finding.set_risk

Définit le risque, en remplaçant celui calculé.

SettingOptions
RisqueLow, Medium, Needs Action, Urgent

Sorties

Les nœuds de sortie sont les nœuds qui quittent DefectDojo. Chacun d’eux enregistre une Livraison avant tout envoi, et chacun d’eux respecte le mode Simulate ou Live de la règle.

Plusieurs d’entre eux proposent le même choix Un message par Constatation. Désactivé, le nœud envoie un seul message décrivant l’ensemble du lot, avec une répartition par sévérité et une liste plafonnée de Constatations. Activé, il envoie un message par Constatation.

Un nœud envoyant un message par Constatation s’arrête par défaut après 1 000 envois au cours d’une même exécution, et enregistre une omission visible indiquant le nombre de Constatations pour lesquelles il n’a pas envoyé de message. Voir Configuration.

Lorsqu’un canal est indisponible

Un nœud de sortie dépend de quelque chose d’extérieur à la règle : un jeton Slack, un webhook Microsoft Teams, une configuration JIRA, un connecteur sous licence. Lorsque cet élément est manquant ou désactivé, le nœud ne peut pas fonctionner, et Rules Engine 2.0 le signale à trois moments différents plutôt que d’échouer silencieusement :

  • Dans la palette, un nœud indisponible est marqué comme tel, avec la raison, avant même que vous ne le glissiez sur le canevas.
  • À l’enregistrement, un graphe contenant un nœud indisponible est refusé. C’est le moment où quelqu’un est présent pour en choisir un autre.
  • À l’exécution, la livraison est omise, sans être mise en échec. Une règle enregistrée alors que Slack était actif ne doit pas se mettre à générer des erreurs le jour où quelqu’un désactive Slack. L’enregistrement honnête est une livraison omise indiquant que Slack est désactivé.

Créer un ticket JIRA

ticket.jira

Crée ou met à jour le ticket JIRA de la Constatation.

ParamètreValeur par défautRemarques
Ignorer les Constatations ayant déjà un ticketactivéLaisse inchangées les Constatations qui ont déjà un ticket JIRA.
Mettre à jour un ticket existantdésactivéAffiché lorsque l’option ci-dessus est désactivée. Pousse les Constatations qui ont déjà un ticket, afin que JIRA soit mis à jour.

Le résumé, la description et la priorité proviennent de la configuration JIRA du produit, et non de ce nœud. Un ticket créé par une règle est donc identique à celui créé par push all issues.

Créer un ticket en aval

ticket.downstream

Crée ou met à jour un ticket via un connecteur en aval.

ParamètreValeur par défautRemarques
Systèmes de ticketsautoauto utilise les systèmes de tickets affectés à l’engagement ou au produit. mapping cible un mappage spécifique.
Mappage de système de ticketsaucunAffiché pour mapping. Le mappage vers lequel pousser.
Opérationcreatecreate un ticket, ou update celui qui existe déjà. Une mise à jour sans ticket existant le crée.
Ignorer les Constatations ayant déjà un ticketactivéLaisse inchangées les Constatations qui ont déjà un ticket dans le mappage cible.

La règle remplace les paramètres de poussée automatique de l’affectation : les filtres de sévérité et « actif uniquement » ne sont pas réappliqués ici. Une Constatation dont le ticket existe déjà est ignorée, quelle que soit la manière dont ce ticket a été créé.

Envoyer un message Slack

notify.slack

Publie dans un canal Slack via un connecteur de messagerie. La connexion porte le jeton du bot ; les paramètres Slack globaux de l’instance, sous System Settings, ne sont pas utilisés et ne servent pas de repli.

ParamètreValeur par défautRemarques
ConnexionaucuneUn connecteur de messagerie de ce type. Obligatoire.
DestinationvideAffiché une fois une connexion choisie. Les champs dépendent du fournisseur de la connexion.
Un message par ConstatationdésactivéDésactivé envoie un seul message pour le lot.
Message{{finding.severity}}: {{finding.title}} ({{product.name}})Généré pour chaque Constatation.
Constatations répertoriées dans la synthèse10Affiché pour les messages groupés. Le nombre de Constatations que le message liste avant d’indiquer combien il y en avait de plus.

Envoyer un message Microsoft Teams

notify.msteams

Publie une carte via un connecteur de messagerie. La connexion porte l’URL du workflow Power Automate ; le webhook Teams global de l’instance, sous System Settings, n’est pas utilisé et ne sert pas de repli.

ParamètreValeur par défautRemarques
ConnexionaucuneUn connecteur de messagerie de ce type. Obligatoire.
DestinationvideAffiché une fois une connexion choisie. Les champs dépendent du fournisseur de la connexion.
Un message par ConstatationdésactivéDésactivé envoie une seule carte pour le lot.
Message{{finding.severity}}: {{finding.title}} ({{product.name}})Généré pour chaque Constatation.
Constatations répertoriées dans la synthèse10Affiché pour les messages groupés.

Envoyer un e-mail

notify.email

Envoie un e-mail à une liste fixe d’adresses via un connecteur de messagerie. Les destinataires correspondent à la destination de la connexion.

ParamètreValeur par défautRemarques
ConnexionaucuneUn connecteur de messagerie de ce type. Obligatoire.
DestinationvideAffiché une fois une connexion choisie. Les champs dépendent du fournisseur de la connexion.

| Objet | [DefectDojo] {{ctx.count}} finding(s) from rule {{ctx.rule_name}} | Généré une fois par message. | | Corps | un corps HTML contenant {{ctx.findings_html}} | HTML. {{ctx.findings_html}} génère la liste des Constatations. | | Un message par Constatation | désactivé | Désactivé envoie un seul e-mail pour le lot. | | Constatations répertoriées dans le corps | 25 | Le nombre de Constatations que {{ctx.findings_html}} liste avant d’indiquer combien il y en avait de plus. |

Appeler un webhook

notify.webhook

Envoie une requête POST JSON vers un point de terminaison webhook.

ParamètreValeur par défautRemarques
Point de terminaison du webhookaucunUn webhook de notification configuré. Son en-tête personnalisé est envoyé avec la requête.
URLvideAffiché lorsqu’aucun point de terminaison n’est sélectionné. Où envoyer le POST.
L’un des deux paramètres ci-dessus est requis.
Secret de signaturevideSigne le corps sous la forme X-DefectDojo-Signature: sha256=HMAC.
Un message par ConstatationdésactivéDésactivé envoie le lot entier en une seule requête.

Deux choses à savoir. Un secret de signature saisi ici est stocké avec la règle ; pour tout élément sensible, préférez donc un point de terminaison configuré avec son propre en-tête. Et un webhook appelé par une règle ne modifie jamais l’état de santé propre de ce point de terminaison, si bien qu’une règle ne peut pas désactiver vos webhooks de notification en échouant.

Les URL en texte libre sont validées à l’enregistrement. Voir Configuration pour savoir ce qui est rejeté et comment autoriser les adresses privées.

Déclencher une alerte intégrée

notify.alert

Crée une alerte intégrée à propos du lot.

ParamètreValeur par défautRemarques
TitreRules Engine 2.0: {{ctx.rule_name}}Généré une fois pour l’ensemble du lot.
Description{{ctx.count}} finding(s) matched the rule {{ctx.rule_name}}.Généré une fois pour l’ensemble du lot.
DestinatairesvideNoms d’utilisateur, séparés par des virgules. Vide alerte les administrateurs.

Les destinataires gardent le contrôle via leur propre paramètre de notification Rules Engine Match, de sorte qu’une alerte ne peut pas contourner les préférences de notification d’un utilisateur.

Générer un rapport

report.generate

Génère un rapport à partir d’un modèle, limité aux Constatations ayant atteint ce nœud, et peut annoncer le lien de téléchargement.

ParamètreValeur par défautRemarques
Modèle de rapportaucunLe modèle à partir duquel générer le rapport. Obligatoire.
Formatpdfpdf ou html.
Constatations inclusesbatch_findingsbatch_findings limite le rapport aux Constatations ayant atteint ce nœud. template_default laisse le modèle utiliser ses propres filtres.
Annoncer viaaucunUn connecteur de messagerie via lequel publier le lien de téléchargement une fois le rapport généré. Laisser vide pour ne pas annoncer.
Annoncer àvideAffiché une fois une connexion choisie. Où cette connexion envoie : un identifiant de canal Slack, des adresses e-mail, etc.
AnnonceReport ready: {{ctx.report_url}}Affiché lors de l’annonce. {{ctx.report_url}} est le lien de téléchargement.

batch_findings représente ce qu’une règle peut faire et qu’un rapport planifié ne peut pas : produire un rapport sur exactement les Constatations qui viennent de correspondre.

L’annonce est enregistrée comme une livraison à part entière, distincte de la génération du rapport, de sorte que vous pouvez voir le rapport réussir et l’annonce échouer indépendamment l’une de l’autre.