Table of Contents

JENKINS: Gestion des identifiants

le plug-in Credentials Binding fournit la fonctionnalité d'informations d'identification Jenkins.

Les informations d'identification stockées dans Jenkins peuvent être utilisées:

Utilisation des identifiants

Types d'identifiants gérés

Jenkins peut stocker les types d'informations d'identification suivants:

Sécurité des identifiants

Pour maximiser la sécurité, les informations d'identification configurées dans Jenkins sont stockées sous une forme cryptée sur l'instance principale de Jenkins (cryptée par l'ID d'instance Jenkins) et ne sont gérées que dans les projets Pipeline via leurs ID d'identification.

Cela minimise les chances d'exposer les informations d'identification réelles aux utilisateurs de Jenkins et empêche la possibilité de copier des informations d'identification fonctionnelles d'une instance de Jenkins à une autre.

Configuration des identifiants

Cette section décrit les procédures de configuration des informations d'identification dans Jenkins.

Les informations d'identification peuvent être ajoutées à Jenkins par tout utilisateur Jenkins disposant de l'autorisation Informations d'identification> Créer (défini via la sécurité basée sur Matrix ). Ces autorisations peuvent être configurées par un utilisateur Jenkins avec l'autorisation Administrer . Plus d'informations à ce sujet dans la section Autorisation de la rubrique Gestion de la sécurité .

Sinon, tout utilisateur Jenkins peut ajouter et configurer des informations d'identification si les paramètres d' autorisation de la page Configurer les paramètres de sécurité globale de l'instance Jenkins sont définis sur le paramètre par défaut. Les utilisateurs connectés peuvent définir n'importe quel paramètre ou tout le monde .

Ajout d'identifiants globaux

Pour ajouter de nouvelles informations d'identification globales à une instance Jenkins:

Utilisation de l'API

Le plug-in credentials fournit une API normalisée permettant à d'autres plug-in de stocker et de récupérer différents types d'informations d'identification.

Exemple d'utilisation lookupCredentials()

L'exemple de Groovy script ci-dessous illustre comment utiliser lookupCredentials() de CredentialsProvider pour récupérer des informations d'identification.

Le but de ce script est de construire une liste de paramètre contenant les identifiants/username/mot de passe pour une utilisation dans un build.

import jenkins.*
import jenkins.model.*
import hudson.*
import hudson.model.*
import com.cloudbees.plugins.credentials.Credentials
import com.cloudbees.plugins.credentials.CredentialsProvider;
import com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials;
def getPassword = { userid ->
    def password = ""
    def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
        com.cloudbees.plugins.credentials.Credentials.class
    )
 Jenkins.instance.getAllItems(com.cloudbees.hudson.plugins.folder.Folder.class).findAll{it.name.equals('reseau')}.each{ f ->
 	creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
      com.cloudbees.plugins.credentials.Credentials.class, f)
  
    def c = creds.findResult { it.id == userid ? it : null }
 
    if ( c ) {
      password = c.password

    } else {
      password = "n-a"
    }
  }
  return password
}
Set<Credentials> allCredentials = new HashSet<Credentials>();

Jenkins.instance.getAllItems(com.cloudbees.hudson.plugins.folder.Folder.class).findAll{it.name.equals('reseau')}.each{ f ->
 creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
      com.cloudbees.plugins.credentials.Credentials.class, f)
  allCredentials.addAll(creds)
  
}

def choices=[]

for (c in allCredentials) {
        def passwd = getPassword(c.id)
        choices.add(c.id + "|" + c.username + "|" + passwd)
 }
return choices

Méthode getPassword

Une méthode en Groovy est définie avec le mot clé def. Les méthodes peuvent recevoir un nombre quelconque d'arguments. Il n’est pas nécessaire que les types soient explicitement définis lors de la définition des arguments

La méthode getPassword() permet d'extraire un mot de passe correspondant à l'ID fournit en argument en utilisant CredentialsProvider.lookupCredentials.

  Jenkins.instance.getAllItems(com.cloudbees.hudson.plugins.folder.Folder.class).findAll{it.name.equals('reseau')}.each{ f ->

  creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
        com.cloudbees.plugins.credentials.Credentials.class, f)

  def c = creds.findResult { it.id == userid ? it : null }

Boucle principale

La boucle Jenkins.instance.getAllItems utilise CredentialsProvider.lookupCredentials pour traiter chaque objet credentials afin de construire la liste des paramètres indetifiants/username/mot de passe.

  Jenkins.instance.getAllItems(com.cloudbees.hudson.plugins.folder.Folder.class).findAll{it.name.equals('reseau')}.each{ f ->

  creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
        com.cloudbees.plugins.credentials.Credentials.class, f)

  for (c in allCredentials) {
          def passwd = getPassword(c.id)
          choices.add(c.id + "|" + c.username + "|" + passwd)
   }