Ce produit n'est pas pris en charge par le site Datadog que vous avez sélectionné. ().

Infrastructure as Code (IaC) Security détecte les mauvaises configurations IaC. Par défaut, IaC Security analyse les dépôts avec toutes les règles supportées. Vous pouvez personnaliser les règles à exécuter et sur quels chemins, ainsi que leurs gravités et types de règles. Configurez ces paramètres sous la clé iac dans la configuration Code Security, soit dans Datadog, soit dans un fichier code-security.datadog.yaml.

Pour plus d’informations sur les emplacements de configuration, la priorité et la fusion, consultez la Code Security Configuration Reference.

Méthodes de configuration

Vous pouvez configurer IaC Security en utilisant :

  • Datadog ou un fichier code-security.datadog.yaml pour les paramètres de règle, de gravité, de type de règle et de chemin à l’échelle du dépôt. Utilisez cette méthode lorsque vous souhaitez que la même configuration s’applique à l’ensemble d’un dépôt ou d’une organisation.
  • Commentaires en ligne pour les exclusions locales et spécifiques aux fichiers qui doivent rester avec le fichier IaC. Utilisez cette méthode lorsqu’une exception s’applique à une ligne, un bloc ou un fichier spécifique.

Format de configuration

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 schema-version: v1.4, suivi d’une clé iac contenant la configuration de l’analyse.

La structure complète est la suivante :

schema-version: v1.4
iac:
  # Do not run these rules.
  ignore-rules:
    - A
    - B
  # Run only these rules. If this field is set, all other rules are ignored.
  use-rules:
    - A
  global-config:
    # Only analyze the following paths/files.
    only-paths:
      - "path/example"
      - "**/*.file"
    # Do not analyze the following paths/files.
    ignore-paths:
      - "path/example/directory"
      - "**/config.file"
    # Do not report findings with these severities.
    ignore-severities:
      - low
      - info
    # Report only findings with these severities.
    only-severities:
      - high
      - critical
    # Do not report findings with these rule types.
    ignore-categories:
      - "Best Practices"
    # Report only findings with these rule types.
    only-categories:
      - "Encryption"
    # Do not run rules from these platforms.
    ignore-platforms:
      - Dockerfile
    # Only run rules from these platforms.
    only-platforms:
      - Terraform
      - Kubernetes
      - CICD
  # Per-rule configurations.
  rule-configs:
    terraform-aws-s3-bucket-without-encryption:
      ignore-paths:
        - "test/"
      severity: low
    kubernetes-deployment-without-resource-limits:
      only-paths:
        - "k8s/production/"
    cicd-github-unpinned-actions-full-length-commit-sha:
      arguments:
        allow:
          - libbpf/ci/run-qemu

La clé iac prend en charge les champs suivants :

PropriétéTypeDescription
ignore-rulesTableauUne liste d’identifiants de règle à ignorer.
use-rulesTableauUne liste d’identifiants de règle à exécuter. Si spécifié, seules ces règles sont exécutées. ignore-rules a priorité sur use-rules : une règle présente dans les deux tableaux est ignorée.
global-configObjetParamètres globaux pour le scanner IaC.
rule-configsObjetConfigurations par règle. Les clés sont des identifiants de règle.

Configuration de la règle

Pour modifier les règles exécutées :

  • Exécuter uniquement des règles spécifiques : Listez-les sous use-rules
  • Désactiver des règles spécifiques : Listez-les sous ignore-rules
schema-version: v1.4
iac:
  ignore-rules:
    - A
    - B
schema-version: v1.4
iac:
  use-rules:
    - A

Remplacez les espaces réservés tels que A et B par des identifiants de règle Code Security. Les identifiants de règle hérités sont également pris en charge pour la compatibilité ascendante.

Configuration globale

L’objet global-config contrôle les paramètres à l’échelle du dépôt:

