74 votes

Restreindre la visibilité des travaux Jenkins à des utilisateurs spécifiques

Dans Jenkins, existe-t-il un moyen de restreindre certains travaux afin que seuls des utilisateurs spécifiques puissent les visualiser ?

Jenkins permet de restreindre les capacités des utilisateurs par projet via la "stratégie d'autorisation matricielle basée sur le projet". Le problème est qu'un utilisateur ne peut accéder à rien sans le paramètre 'Overall' 'Read'. Cela semble lui permettre de voir tous les travaux.

Existe-t-il un autre plugin qui permettrait de restreindre la visibilité des tâches ?

67voto

Christian Points 396

Pensez-y, c'est ce que vous recherchez : Autoriser l'accès à des projets spécifiques pour les utilisateurs

Brève description sans captures d'écran :
Utilisez la "Stratégie d'autorisation matricielle basée sur le projet" de Jenkins sous "Gérer Jenkins" => "Configurer le système". Sur la page de configuration de chaque projet, vous avez maintenant "Enable project-based security". Ajoutez maintenant chaque utilisateur que vous voulez autoriser.

1 votes

On dirait que vous devez encore ouvrir le paramètre Lecture globale comme le suggère le PO. J'ai tout essayé et je n'arrive pas à faire fonctionner les paramètres de sécurité par projet sans vérifier la lecture globale. C'est peut-être parce que j'utilise LDAP, mais cela fonctionne bien au niveau global.

4 votes

Vous devez cocher la case Lecture globale, mais ensuite, sur le projet que vous sécurisez, assurez-vous de cocher la case "Ne pas hériter des autorisations globales". De cette façon, l'utilisateur que vous ne voulez pas voir le projet ne le verra pas.

5 votes

La "Stratégie d'autorisation matricielle basée sur le projet" ne se trouve pas sous "Gérer Jenkins" => "Configurer le système", mais sous "Gérer Jenkins" => "Configurer la sécurité globale".

16voto

JRichardsz Points 1487

Un seul plugin m'a aidé : Stratégie basée sur les rôles :

wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin

Mais la documentation officielle (wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin) est déficiente.

Les configurations suivantes ont fonctionné pour moi :

configure-role-strategy-plugin-in-jenkins

En fait, il suffit de créer des rôles et de les faire correspondre aux noms des emplois à l'aide d'une expression rationnelle.

8voto

Vadim Kotov Points 1310

Vous pouvez utiliser la stratégie d'authentification Matrix basée sur les projets et activer l'autorisation de lecture globale, mais désactiver la lecture des tâches au niveau du système. Ensuite, vous devez activer le droit de lecture des tâches pour chaque projet spécifique que vous souhaitez rendre visible pour l'utilisateur actuel. Veuillez vous référer à ce problème résolu pour plus d'informations. Quelques informations à partir de là :

Je suis en train d'implémenter la permission READ au niveau de la tâche. Lorsque cela est fait, un utilisateur qui n'a pas l'autorisation READ pour un travail particulier ne pourra pas : voir ce travail dans n'importe quelle vue, être capable d'accéder directement à la page du travail, voir toute référence au travail (par exemple dans les dépendances en amont ou en aval).

En outre, je vous recommande d'aller plus loin et de vérifier Plugin Stratégie de rôles . Il peut simplifier la gestion des utilisateurs/rôles, vous pouvez utiliser la description ci-dessus pour donner accès à certaines tâches.

2voto

Rostislav Matl Points 2167

J'utilise une combinaison de plusieurs plugins - pour l'attribution de base des rôles et des autorisations, j'utilise Plugin Stratégie de rôles .

Lorsque j'ai besoin de diviser certains rôles en fonction de paramètres (par exemple, tout le monde avec job-runner est capable d'exécuter des travaux, mais seul l'utilisateur UUU est autorisé à exécuter le travail de déploiement sur la machine MMM), j'utilise Plugin Python et définir un script python comme première étape de construction et terminer avec sys.exit(-1) lorsque l'exécution du job est interdite avec la combinaison de paramètres donnée.

Plugin Build User Vars me fournit les informations sur l'utilisateur qui exécute le travail sous forme de variables d'environnement.

Par exemple

import os
import sys

print os.environ["BUILD_USER"], "deploying to", os.environ["target_host"]

# only some users are allowed to deploy to servers "MMM"
mmm_users = ["UUU"]

if os.environ["target_host"] != "MMM" or os.environ["BUILD_USER"] in mmm_users:
    print "access granted"
else:
    print "access denied"
    sys.exit(-1)

2voto

NMS Points 21

Comme mentionné ci-dessus par Vadim Utilisez la "Stratégie d'autorisation matricielle basée sur le projet" de Jenkins sous "Gérer Jenkins" => "Configurer le système". N'oubliez pas d'y ajouter votre utilisateur admin et de lui donner toutes les permissions. Ajoutez ensuite l'utilisateur restreint et donnez-lui un accès général en lecture. Ensuite, allez à la page de configuration de chaque projet, vous avez maintenant l'option "Enable project-based security". Maintenant, ajoutez chaque utilisateur que vous voulez autoriser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X