Aller au contenu

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.

Niveau Avancé3 min de lecture— vuesJenkins

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

Environnement et versions

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

ARCHITECTURE TECHNIQUEComprendre la chaîne de bout en bout
01Credentials Store
02Scope
03withCredentials
04Agent
05Audit
Les credentials sont délivrés à un step autorisé ; le masquage de console n'empêche pas un code malveillant de les exfiltrer.

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.

01

ÉTAPE 1 / 4

Définir les droits

Un job ne doit pas bénéficier de credentials globaux sans nécessité.

  1. Lister les jobs autorisés.
  2. Créer une identité dédiée à privilèges minimaux.
Exemple techniqueÀ adapter à votre environnement
# Matrice : job-recette => credential-recette seulement
Ce qui se passe à cette étape
1Jobs
2Roles
3Contrôle

À 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.

02

ÉTAPE 2 / 4

Stocker la valeur

La valeur ne doit pas être dans Jenkinsfile ni SCM.

  1. Créer un credential factice dans le bon scope.
  2. Définir un identifiant non sensible.
Exemple techniqueÀ adapter à votre environnement
# ID de recette : api-token-lab
Ce qui se passe à cette étape
1Stockage
2ID
3Scope

À 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.

03

ÉTAPE 3 / 4

Lier dans un step

Limiter l'exposition temporelle du secret.

  1. Utiliser withCredentials autour du seul step autorisé.
  2. Ne pas afficher la variable ni activer set -x.
Exemple techniqueÀ adapter à votre environnement
withCredentials([string(credentialsId: 'api-token-lab', variable: 'API_TOKEN')]) {
  sh 'test -n "$API_TOKEN"'
}
Ce qui se passe à cette étape
1Binding
2Step
3Libération

À 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.

04

ÉTAPE 4 / 4

Tester les refus et rotation

Une rotation doit pouvoir s'effectuer sans modifier le Jenkinsfile.

  1. Tester un job non autorisé.
  2. Remplacer le secret de laboratoire et relancer le job autorisé.
Exemple techniqueÀ adapter à votre environnement
# Scénarios : autorisé => OK ; non autorisé => refus
Ce qui se passe à cette étape
1Refus
2Rotation
3Audit

À 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.

Consulter la documentation officielle

05 · RECETTE

Comment vérifier que tout fonctionne ?

Résultat attenduContrôles avant de considérer la procédure terminée
01

Le Jenkinsfile ne contient aucun secret.

02

Le compte non autorisé est refusé.

03

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

Tous les guides Jenkins

VOTRE ENVIRONNEMENT

Besoin d’aller plus loin sur votre environnement ?

Automatisation, sécurité et exploitation : échangeons sur vos pratiques Jenkins.

Échanger avec ADN Consulting

Pour aller plus loin