PropriétéTypeDescription
only-pathsTableauChemins de fichiers ou modèles glob. Seuls les fichiers correspondants sont analysés.
ignore-pathsTableauChemins de fichiers ou modèles glob à exclure. Les fichiers correspondants ne sont pas analysés.
only-severitiesTableauNiveaux de gravité à signaler. Les résultats ayant d’autres niveaux de gravité ne sont pas signalés.
ignore-severitiesTableauNiveaux de gravité à ignorer.
only-categoriesTableauTypes de règles à signaler. Les résultats ayant d’autres types de règles ne sont pas signalés.
ignore-categoriesTableauTypes de règles à ignorer.
ignore-platformsTableauPlateformes à ignorer. Les règles issues de ces plateformes ne sont pas appliquées.
only-platformsTableauPlateformes à analyser. Les règles provenant d’autres plateformes ne sont pas appliquées.

Gravités

Utilisez ignore-severities pour ignorer les résultats en fonction du niveau de gravité. Utilisez only-severities pour signaler uniquement des niveaux de gravité spécifiques.

Valeurs possibles :

  • critical
  • high
  • medium
  • low
  • info
schema-version: v1.4
iac:
  global-config:
    ignore-severities:
      - info
      - low

Chemins

Utilisez ignore-paths pour exclure des fichiers ou répertoires spécifiques de l’analyse. Utilisez only-paths pour analyser uniquement des fichiers ou répertoires spécifiques. Ces options prennent en charge les modèles glob.

schema-version: v1.4
iac:
  global-config:
    ignore-paths:
      - "path/example/directory"
      - "**/config.file"

Types de règles

Utilisez ignore-categories pour ignorer les résultats avec des types de règles spécifiques. Utilisez only-categories pour signaler uniquement des types de règles spécifiques.

Valeurs possibles :

  • Access Control
  • Availability
  • Backup
  • Best Practices
  • Bill Of Materials
  • Build Process
  • Encryption
  • Insecure Configurations
  • Insecure Defaults
  • Least Privilege
  • Networking and Firewall
  • Observability
  • Resource Management
  • Secret Management
  • Structure and Semantics
  • Supply-Chain
schema-version: v1.4
iac:
  global-config:
    ignore-categories:
      - "Access Control"
      - "Best Practices"

Plateformes

Utilisez ignore-platforms pour ignorer des plateformes spécifiques. Utilisez only-platforms pour limiter l’analyse à des plateformes spécifiques.

Valeurs possibles :

  • Ansible
  • CICD
  • CloudFormation
  • Dockerfile
  • Kubernetes
  • Terraform
schema-version: v1.4
iac:
  global-config:
    only-platforms:
      - Terraform
      - Kubernetes

Configuration par règle

Utilisez rule-configs pour configurer des règles individuelles.

Chaque clé sous rule-configs est un identifiant de règle. Les propriétés suivantes sont prises en charge par règle :

PropriétéTypeDescription
only-pathsTableauChemins de fichiers ou modèles glob. La règle est appliquée uniquement aux fichiers correspondant à ces modèles.
ignore-pathsTableauChemins de fichiers ou modèles glob à exclure. La règle n’est pas appliquée aux fichiers correspondant à ces modèles.
argumentsObjetParamètres spécifiques à la règle qui ajustent le comportement de la règle. Les noms d’arguments et les types de valeurs pris en charge dépendent de la règle.
severityChaîneRemplace la gravité des résultats générés par cette règle. Valeurs acceptées : critical, high, medium, low, info.

Délimitation du chemin par règle

Excluez une règle de certains chemins, ou restreignez-la à des chemins spécifiques :

schema-version: v1.4
iac:
  rule-configs:
    terraform-aws-s3-bucket-without-encryption:
      # Do not apply this rule in test directories.
      ignore-paths:
        - "test/"
        - "**/testdata/"
    kubernetes-deployment-without-resource-limits:
      # Apply this rule only in production manifests.
      only-paths:
        - "k8s/production/"

Les modèles de chemin prennent en charge la syntaxe glob (*, **, ?). Les chemins sont relatifs à la racine du dépôt.

Remplacement de la gravité par règle

Modifiez la gravité des résultats générés par une règle spécifique :

schema-version: v1.4
iac:
  rule-configs:
    terraform-aws-s3-bucket-without-encryption:
      severity: low

