Communitygithub.com

audit-sécurité-infrastructure-terraform

Audit de l'infrastructure en tant que code (IaC) Terraform pour détecter les erreurs de configuration de sécurité.

Qu'est-ce que audit-sécurité-infrastructure-terraform ?

Cette compétence permet de scanner et auditer le code Terraform pour identifier les erreurs de configuration de sécurité avant déploiement, en intégrant la sécurité dans le cycle CI/CD. Elle utilise des outils open source comme Checkov, tfsec, Terrascan et OPA pour appliquer des politiques de sécurité prédéfinies et personnalisées. Idéale pour les équipes DevOps, elle fournit des rapports détaillés avec des recommandations de correction et s'intègre avec GitHub Actions, GitLab CI, ou tout autre pipeline CI/CD. La compétence couvre le scan des fichiers Terraform, des plans Terraform, des modules et même de l'état déployé pour identifier les vulnérabilités déjà en production.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/auditing-terraform-infrastructure-for-security

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Audit de l'infrastructure Terraform pour la sécurité

Quand l'utiliser

  • Lors de l'intégration d'un scan de sécurité dans les pipelines CI/CD pour les déploiements Terraform
  • Lors de la révision des plans et modules Terraform pour les bonnes pratiques de sécurité avant application
  • Lors de la mise en place de garde-fous de type "policy-as-code" pour le provisionnement de l'infrastructure cloud
  • Lors de l'audit des fichiers d'état Terraform existants pour identifier les erreurs de configuration déployées
  • Lors de l'application de normes de sécurité organisationnelles sur plusieurs projets Terraform

Ne pas utiliser pour la surveillance de sécurité en runtime (utilisez des outils CSPM), pour les tests de sécurité applicative (utilisez des outils SAST/DAST), ou pour la détection de dérive de configuration cloud (utilisez AWS Config ou Azure Policy après déploiement).

Prérequis

  • Checkov installé (pip install checkov)
  • tfsec installé (brew install tfsec ou binaire depuis GitHub)
  • Terrascan installé (brew install terrascan)
  • Terraform v1.0+ pour la génération de plan
  • OPA (Open Policy Agent) pour l'application de politiques personnalisées
  • Dépôt Git avec du code Terraform à auditer

Workflow

Étape 1 : Scanner le code Terraform avec Checkov

Exécutez Checkov pour un scan complet de sécurité IaC avec des politiques intégrées et personnalisées.

# Scanner un répertoire Terraform
checkov -d ./terraform/ --framework terraform

# Scanner avec des catégories de vérification spécifiques
checkov -d ./terraform/ --check CKV_AWS_18,CKV_AWS_19,CKV_AWS_20,CKV_AWS_21

# Scanner et produire des résultats en JSON
checkov -d ./terraform/ --output json > checkov-results.json

# Scanner un fichier de plan Terraform pour une analyse plus précise
terraform init && terraform plan -out=tfplan
terraform show -json tfplan > tfplan.json
checkov -f tfplan.json --framework terraform_plan

# Ignorer des vérifications spécifiques avec justification
checkov -d ./terraform/ --skip-check CKV_AWS_145 \
  --bc-api-key $BRIDGECREW_API_KEY

# Scanner les modules Terraform
checkov -d ./modules/ --framework terraform --compact

# Lister toutes les vérifications disponibles
checkov --list --framework terraform | grep CKV_AWS

Étape 2 : Scanner avec tfsec pour les problèmes spécifiques à Terraform

Utilisez tfsec pour une analyse de sécurité native Terraform avec des conseils de correction détaillés.

# Scanner un répertoire Terraform
tfsec ./terraform/

# Scanner avec un seuil de sévérité minimum
tfsec ./terraform/ --minimum-severity HIGH

# Sortie en JSON pour le traitement CI/CD
tfsec ./terraform/ --format json > tfsec-results.json

# Scanner avec des vérifications personnalisées
tfsec ./terraform/ --custom-check-dir ./custom-checks/

# Exclure des règles spécifiques
tfsec ./terraform/ --exclude-downloaded-modules \
  --exclude aws-s3-enable-bucket-logging

# Scanner et échouer sur une sévérité spécifique
tfsec ./terraform/ --minimum-severity CRITICAL --soft-fail

# Générer une sortie SARIF pour l'onglet Sécurité GitHub
tfsec ./terraform/ --format sarif > tfsec.sarif

Étape 3 : Exécuter Terrascan pour la conformité multi-cadres

Exécutez Terrascan pour la vérification de conformité par rapport aux benchmarks CIS, NIST et SOC 2.

# Scanner Terraform par rapport au benchmark CIS AWS
terrascan scan -t aws -i terraform -d ./terraform/ \
  --policy-type aws --verbose

