GUIDE TECHNIQUE · JENKINS
Jenkins : Sécuriser les credentials des pipelines
Réduire les privilèges Jenkins et utiliser credentials avec un scope approprié sans exposer les secrets dans les logs.
L’ESSENTIEL EN BREF
Les étapes clés
Ce guide présente 4 étapes, de « Définir les droits » à « Tester les refus et rotation ».
Avant de commencer : Agent et job de recette.
01 · CADRAGE
Périmètre et résultat visé
Résultat attendu : Le Jenkinsfile ne contient aucun secret.
Public concerné : Administrateurs Jenkins, responsables DevSecOps et IAM
Jenkins LTS, Credentials plugin et Pipeline ; comportement exact selon le fournisseur de secrets.
Contrôlez les versions, les droits et les options disponibles dans votre environnement avant de suivre la procédure.
02 · AVANT DE COMMENCER
Prérequis et points de contrôle
- Agent et job de recette.
- Secret factice dédié au test et révocable.
- Matrice des rôles et dossiers Jenkins approuvée.
03 · VUE D’ENSEMBLE
Comprendre l’architecture et les flux
04 · TUTORIEL
Procédure complète, étape par étape
Suivez les étapes dans l’ordre et contrôlez chaque résultat avant de poursuivre. Renseignez les paramètres adaptés à votre environnement.
ÉTAPE 1 / 4
Définir les droits
Un job ne doit pas bénéficier de credentials globaux sans nécessité.
- Lister les jobs autorisés.
- Créer une identité dédiée à privilèges minimaux.
# Matrice : job-recette => credential-recette seulementÀ vérifier : Les autorisations sont explicites.
Point de vigilance : Ne jamais exécuter du code de pull request non fiable avec des secrets de production.
ÉTAPE 2 / 4
Stocker la valeur
La valeur ne doit pas être dans Jenkinsfile ni SCM.
- Créer un credential factice dans le bon scope.
- Définir un identifiant non sensible.
# ID de recette : api-token-labÀ vérifier : La valeur réelle ne figure pas dans Git.
Point de vigilance : Le type et la visibilité des credentials dépendent des plugins et folders.
ÉTAPE 3 / 4
Lier dans un step
Limiter l'exposition temporelle du secret.
- Utiliser withCredentials autour du seul step autorisé.
- Ne pas afficher la variable ni activer set -x.
withCredentials([string(credentialsId: 'api-token-lab', variable: 'API_TOKEN')]) {
sh 'test -n "$API_TOKEN"'
}À vérifier : Le step confirme la présence sans révéler le secret.
Point de vigilance : Éviter l'interpolation Groovy du secret dans une commande shell.
ÉTAPE 4 / 4
Tester les refus et rotation
Une rotation doit pouvoir s'effectuer sans modifier le Jenkinsfile.
- Tester un job non autorisé.
- Remplacer le secret de laboratoire et relancer le job autorisé.
# Scénarios : autorisé => OK ; non autorisé => refusÀ vérifier : La séparation est effective.
Point de vigilance : Révoquer le credential fictif après les essais.
RÉFÉRENCES TECHNIQUES
Documentation officielle
Retrouvez les prérequis, les fonctionnalités et les versions prises en charge par Jenkins. Vérifiez les commandes sur un environnement de test avant leur utilisation en production.
05 · RECETTE
Comment vérifier que tout fonctionne ?
Le Jenkinsfile ne contient aucun secret.
Le compte non autorisé est refusé.
La rotation n'exige pas de changement de code.
06 · DIAGNOSTIC
Problèmes fréquents et résolution
Credential not found
Cause probable : ID ou scope inadéquat
Que faire : Contrôler l'emplacement et les permissions.
Secret présent dans logs
Cause probable : Interpolation ou trace shell
Que faire : Désactiver la trace et traiter la fuite.
Job trop privilégié
Cause probable : Compte d'exécution partagé
Que faire : Créer une identité par périmètre.
07 · QUESTIONS PRATIQUES
Questions fréquentes
Le masquage console suffit-il ?
Non. Un step malveillant peut transmettre le secret par le réseau.
Peut-on placer des secrets dans Git ?
Non, utiliser un coffre dédié.
À quoi sert withCredentials ?
À exposer temporairement un credential à un bloc précis.
AUTRES TECHNOLOGIES
Guides complémentaires
VOTRE ENVIRONNEMENT
Besoin d’aller plus loin sur votre environnement ?
Automatisation, sécurité et exploitation : échangeons sur vos pratiques Jenkins.
Échanger avec ADN Consulting