Cette gravité s’applique à tous les résultats générés par cette règle.

Arguments par règle

Utilisez arguments pour définir des paramètres pour une règle spécifique. Les noms d’arguments et les types de valeurs pris en charge dépendent de la règle. Définissez les arguments sous l’ID de règle dans rule-configs.

L’exemple suivant configure la règle cicd-github-unpinned-actions-full-length-commit-sha et autorise l’action libbpf/ci/run-qemu :

schema-version: v1.4
iac:
  rule-configs:
    cicd-github-unpinned-actions-full-length-commit-sha:
      arguments:
        allow:
          - libbpf/ci/run-qemu

Configuration héritée

IaC Security utilisait précédemment un fichier de configuration (dd-iac-scan.config) et un schéma différents. Ce schéma est obsolète et ne reçoit plus de mises à jour, mais il est documenté dans le dépôt datadog-iac-scanner.

Un fichier code-security.datadog.yaml avec une section iac prévaut sur dd-iac-scan.config si les deux sont présents.

Configurer des exclusions avec un commentaire en ligne

Pour contrôler quelles parties d’un fichier sont analysées, ajoutez un commentaire contenant dd-iac-scan, suivi d’une commande et de toutes les valeurs requises. Faites précéder dd-iac-scan de la syntaxe de commentaire pour le format de fichier. Les exclusions en ligne ne s’appliquent qu’au sein du fichier où elles sont utilisées.

Commandes prises en charge

CommentaireDescription
dd-iac-scan ignoreIgnore le fichier entier.
dd-iac-scan disable=<rule_id>Ignore des règles spécifiques.
dd-iac-scan enable=<rule_id>Inclut uniquement des règles spécifiques.
dd-iac-scan ignore-lineIgnore une seule ligne.
dd-iac-scan ignore-blockIgnore un bloc entier.

dd-iac-scan ignore

Exclut le fichier entier de l’analyse. Ce commentaire doit être placé au début du fichier pour prendre effet.

# dd-iac-scan ignore

resource "aws_s3_bucket" "example" {
  bucket = "my-tf-test-bucket"
  ...
}
...

dd-iac-scan disable=rule_id

Exclut les résultats d’analyse pour les règles spécifiées dans ce fichier. Ce commentaire doit être placé au début du fichier pour prendre effet.

# dd-iac-scan disable=A,B

resource "aws_s3_bucket" "example" {
  bucket = "my-tf-test-bucket"
  ...
}
...

Les résultats des règles spécifiées sont ignorés pour ce fichier. Les identifiants de règle hérités sont également pris en charge pour la compatibilité ascendante.

dd-iac-scan enable=rule_id

Limite les résultats d’analyse dans ce fichier aux seules règles spécifiées. Ce commentaire doit être placé au début du fichier pour prendre effet.

# dd-iac-scan enable=A

resource "aws_s3_bucket" "example" {
  bucket = "my-tf-test-bucket"
  ...
}
...

Seuls les résultats des règles spécifiées sont inclus dans les résultats d’analyse pour ce fichier. Les identifiants de règle hérités sont également pris en charge pour la compatibilité ascendante.

dd-iac-scan ignore-line

Empêche les résultats d’analyse de signaler la ligne située immédiatement après ce commentaire. Ce commentaire peut être placé n’importe où dans le fichier.

resource "google_storage_bucket" "example" {
  # dd-iac-scan ignore-line
  name          = "image-store.com"
  location      = "EU"
  force_destroy = true
}

Dans l’exemple précédent, les résultats sur la ligne en surbrillance sont ignorés.

dd-iac-scan ignore-block

Empêche les résultats d’analyse de signaler un bloc de ressources entier ainsi que toutes ses paires clé-valeur. Ce commentaire peut être placé n’importe où dans le fichier.

# dd-iac-scan ignore-block
resource "google_storage_bucket" "example" {
  name          = "image-store.com"
  location      = "EU"
  force_destroy = true
}

Dans l’exemple précédent, les résultats sur le bloc en surbrillance sont ignorés.

Pour aller plus loin