Introduction
En 2026, les fuites de secrets dans les dépôts Git représentent 85% des breaches de sécurité selon les rapports OWASP, causant des pertes estimées à des millions par incident. Gitleaks, outil open-source écrit en Go, scanne l'historique Git à la recherche de patterns sensibles comme les clés AWS, tokens JWT ou mots de passe SQL. Contrairement à des outils comme TruffleHog qui se focalisent sur l'entropie, Gitleaks excelle par sa vitesse (millions de commits en secondes) et sa configurabilité via regex custom. Ce tutoriel avancé vous guide de l'installation à l'intégration CI/CD, en passant par des règles personnalisées et baselines pour la remédiation. À la fin, vous automatiserez la détection dans vos pipelines, rendant vos repos impénétrables aux audits de conformité comme SOC2 ou GDPR. Idéal pour les équipes DevSecOps gérant des monorepos complexes.
Prérequis
- Go 1.22+ installé (pour compilation native)
- Git 2.45+ avec un dépôt de test contenant des secrets simulés
- Accès à un repo GitHub pour CI/CD
- Connaissances avancées en regex et YAML/TOML
- Terminal Unix-like (WSL sur Windows)
Installation de Gitleaks
go install github.com/gitleaks/gitleaks/v8@latest
gitleaks version
# Vérification : sortie attendue v8.18.4 ou supérieure
echo $?
# Option binaire statique pour CI/CD
CGO_ENABLED=0 go install -ldflags='-s -w' github.com/gitleaks/gitleaks/v8@latestCe script installe Gitleaks via Go modules, vérifie la version et compile une binaire statique optimisée pour les environnements CI sans dépendances Go. Évitez les proxies Go lents en utilisant directement @latest; la binaire statique réduit la taille de 70% en production.
Premier scan basique
Avant les configs avancées, testez Gitleaks sur un repo avec secrets factices. Créez un dépôt test : git init test-repo && cd test-repo && echo 'AWS_KEY=AKIAIOSFODNN7EXAMPLE' > secret.txt && git add . && git commit -m "add secret".
Scan initial d'un dépôt
cd test-repo
gitleaks detect --source . --verbose --report-format json --report-path leaks.json
cat leaks.json
git log --oneline | head -5Ce scan cible le répertoire courant, génère un rapport JSON détaillé avec empreintes hexadécimales pour remédiation précise. L'option --verbose affiche les règles matchées; utilisez --no-git pour scans non-Git comme S3 buckets.
Configuration TOML custom
title = "Config custom entreprise 2026"
[[rules]]
id = "aws-access-key"
description = "AWS Access Key ID"
regex = '''AKIA[0-9A-Z]{16}'''
entropy = 3.5
keywords = [
"aws_access_key",
"aws_access_key_id"
]
[[rules]]
id = "jwt-token-custom"
description = "JWT Token entreprise"
regex = '''eyJ[^\"]{100,}'''
allowlist = [
"public-jwt-example"
]
[baseline]
path = ".gitleaks-baseline.toml"
[remediation]
commit = trueCette config TOML ajoute une règle AWS standard et une custom pour JWT avec allowlist pour faux positifs. La section baseline ignore les fuites historiques; remediation.commit=true automatise les squashes de secrets via gitleaks protect. Priorisez entropy pour réduire les faux positifs de 40%.
Scan avec configuration custom
Astuce : Placez .gitleaks.toml à la racine du repo. Pour monorepos, utilisez --config-path.
Scan avancé avec baseline
# Générer baseline initiale
gitleaks detect --baseline .gitleaks-baseline.toml --source .
# Scan avec baseline (ignore fuites existantes)
gitleaks detect --baseline .gitleaks-baseline.toml --source . --exit-code 1 --report-path advanced-leaks.sarif
# Protection pré-push
exit 1 # Simule échec CILa baseline capture l'état initial des fuites, permettant des scans incrémentaux sans alerter sur l'historique. --exit-code 1 force l'échec en CI; SARIF intègre avec GitHub CodeQL. Mettez à jour la baseline après remédiation avec gitleaks detect --update.
Hook pré-commit avec Husky
#!/bin/sh
# .husky/pre-commit
gitleaks protect --source . --verbose
# Ou via pre-commit framework
# pip install pre-commit
# echo -e '[hooks]\n - id: gitleaks\n entry: gitleaks protect --staged' > .pre-commit-config.yaml
# pre-commit install
exit 0Ce hook bloque les commits avec secrets en analysant le staging area uniquement (--staged). Intégrez avec Husky pour Node.js ou pre-commit pour multi-langages; ajoutez --redact-log pour masquer secrets dans les logs Git.
Intégration GitHub Actions
Pour CI/CD, embeddez Gitleaks dans workflows GitHub pour scans PR automatisés.
Workflow GitHub Actions
name: Gitleaks Scan
on: [push, pull_request]
jobs:
gitleaks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Gitleaks
run: |
curl -sSfL https://github.com/gitleaks/gitleaks/releases/download/v8.18.4/gitleaks_8.18.4_linux_x64.tar.gz | tar -xzf - gitleaks
sudo mv gitleaks /usr/local/bin/
gitleaks version
- name: Scan
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
config-path: .gitleaks.toml
baseline-path: .gitleaks-baseline.toml
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: gitleaks.sarifCe workflow scanne à chaque push/PR, utilise une release statique pour fiabilité, et upload SARIF pour visualisation GitHub Security tab. fetch-depth: 0 assure historique complet; token auto pour private repos.
Bonnes pratiques
- Règles custom prioritaires : Ajoutez toujours
keywordspour contextualiser regex et réduire faux positifs de 60%. - Baselines en prod : Générez-les post-audit initial, versionnez-les en
.gitleaks-baseline.private.toml(gitignore). - Intégration multi-CI : Utilisez Docker image
ghcr.io/gitleaks/gitleaks:latestpour GitLab/Jenkins. - Redaction logs : Activez
--redactpour masquer secrets dans rapports/Slack notifications. - Monitoring : Pipez JSON vers ELK pour dashboards fuites par repo/équipe.
Erreurs courantes à éviter
- Oubli historique Git : Sans
fetch-depth: 0en CI, seuls les derniers commits sont scannés, manquant 90% des fuites. - Regex trop larges : Sans
entropyoukeywords, faux positifs bloquent devs (ex: UUIDs comme API keys). - Pas de baseline : Scans initiaux échouent massivement sur legacy code; générez-la systématiquement.
- Permissions CI : Token sans
security-events:writeempêche SARIF upload et annotations PR.
Pour aller plus loin
- Docs officielles : Gitleaks GitHub
- Règles communautaires : awesome-gitleaks
- Alternative avancée : Intégrez avec GitGuardian pour S3 scans.
- Formations : Découvrez nos formations DevSecOps Learni pour maîtriser Trivy + Gitleaks en pipelines end-to-end.