# Scanner par rapport à des cadres de conformité spécifiques
terrascan scan -t aws -i terraform -d ./terraform/ \
  --policy-type aws \
  --categories "Compliance Validation"

# Sortie en JSON
terrascan scan -t aws -i terraform -d ./terraform/ \
  --output json > terrascan-results.json

# Scanner un plan Terraform
terrascan scan -t aws -i terraform \
  --iac-file tfplan.json \
  --iac-type tfplan

# Lister les politiques disponibles
terrascan scan --list-policies -t aws

Étape 4 : Créer des politiques OPA personnalisées pour les normes organisationnelles

Écrivez des politiques Rego pour les exigences de sécurité spécifiques à l'organisation.

# policy/aws_s3_encryption.rego
package terraform.aws.s3

denied[msg] {
    resource := input.resource.aws_s3_bucket[name]
    not resource.server_side_encryption_configuration
    msg := sprintf("Le bucket S3 '%s' doit avoir le chiffrement côté serveur activé", [name])
}

# policy/aws_iam_no_wildcards.rego
package terraform.aws.iam

denied[msg] {
    resource := input.resource.aws_iam_policy[name]
    statement := resource.policy.Statement[_]
    statement.Action == "*"
    statement.Effect == "Allow"
    msg := sprintf("La politique IAM '%s' ne doit pas utiliser d'actions génériques (*)", [name])
}

denied[msg] {
    resource := input.resource.aws_iam_policy[name]
    statement := resource.policy.Statement[_]
    statement.Resource == "*"
    statement.Effect == "Allow"
    contains(statement.Action[_], "*")
    msg := sprintf("La politique IAM '%s' a des actions trop permissives sur des ressources génériques", [name])
}

# policy/aws_no_public_ingress.rego
package terraform.aws.security_group

denied[msg] {
    resource := input.resource.aws_security_group_rule[name]
    resource.type == "ingress"
    resource.cidr_blocks[_] == "0.0.0.0/0"
    resource.from_port <= 22
    resource.to_port >= 22
    msg := sprintf("La règle de groupe de sécurité '%s' autorise SSH depuis 0.0.0.0/0", [name])
}
# Évaluer le plan Terraform par rapport aux politiques OPA
terraform show -json tfplan | opa eval \
  --data ./policy/ \
  --input /dev/stdin \
  "data.terraform.aws" \
  --format pretty

# Exécuter Conftest pour faciliter les tests des politiques OPA
conftest test tfplan.json --policy ./policy/ --output json

Étape 5 : Intégrer le scan de sécurité dans le pipeline CI/CD

Ajoutez le scan de sécurité IaC comme une étape obligatoire dans le CI/CD.

# GitHub Actions : Pipeline de sécurité Terraform
name: Scan de sécurité Terraform
on:
  pull_request:
    paths: ['terraform/**']

jobs:
  security-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Configuration Terraform
        uses: hashicorp/setup-terraform@v3

      - name: Init & Plan Terraform
        run: |
          cd terraform/
          terraform init
          terraform plan -out=tfplan
          terraform show -json tfplan > tfplan.json

      - name: Scan Checkov
        uses: bridgecrewio/checkov-action@master
        with:
          directory: terraform/
          framework: terraform
          output_format: sarif
          output_file_path: checkov.sarif
          soft_fail: false

      - name: Scan tfsec
        uses: aquasecurity/[email protected]
        with:
          working_directory: terraform/
          soft_fail: false

      - name: Télécharger SARIF
        uses: github/codeql-action/upload-sarif@v2
        with:
          sarif_file: checkov.sarif

      - name: Vérification des politiques OPA
        run: |
          conftest test terraform/tfplan.json \
            --policy ./policy/ \
            --output json

Étape 6 : Scanner l'état Terraform pour les erreurs de configuration déployées

Auditez l'état Terraform actuel pour identifier les problèmes de sécurité déjà déployés.

# Exporter l'état actuel au format JSON
terraform show -json > terraform-state.json

# Scanner l'état avec Checkov
checkov -f terraform-state.json --framework terraform_plan

# Interroger l'état pour des problèmes de sécurité spécifiques
terraform state list | while read resource; do
  terraform state show "$resource" 2>/dev/null | grep -i "public\|0.0.0.0\|encrypt.*false\|password"
done

# Trouver les ressources sans les tags requis
terraform state list | grep aws_instance | while read resource; do
  tags=$(terraform state show "$resource" | grep -A20 "tags")
  if ! echo "$tags" | grep -q "Environment"; then
    echo "TAG MANQUANT : $resource n'a pas le tag 'Environment'"
  fi
done

Concepts clés

