Vue d’ensemble
Les fuites de secrets dans les pipelines CI/CD sont la cause numéro un de compromission des pipelines. Les identifiants exposés — clés API, mots de passe de bases de données, jetons d’accès cloud — offrent aux attaquants un accès direct aux systèmes de production. Selon le rapport 2025 State of Secrets Sprawl de GitGuardian, plus de 12 millions de nouveaux secrets ont été détectés dans les commits publics GitHub en une seule année.
Le problème n’est pas que les développeurs sont négligents. C’est que la livraison logicielle moderne implique des dizaines de fichiers de configuration, de variables d’environnement et de points d’intégration où les secrets peuvent accidentellement se retrouver dans le contrôle de version. Une seule clé AWS divulguée peut coûter à une organisation des dizaines de milliers de dollars en quelques minutes.
Ce lab pratique vous guide dans la mise en place d’une stratégie de détection de secrets multi-couches couvrant trois points de contrôle critiques :
- Analyse pre-commit — Intercepter les secrets avant qu’ils n’atteignent le dépôt.
- Analyse dans le pipeline — Bloquer les pull requests et les push contenant des secrets.
- Analyse post-commit et à l’exécution — Détecter les secrets qui passent entre les mailles du filet et déclencher la remédiation.
À la fin de ce lab, vous disposerez d’une configuration de défense en profondeur fonctionnelle utilisant gitleaks, truffleHog, GitHub secret scanning et des règles de détection personnalisées.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
- Git 2.30+ installé et configuré.
- Python 3.8+ avec
pipdisponible. - Docker (optionnel, mais recommandé pour l’analyse conteneurisée).
- Un compte GitHub avec accès pour créer des dépôts (requis pour l’exercice GitHub secret scanning).
- Un terminal (macOS, Linux ou WSL sous Windows).
Aucun vrai secret ni compte cloud n’est nécessaire. Nous utiliserons des secrets de test intentionnellement plantés tout au long de ce lab.
Mise en Place de l’Environnement
Étape 1 : Créer un Dépôt de Test
Commencez par créer un dépôt Git vierge que nous utiliserons pour tous les exercices :
mkdir secret-leak-lab && cd secret-leak-lab
git init
echo "# Secret Leak Detection Lab" > README.md
git add README.md
git commit -m "Initial commit"
Étape 2 : Planter des Secrets de Test Intentionnels
Nous avons besoin de secrets réalistes (mais faux) à différents emplacements pour simuler un scénario réel. Créez les fichiers suivants :
Un fichier .env avec des identifiants de base de données :
cat > .env <<'EOF'
DB_HOST=localhost
DB_PORT=5432
DB_USER=admin
DB_PASSWORD=SuperSecret123!
DB_NAME=production_db
SECRET_KEY=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
EOF
Un script Python avec une clé AWS codée en dur :
cat > deploy.py <<'EOF'
import boto3
# WARNING: These are intentionally fake credentials for testing
AWS_ACCESS_KEY_ID = "AKIAIOSFODNN7EXAMPLE"
AWS_SECRET_ACCESS_KEY = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
def deploy_to_s3(bucket, file_path):
s3 = boto3.client(
's3',
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY
)
s3.upload_file(file_path, bucket, file_path)
print(f"Deployed {file_path} to s3://{bucket}")
if __name__ == "__main__":
deploy_to_s3("my-app-bucket", "dist/app.zip")
EOF
Un fichier YAML de configuration avec une chaîne de connexion à la base de données :
cat > config.yml <<'EOF'
app:
name: my-application
environment: production
database:
url: "postgresql://admin:SuperSecret123!@db.example.com:5432/prod"
pool_size: 10
redis:
url: "redis://:MyRedisPassword@cache.example.com:6379/0"
EOF
Un Dockerfile avec une clé API dans une instruction ENV :
cat > Dockerfile <<'EOF'
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
# WARNING: Never do this in production
ENV API_KEY=sk-proj-abc123def456ghi789jkl012mno345pqr678stu901vwx234
ENV STRIPE_SECRET_KEY=sk_live_4eC39HqLyjWDarjtT1zdp7dc
COPY . .
CMD ["python", "app.py"]
EOF
Étape 3 : Vérifier l’État Initial
À ce stade, rien n’empêche ces secrets d’être commités :
git add -A
git status
Git met en staging tout sans problème, secrets inclus. Il n’y a pas de hooks, pas d’analyse, pas de garde-fous. C’est l’état dans lequel se trouvent la plupart des dépôts au départ. Notre objectif est de changer cela.
# Reset staging so we can test scanning before committing
git reset HEAD
Exercice 1 : Analyse Pre-commit avec gitleaks
Gitleaks est un outil open-source conçu pour détecter les secrets codés en dur dans les dépôts Git. Il prend en charge l’analyse du répertoire de travail, de l’historique des commits et peut s’exécuter comme hook pre-commit pour bloquer les secrets avant qu’ils ne soient commités.
Installer gitleaks
Choisissez votre méthode d’installation préférée :
# macOS (Homebrew)
brew install gitleaks
# Docker
docker pull zricethezav/gitleaks:latest
# Go (from source)
go install github.com/gitleaks/gitleaks/v8@latest
Vérifiez l’installation :
gitleaks version
Exécuter gitleaks Manuellement
Analysez le répertoire de travail à la recherche de secrets :
gitleaks detect --source . -v
Vous devriez voir une sortie similaire à la suivante :
Finding: AWS_ACCESS_KEY_ID = "AKIAIOSFODNN7EXAMPLE"
Secret: AKIAIOSFODNN7EXAMPLE
RuleID: aws-access-key-id
Entropy: 3.52
File: deploy.py
Line: 4
Finding: AWS_SECRET_ACCESS_KEY = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
Secret: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
RuleID: aws-secret-access-key
Entropy: 4.71
File: deploy.py
Line: 5
Finding: DB_PASSWORD=SuperSecret123!
Secret: SuperSecret123!
RuleID: generic-credential
Entropy: 3.40
File: .env
Line: 4
Finding: STRIPE_SECRET_KEY=sk_live_4eC39HqLyjWDarjtT1zdp7dc
Secret: sk_live_4eC39HqLyjWDarjtT1zdp7dc
RuleID: stripe-secret-key
Entropy: 4.20
File: Dockerfile
Line: 9
12:14PM INF 6 commits scanned.
12:14PM WRN leaks found: 6
Gitleaks identifie correctement les clés AWS, les identifiants génériques, les clés Stripe, et plus encore. Chaque résultat inclut le fichier, le numéro de ligne et la règle de détection qui s’est déclenchée.
Configurer gitleaks comme Hook Pre-commit
Le framework pre-commit facilite l’exécution automatique de gitleaks avant chaque commit. Installez d’abord pre-commit :
pip install pre-commit
Créez un fichier .pre-commit-config.yaml à la racine de votre dépôt :
repos:
- repo: https://github.com/gitleaks/gitleaks
rev: v8.21.2
hooks:
- id: gitleaks
Installez le hook :
pre-commit install
Tester le Hook : Commiter un Secret (Bloqué)
git add deploy.py
git commit -m "Add deployment script"
Le commit est bloqué :
Detect hardcoded secrets.................................................Failed
- hook id: gitleaks
- exit code: 1
12:15PM WRN leaks found: 2
Le hook pre-commit arrête complètement le commit. Le secret n’entre jamais dans l’historique Git.
Tester le Hook : Commiter du Code Propre (Réussi)
Créez un fichier sans secrets :
cat > utils.py <<'EOF'
def format_date(date_obj):
return date_obj.strftime("%Y-%m-%d")
def sanitize_input(user_input):
return user_input.strip().replace("<", "<").replace(">", ">")
EOF
git add utils.py
git commit -m "Add utility functions"
Sortie :
Detect hardcoded secrets.................................................Passed
[main abc1234] Add utility functions
1 file changed, 5 insertions(+)
Le code propre passe sans problème.
Exercice 2 : Analyse dans le Pipeline avec gitleaks dans GitHub Actions
Les hooks pre-commit sont une première couche solide, mais ils s’exécutent localement et peuvent être contournés. L’analyse dans le pipeline ajoute une couche d’application côté serveur qui ne peut pas être ignorée.
Créer le Workflow GitHub Actions
Créez le fichier .github/workflows/secret-scan.yml avec le contenu suivant :
name: Secret Scanning
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
gitleaks:
name: Detect Secrets with gitleaks
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run gitleaks
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }}
Le paramètre fetch-depth: 0 est critique — il garantit que l’historique Git complet est disponible afin que gitleaks puisse analyser tous les commits, et pas seulement le dernier.
Comment Cela Fonctionne en Pratique
Scénario A : Une PR avec un secret divulgué. Un développeur ajoute accidentellement une clé API dans un fichier de configuration et ouvre une pull request. L’action gitleaks analyse le diff, détecte le secret et marque la vérification comme échouée. La PR ne peut pas être fusionnée tant que le secret n’est pas supprimé.
Scénario B : Une PR propre. Un développeur ouvre une PR avec de la logique applicative et aucun secret. L’action gitleaks analyse le diff, ne trouve rien et marque la vérification comme réussie. La PR peut passer à la revue de code et être fusionnée.
Pour appliquer cette règle, accédez à Settings → Branches → Branch protection rules de votre dépôt et ajoutez gitleaks comme vérification de statut requise pour la branche main. Cela empêche quiconque de fusionner une PR qui échoue à l’analyse de secrets.
Exercice 3 : Analyse dans le Pipeline avec truffleHog
TruffleHog adopte une approche différente de la détection de secrets. En plus de la correspondance de motifs, il peut vérifier si les secrets détectés sont réellement actifs en les testant contre l’API du service correspondant.
Installer truffleHog
# pip
pip install trufflehog
# Docker
docker pull trufflesecurity/trufflehog:latest
# Homebrew
brew install trufflehog
Exécuter truffleHog sur le Dépôt de Test
# Scan the local repo
trufflehog git file://. --only-verified
Le flag --only-verified indique à truffleHog de ne signaler que les secrets qu’il a confirmés comme actifs. Cela réduit considérablement les faux positifs. Si vous souhaitez voir tous les résultats, y compris les non vérifiés, omettez le flag :
# Show all findings (verified and unverified)
trufflehog git file://.
Vérifié vs. Non vérifié : Un secret vérifié est un secret que truffleHog a testé contre l’API du fournisseur et confirmé comme actif. Par exemple, il tentera de s’authentifier avec une clé AWS pour voir si elle fonctionne. Un secret non vérifié correspond à un motif connu mais n’a pas été confirmé comme actif — il peut s’agir d’une clé révoquée, d’un placeholder ou d’un faux positif.
Créer un Job de Pipeline GitLab CI
TruffleHog s’intègre bien dans GitLab CI. Ajoutez ce qui suit à votre .gitlab-ci.yml :
stages:
- security
secret-scan:
stage: security
image:
name: trufflesecurity/trufflehog:latest
entrypoint: [""]
script:
- trufflehog git file://. --fail --json > trufflehog-results.json
artifacts:
when: always
paths:
- trufflehog-results.json
expire_in: 30 days
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_BRANCH == "main"'
Le flag --fail fait en sorte que truffleHog termine avec un code de sortie non nul si des secrets sont trouvés, ce qui fait échouer le pipeline. Le flag --json produit des résultats structurés qui peuvent être analysés par d’autres outils ou tableaux de bord.
gitleaks vs. truffleHog : Quand Utiliser Lequel
| Fonctionnalité | gitleaks | truffleHog |
|---|---|---|
| Méthode de détection | Regex + entropie | Regex + entropie + vérification |
| Vérification des secrets | Non | Oui (teste si le secret est actif) |
| Rapidité | Très rapide | Plus lent (en raison de la vérification) |
| Taux de faux positifs | Modéré | Faible (avec –only-verified) |
| Règles personnalisées | Oui (.gitleaks.toml) | Oui (détecteurs personnalisés) |
| Support pre-commit | Natif | Via script wrapper |
| Idéal pour | Vérifications rapides pre-commit et PR | Analyses approfondies et vérification |
Recommandation : Utilisez gitleaks pour les hooks pre-commit rapides et les vérifications de PR. Utilisez truffleHog pour les analyses approfondies périodiques et lorsque vous avez besoin de résultats vérifiés pour prioriser la remédiation.
Exercice 4 : GitHub Secret Scanning et Push Protection
GitHub propose une analyse de secrets intégrée qui fonctionne au niveau de la plateforme. Contrairement à gitleaks et truffleHog, que vous installez et configurez vous-même, GitHub secret scanning est intégré directement dans les paramètres du dépôt.
Activer Secret Scanning
- Accédez à votre dépôt sur GitHub.
- Naviguez vers Settings → Code security and analysis.
- Activez Secret scanning.
- Activez Push protection.
Push protection est la fonctionnalité clé ici. Lorsqu’elle est activée, GitHub bloque tout push contenant un motif de secret reconnu avant qu’il n’atteigne le dépôt.
Tester Push Protection
Tentez de pousser un commit contenant un motif de secret connu, tel qu’une clé d’accès AWS ou un jeton d’accès personnel GitHub :
# Stage and commit a file with a test secret
git add deploy.py
git commit -m "Add deploy script"
git push origin main
GitHub bloque le push avec un message comme :
remote: error: GH013: Repository rule violations found for refs/heads/main.
remote:
remote: - GITHUB PUSH PROTECTION
remote: ——————————————————————————————————————————
remote: Resolve the following violations before pushing again
remote:
remote: — Push cannot contain secrets —
remote:
remote:
remote: (?) To push, remove secret from commit(s) or follow this URL to allow the secret.
remote:
remote: — Amazon AWS Access Key ID —
remote: locations:
remote: - commit: abc1234def5678
remote: path: deploy.py:4
remote:
! [remote rejected] main -> main (push rule violations)
error: failed to push some refs
Gérer les Faux Positifs
Si GitHub signale une valeur qui n’est pas un vrai secret (par exemple, un fixture de test ou un exemple de documentation), vous pouvez contourner push protection avec une raison. GitHub fournit une URL dans le message de rejet où vous pouvez :
- Sélectionner une raison de contournement : « It’s used in tests », « It’s a false positive » ou « I’ll fix it later ».
- Soumettre le contournement, ce qui autorise le push mais enregistre l’événement pour l’audit.
Les administrateurs de l’organisation peuvent voir tous les contournements dans le tableau de bord Security → Secret scanning.
Le Programme Partenaire
GitHub collabore avec plus de 200 fournisseurs de services (AWS, Stripe, Twilio, SendGrid et autres) via son programme partenaire de secret scanning. Lorsqu’un secret d’un partenaire est détecté :
- GitHub notifie automatiquement le fournisseur de services.
- Le fournisseur révoque l’identifiant compromis.
- Le propriétaire du dépôt est notifié par e-mail et via l’onglet Security.
Cela signifie que même si un secret passe à travers toutes les autres défenses et atteint un dépôt public, la fenêtre de dommages peut être réduite à quelques minutes grâce à la révocation automatique.
Exercice 5 : Motifs de Secrets Personnalisés
Les règles de détection par défaut couvrent les fournisseurs courants (AWS, Stripe, GitHub, Google Cloud, etc.), mais la plupart des organisations ont également des secrets internes avec des formats personnalisés que les outils standards ne détecteront pas. Gitleaks prend en charge les règles personnalisées via un fichier de configuration .gitleaks.toml.
Créer une Configuration gitleaks Personnalisée
Créez un fichier .gitleaks.toml à la racine du dépôt :
[extend]
# Extend the default gitleaks configuration
# useDefault = true
[[rules]]
id = "mycompany-api-key"
description = "MyCompany Internal API Key"
regex = '''MYCOMPANY-KEY-[A-Za-z0-9]{32}'''
tags = ["internal", "api-key"]
keywords = ["mycompany-key"]
[[rules]]
id = "internal-database-url"
description = "Internal Database Connection String"
regex = '''postgresql://[^:]+:[^@]+@internal-db\.[a-z0-9-]+\.corp\.[a-z]+\.com'''
tags = ["internal", "database"]
keywords = ["internal-db"]
[[rules]]
id = "internal-jwt-signing-key"
description = "Internal JWT Signing Key"
regex = '''JWT_SIGNING_KEY=[A-Za-z0-9+/=]{64,}'''
tags = ["internal", "jwt"]
keywords = ["jwt_signing_key"]
[allowlist]
description = "Global allowlist"
paths = [
'''(.*?)test(.*?)\.py''',
'''(.*?)_test\.go''',
'''(.*?)spec(.*?)\.js''',
'''(.*?)fixtures(.*?)''',
'''README\.md'''
]
[[rules.allowlist]]
id = "mycompany-api-key"
regexes = [
'''MYCOMPANY-KEY-EXAMPLE[A-Za-z0-9]{24}''',
'''MYCOMPANY-KEY-TEST[A-Za-z0-9]{28}'''
]
Comprendre la Configuration
- Règles personnalisées : Les sections
[[rules]]définissent des motifs spécifiques à votre organisation. Le champregexutilise des expressions régulières compatibles Go. Le champkeywordsaide gitleaks à filtrer rapidement les fichiers — seuls les fichiers contenant le mot-clé sont analysés avec la regex complète, ce qui améliore les performances. - Liste d’autorisation globale : La section
[allowlist]définit les chemins qui doivent être exclus de toute analyse. Les fichiers de test, les fixtures et la documentation sont des exclusions courantes. - Liste d’autorisation par règle : La section
[[rules.allowlist]]définit des exceptions pour des règles spécifiques. Ici, nous excluons les clés d’exemple connues qui apparaissent dans la documentation ou les helpers de test.
Tester la Configuration Personnalisée
Créez un fichier avec un secret personnalisé pour tester :
cat > internal-config.py <<'EOF'
MYCOMPANY_API_KEY = "MYCOMPANY-KEY-a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
EOF
Exécutez gitleaks avec la configuration personnalisée :
gitleaks detect --source . --config .gitleaks.toml -v
La règle personnalisée détecte la clé API interne qui aurait été manquée par les règles par défaut.
Construire une Stratégie de Défense en Profondeur
Aucune couche unique de détection de secrets n’est suffisante. Les développeurs peuvent ignorer les hooks pre-commit. Les analyses de pipeline ne détectent les secrets qu’au moment de la PR. GitHub push protection ne couvre que les motifs des fournisseurs connus. Une stratégie robuste superpose toutes ces couches.
Les Cinq Couches de Défense des Secrets
┌─────────────────────────────────────────────────────┐
│ Couche 1 : Hook Pre-commit (gitleaks) │
│ → Intercepte les secrets avant l'historique local │
├─────────────────────────────────────────────────────┤
│ Couche 2 : Analyse PR / Merge Request (gitleaks) │
│ → Bloque les PR contenant des secrets │
├─────────────────────────────────────────────────────┤
│ Couche 3 : Push Protection (GitHub / GitLab) │
│ → Blocage au niveau plateforme des motifs connus │
├─────────────────────────────────────────────────────┤
│ Couche 4 : Analyse Post-merge (truffleHog planifié)│
│ → Analyse approfondie hebdomadaire avec vérification│
├─────────────────────────────────────────────────────┤
│ Couche 5 : Surveillance Runtime (logs d'audit vault)│
│ → Détection d'anomalies d'utilisation des secrets │
└─────────────────────────────────────────────────────┘
Pourquoi Aucune Couche Unique ne Suffit
- Les hooks pre-commit peuvent être contournés avec
git commit --no-verifyou en utilisant un client Git qui ne prend pas en charge les hooks. - Les analyses de pipeline ne s’exécutent que sur les branches qui déclenchent la CI — les push directs vers des branches non protégées ou les force push peuvent les ignorer.
- Push protection ne détecte que les motifs des fournisseurs connus — les secrets internes personnalisés ne sont pas couverts.
- Les analyses post-merge sont réactives — elles trouvent les secrets après qu’ils sont déjà dans le dépôt.
Chaque couche compense les faiblesses des autres. Ensemble, elles créent un système où un secret devrait contourner les cinq couches pour passer inaperçu.
Workflow Combiné : Analyse de PR et Analyse Complète Hebdomadaire
Voici un workflow GitHub Actions combiné qui exécute gitleaks sur chaque PR et effectue une analyse complète du dépôt chaque semaine :
name: Secret Scanning (Multi-Layer)
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
schedule:
# Full repository scan every Monday at 6:00 AM UTC
- cron: '0 6 * * 1'
jobs:
# Layer 2: PR and push scanning
gitleaks-pr-scan:
name: gitleaks PR Scan
runs-on: ubuntu-latest
if: github.event_name == 'push' || github.event_name == 'pull_request'
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run gitleaks (diff scan)
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Layer 4: Weekly deep scan with truffleHog
trufflehog-full-scan:
name: truffleHog Full Repository Scan
runs-on: ubuntu-latest
if: github.event_name == 'schedule'
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install truffleHog
run: pip install trufflehog
- name: Run truffleHog (full scan with verification)
run: |
trufflehog git file://. --fail --json > trufflehog-results.json || true
if [ -s trufflehog-results.json ]; then
echo "::error::Secrets detected in repository. See trufflehog-results.json."
cat trufflehog-results.json | python -m json.tool
exit 1
fi
- name: Upload scan results
if: always()
uses: actions/upload-artifact@v4
with:
name: trufflehog-results
path: trufflehog-results.json
retention-days: 90
Ce workflow garantit que chaque modification de code est analysée en temps réel, et que l’ensemble de l’historique du dépôt est audité chaque semaine pour détecter les secrets qui auraient pu passer inaperçus.
Nettoyage
Après avoir terminé le lab, supprimez les secrets de test et réinitialisez le dépôt :
# Remove test files with secrets
rm -f .env deploy.py config.yml Dockerfile internal-config.py
# Remove test configurations (optional — keep if you want to reuse them)
# rm -f .gitleaks.toml .pre-commit-config.yaml
# Commit the cleanup
git add -A
git commit -m "Remove test secrets from lab exercises"
# If you want to completely remove secrets from Git history,
# use git-filter-repo (more thorough than git filter-branch):
pip install git-filter-repo
git filter-repo --invert-paths --path deploy.py --path .env --path config.yml --path Dockerfile
Important : La simple suppression de fichiers ne les retire pas de l’historique Git. Toute personne ayant accès au dépôt peut encore trouver les secrets dans les commits passés. Utilisez git-filter-repo pour réécrire l’historique et supprimer définitivement les fichiers sensibles. Après la réécriture de l’historique, faites un force-push vers le remote et demandez à tous les collaborateurs de re-cloner le dépôt.
Points Clés à Retenir
- Les secrets dans les pipelines CI/CD sont le vecteur d’attaque le plus courant pour la compromission des pipelines. Un seul identifiant divulgué peut donner à un attaquant un accès complet à l’infrastructure de production.
- Les hooks pre-commit avec gitleaks offrent la boucle de rétroaction la plus rapide. Les développeurs sont alertés immédiatement, avant que le secret n’entre dans l’historique Git.
- L’analyse dans le pipeline est une couche d’application obligatoire. Elle ne peut pas être contournée par les développeurs et garantit qu’aucune PR contenant des secrets n’est fusionnée.
- La capacité de vérification de truffleHog réduit considérablement les faux positifs. Utilisez-le pour les analyses approfondies planifiées où la précision compte plus que la vitesse.
- GitHub push protection et le programme partenaire ajoutent une défense au niveau de la plateforme qui fonctionne sans aucune configuration dans vos pipelines CI/CD.
- Les règles de détection personnalisées sont essentielles pour intercepter les secrets spécifiques à l’organisation que les outils standards manqueront. Investissez du temps dans l’écriture de règles pour vos formats de clés internes.
- La défense en profondeur est la seule stratégie fiable. Aucun outil ou couche unique ne détecte tout. Combinez pre-commit, analyse dans le pipeline, push protection, analyses planifiées et surveillance runtime pour une couverture complète.
Prochaines Étapes
Maintenant que vous savez détecter et prévenir les fuites de secrets, l’étape suivante est d’éliminer complètement les secrets codés en dur en adoptant une gestion appropriée des secrets :
- Gestion des Secrets dans les Pipelines CI/CD — Apprenez à utiliser HashiCorp Vault, AWS Secrets Manager et les magasins de secrets natifs CI/CD pour injecter des secrets à l’exécution sans jamais les stocker dans le code.
- Identifiants Éphémères et Workload Identity Federation — Éliminez complètement les secrets à longue durée de vie en utilisant la fédération d’identité de charge de travail basée sur OIDC pour authentifier les pipelines auprès des fournisseurs cloud sans aucun identifiant stocké.