Ce produit n'est pas pris en charge par le site Datadog que vous avez sélectionné. ().
Par défaut, l’analyse de code statique (SAST) de Datadog analyse vos dépôts avec les ensembles de règles par défaut de Datadog pour chaque langage de programmation. Vous pouvez personnaliser les ensembles de règles et les règles qui sont exécutés, ainsi que les niveaux de gravité, les chemins et d’autres paramètres. Configurez ces paramètres sous la clé sast dans la configuration Code Security, soit dans Datadog, soit dans un fichier code-security.datadog.yaml.
Par défaut, Datadog active les ensembles de règles par défaut pour les langages de programmation de votre dépôt (use-default-rulesets: true). Pour modifier les ensembles de règles activés :
Ajouter des ensembles de règles : Listez-les sous use-rulesets
Désactiver des ensembles de règles spécifiques : Listez-les sous ignore-rulesets
Désactiver tous les ensembles de règles par défaut : Définissez use-default-rulesets: false, puis listez les ensembles de règles souhaités sous use-rulesets
Le SAST natif par IA utilise la même configuration sast que les autres règles d’analyse de code statique et n’est disponible que pour les analyses hébergées par Datadog. La configuration sast contrôle quels ensembles de règles SAST natifs pour l’IA sont exécutés ; elle n’active pas l’analyse hébergée par Datadog et ne donne pas accès au SAST natif pour l’IA.
Lorsque le SAST natif pour l’IA est activé, ses ensembles de règles par défaut sont exécutés pour les langages pris en charge détectés dans le dépôt. Les noms des ensembles de règles SAST natifs pour l’IA utilisent le format <language>-ai_sast :
Langage
Ensemble de règles
C#
csharp-ai_sast
C++
cpp-ai_sast
Dart
dart-ai_sast
Elixir
elixir-ai_sast
Go
go-ai_sast
Java
java-ai_sast
JavaScript
javascript-ai_sast
Kotlin
kotlin-ai_sast
PHP
php-ai_sast
Python
python-ai_sast
Ruby
ruby-ai_sast
Rust
rust-ai_sast
Swift
swift-ai_sast
TypeScript
typescript-ai_sast
Les identifiants de règle SAST natifs de l’IA utilisent le format datadog/<rule-name> (par exemple, datadog/typescript-promptinjection). Pour cibler une règle SAST spécifique, native de l’IA, dans rule-configs ou dans un commentaire no-dd-sa, utilisez l’identifiant complet de la règle, y compris le préfixe datadog/.
Le paramètre use-default-rulesets s’applique aux ensembles de règles SAST traditionnels et SAST natifs pour l’IA. Si vous définissez use-default-rulesets: false, incluez tous les ensembles de règles SAST traditionnels et natifs pour l’IA que vous souhaitez exécuter. Par exemple, la configuration suivante exécute les ensembles de règles de sécurité Ruby et SAST natifs pour l’IA :
Pour désactiver un ensemble de règles SAST natif pour l’IA spécifique tout en conservant les autres ensembles de règles par défaut, ajoutez-le à ignore-rulesets :
Le format de configuration suivant s’applique à tous les emplacements de configuration : au niveau de l’organisation, au niveau du dépôt et au niveau du dépôt (fichier).
Le fichier de configuration doit commencer par un schema-version pris en charge (v1.0, v1.1, v1.2, v1.3 ou v1.4), suivi d’une clé sast contenant la configuration de l’analyse. Utilisez v1.4 pour toutes les nouvelles configurations. La configuration est structurée comme indiqué ci-dessous :
schema-version:v1.4sast:use-default-rulesets:trueuse-rulesets:- ruleset-nameignore-rulesets:# Always ignore these rulesets (even if it is a default ruleset or listed in `use-rulesets`)- ignored-ruleset-nameruleset-configs:ruleset-name:# Only apply this ruleset to the following paths/filesonly-paths:- "path/example"- "**/*.file"# Do not apply this ruleset in the following paths/filesignore-paths:- "path/example/directory"- "**/config.file"rule-configs:rule-name:# Only apply this rule to the following paths/filesonly-paths:- "path/example"- "**/*.file"# Do not apply this rule to the following paths/filesignore-paths:- "path/example/directory"- "**/config.file"arguments:# Set the rule's argument to value.argument-name:valueseverity:ERRORcategory:CODE_STYLErule-name:arguments:# Set different argument values in different subtreesargument-name:# Set the rule's argument to value_1 by default (root path of the repo)/:value_1# Set the rule's argument to value_2 for specific pathspath/example:value_2global-config:# Only analyze the following paths/filesonly-paths:- "path/example"- "**/*.file"# Do not analyze the following paths/filesignore-paths:- "path/example/directory"- "**/config.file"use-gitignore:trueignore-generated-files:truemax-file-size-kb:200
La clé sast prend en charge les champs suivants :
Propriété
Type
Description
Par défaut
use-default-rulesets
Booléen
Indique s’il faut activer les ensembles de règles par défaut de Datadog.
true
use-rulesets
Tableau
Une liste de noms d’ensembles de règles à activer.
Aucun
ignore-rulesets
Tableau
Une liste de noms d’ensembles de règles à désactiver. Prévaut sur use-rulesets et use-default-rulesets.
Aucun
ruleset-configs
Objet
Une correspondance du nom d’un ensemble de règles à sa configuration.
Aucun
global-config
Objet
Paramètres globaux pour le dépôt.
Aucun
Configuration de l’ensemble de règles
Chaque entrée dans le mappage ruleset-configs configure un ensemble de règles spécifique. Un ensemble de règles n’a pas besoin d’être répertorié dans use-rulesets pour que sa configuration s’applique ; la configuration est utilisée chaque fois que l’ensemble de règles est activé, y compris via use-default-rulesets.
Propriété
Type
Description
Par défaut
only-paths
Tableau
Chemins de fichiers ou modèles glob. Seuls les fichiers correspondant à ces modèles sont traités pour cet ensemble de règles.
Aucun
ignore-paths
Tableau
Chemins de fichiers ou modèles glob à exclure de l’analyse pour cet ensemble de règles.
Aucun
rule-configs
Objet
Une correspondance du nom de la règle à sa configuration.
Aucun
Configuration de la règle
Chaque entrée dans la carte rule-configs d’un ensemble de règles configure une règle spécifique :
Propriété
Type
Description
Par défaut
only-paths
Tableau
Chemins de fichiers ou modèles glob. La règle est appliquée uniquement aux fichiers correspondant à ces modèles.
Aucun
ignore-paths
Tableau
Chemins de fichiers ou modèles glob à exclure. La règle n’est pas appliquée aux fichiers correspondant à ces modèles.
Aucun
arguments
Objet
Paramètres et valeurs pour la règle. Les valeurs peuvent être scalaires ou définies par chemin.
Aucun
severity
Chaîne ou Objet
La sévérité de la règle. Valeurs valides : ERROR, WARNING, NOTICE, NONE. Peut être une valeur unique ou définie par chemin.
Aucun
category
Chaîne
La catégorie de la règle. Valeurs valides : BEST_PRACTICES, CODE_STYLE, ERROR_PRONE, PERFORMANCE, SECURITY.
Aucun
Configuration des arguments et de la sévérité
Les arguments et la sévérité peuvent être définis selon l’un des deux formats suivants :
Valeur unique : S’applique à l’ensemble du dépôt.
arguments:argument-name:valueseverity:ERROR
Mappage par chemin: Valeurs différentes pour différents sous-arbres. Le préfixe de chemin correspondant le plus long s’applique. Utilisez / comme valeur par défaut globale.
La valeur par défaut lorsqu’aucun chemin spécifique ne correspond.
Aucun
specific path
Tout
La valeur pour les fichiers correspondant au chemin ou au motif glob spécifié.
Aucun
Le champ category accepte une seule valeur de chaîne pour l’ensemble du dépôt.
Configuration globale
L’objet global-config contrôle les paramètres à l’échelle du dépôt:
Propriété
Type
Description
Par défaut
only-paths
Tableau
Chemins de fichiers ou modèles glob. Seuls les fichiers correspondants sont analysés.
Aucun
ignore-paths
Tableau
Chemins de fichiers ou modèles glob à exclure. Les fichiers correspondants ne sont pas analysés.
Aucun
use-gitignore
Booléen
Indique s’il faut inclure les entrées du fichier .gitignore dans ignore-paths.
true
ignore-generated-files
Booléen
Indique s’il faut inclure les modèles de fichiers générés courants dans ignore-paths.
true
max-file-size-kb
Nombre
Taille maximale de fichier (en ko) à analyser. Les fichiers plus volumineux sont ignorés.
200
Exemple de configuration :
Comme cet exemple désactive les ensembles de règles par défaut, il inclut explicitement python-ai_sast pour conserver l’analyse SAST native par IA pour Python :
schema-version:v1.4sast:use-default-rulesets:falseuse-rulesets:- python-best-practices- python-security- python-code-style- python-inclusive- python-django- python-ai_sast- custom-python-rulesetruleset-configs:python-code-style:rule-configs:max-function-lines:# Do not apply the rule max-function-lines to the following filesignore-paths:- "src/main/util/process.py"- "src/main/util/datetime.py"arguments:# Set the max-function-lines rule's threshold to 150 linesmax-lines:150# Override this rule's severityseverity:NOTICEmax-class-lines:arguments:# Set different thresholds for the max-class-lines rule in different subtreesmax-lines:# Set the rule's threshold to 200 lines by default (root path of the repo)/:200# Set the rule's threshold to 100 lines in src/main/backendsrc/main/backend:100# Override this rule's severity with different values in different subtreesseverity:# Set the rule's severity to NOTICE by default/:NOTICE# Set the rule's severity to NONE in tests/tests:NONEpython-django:# Only apply the python-django ruleset to the following pathsonly-paths:- "src/main/backend"- "src/main/django"# Do not apply the python-django ruleset in files matching the following patternignore-paths:- "src/main/backend/util/*.py"global-config:# Only analyze source filesonly-paths:- "src/main"- "src/tests"- "**/*.py"# Do not analyze third-party filesignore-paths:- "lib/third_party"
Configuration héritée
L’analyse de code statique (SAST) de Datadog utilisait précédemment un fichier de configuration (static-analysis.datadog.yml) et un schéma différents. Ce schéma est obsolète et ne reçoit plus de nouvelles mises à jour, mais il est documenté dans le dépôt datadog-static-analyzer.
Si les deux fichiers sont présents, code-security.datadog.yaml prévaut sur static-analysis.datadog.yml.
Ignorer les violations
Ignorer pour un dépôt
Ajoutez une configuration de règle dans votre fichier code-security.datadog.yaml. L’exemple suivant ignore la règle javascript-express/reduce-server-fingerprinting pour tous les répertoires.
Ajoutez une configuration de règle dans votre fichier code-security.datadog.yaml. L’exemple suivant ignore la règle javascript-express/reduce-server-fingerprinting pour un fichier spécifique. Pour plus d’informations sur la façon d’ignorer par chemin, consultez Personnalisez votre configuration.
Pour ignorer une instance spécifique d’une violation, commentez no-dd-sa au-dessus de la ligne de code. Les violations supprimées avec no-dd-sa sont affichées comme supprimées, plutôt qu’omises entièrement, afin que vous puissiez les rechercher et les auditer.
Sur la page Dépôts, les violations supprimées apparaissent avec is_suppressed: true. Dans le Vulnerabilities explorer, elles apparaissent avec status: muted et workflow.mute.reason: muted_in_code.
Par exemple, dans l’extrait de code Python suivant, la ligne foo = 1 serait supprimée lors des analyses de code statique.
#no-dd-safoo=1bar=2
Vous pouvez également utiliser no-dd-sa pour supprimer uniquement une règle particulière, plutôt que de supprimer toutes les règles. Pour ce faire, spécifiez le nom de la règle que vous souhaitez désactiver à la place de <rule-name> en utilisant ce modèle :
no-dd-sa:<rule-name>
Par exemple, dans l’extrait de code JavaScript suivant, la ligne my_foo = 1 est supprimée uniquement pour la règle javascript-code-style/assignment-name, mais toutes les autres règles l’analysent toujours.