TermeDéfinition
Infrastructure as CodePratique de gestion de l'infrastructure cloud via des fichiers de configuration déclaratifs (Terraform, CloudFormation) plutôt que des opérations manuelles via la console
Policy as CodeExpression des politiques de sécurité et de conformité sous forme de code exécutable (Rego, Python) pouvant être évalué automatiquement par rapport aux définitions de l'infrastructure
Shift Left SecurityDéplacement des contrôles de sécurité en amont dans le cycle de développement en scannant l'IaC avant le déploiement plutôt qu'après le provisionnement
Terraform PlanAperçu des modifications que Terraform va apporter, pouvant être exporté au format JSON pour un scan de sécurité avant d'appliquer les changements
CheckovOutil d'analyse statique open source pour l'IaC prenant en charge Terraform, CloudFormation, Kubernetes et Docker avec plus de 1000 politiques intégrées
OPA/RegoOpen Policy Agent et son langage de politiques Rego pour définir des règles de sécurité personnalisées évaluées par rapport à des entrées de données structurées

Outils et systèmes

  • Checkov : Scanner IaC complet avec plus de 1000 politiques pour Terraform, CloudFormation, Kubernetes, ARM et Dockerfile
  • tfsec : Outil d'analyse statique spécifique à Terraform avec des conseils de correction détaillés et une sortie SARIF
  • Terrascan : Scanner multi-IaC prenant en charge les cadres de conformité (CIS, NIST, SOC 2) avec policy-as-code
  • OPA/Conftest : Moteur de politiques personnalisées pour définir des règles de sécurité spécifiques à l'organisation en utilisant le langage Rego
  • Bridgecrew : Plateforme commerciale basée sur Checkov offrant la détection de dérive et la sécurité de la chaîne d'approvisionnement

Scénarios courants

Scénario : Ajout de garde-fous de sécurité à un pipeline CI/CD Terraform existant

Contexte : Une équipe DevOps déploie son infrastructure via Terraform dans GitHub Actions mais n'a pas de scan de sécurité. Des audits récents montrent plusieurs buckets S3 sans chiffrement et des groupes de sécurité autorisant SSH depuis Internet.

Approche :

  1. Ajouter Checkov comme premier garde-fou de sécurité dans le workflow GitHub Actions
  2. Exécuter checkov -d ./terraform/ pour établir la base de référence des résultats
  3. Trier les résultats existants : corriger les problèmes CRITIQUES, créer des tickets pour les HAUTS, supprimer les risques acceptés
  4. Ajouter tfsec comme scanner secondaire pour les vérifications spécifiques à Terraform
  5. Écrire des politiques OPA personnalisées pour les normes organisationnelles (tags requis, conventions de nommage)
  6. Configurer le pipeline pour bloquer les PR avec des résultats CRITIQUES ou HAUTS
  7. Générer des rapports SARIF pour l'intégration dans l'onglet Sécurité GitHub

Pièges : L'ajout d'un scan de sécurité à un projet existant produira initialement des centaines de résultats. Implémentez progressivement en commençant par le blocage CRITIQUE uniquement, puis en passant à HAUT. Utilisez des commentaires de suppression en ligne (#checkov:skip=CKV_AWS_18:Bucket public pour site web statique) pour les exceptions intentionnelles avec justification documentée.

Format de sortie

Rapport d'audit de sécurité Terraform
========================================
Dépôt : acme-corp/infrastructure
Branche : main
Date du scan : 2026-02-23
Outils : Checkov 3.x, tfsec 1.x, politiques personnalisées OPA

RÉSULTATS DU SCAN :
  Vérifications Checkov réussies :    187
  Vérifications Checkov échouées :     34
  Vérifications tfsec réussies :      156
  Vérifications tfsec échouées :       28
  Politiques OPA personnalisées :       12 réussies, 3 échouées

RÉSULTATS CRITIQUES :
[TF-001] Bucket S3 sans chiffrement
  Fichier : modules/storage/main.tf:24
  Ressource : aws_s3_bucket.data_lake
  Vérification : CKV_AWS_19
  Correction : Ajouter le bloc server_side_encryption_configuration

[TF-002] Groupe de sécurité autorise SSH depuis 0.0.0.0/0
  Fichier : modules/network/security.tf:45
  Ressource : aws_security_group_rule.ssh_access
  Vérification : CKV_AWS_24
  Correction : Restreindre cidr_blocks au sous-réseau bastion

[TF-003] Politique IAM avec actions génériques
  Fichier : modules/iam/policies.tf:12
  Ressource : aws_iam_policy.developer_policy
  Vérification : CKV_AWS_1
  Correction : Limiter les actions aux services spécifiques requis

RÉSUMÉ PAR SÉVÉRITÉ :
  Critique :    6 résultats
  Haute :      14 résultats
  Moyenne :    28 résultats
  Basse :      18 résultats
  Info :       12 résultats

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Skills associés