Jenkins beschränken die Ansicht von Jobs pro Benutzer

71

Gibt es eine Möglichkeit, den Benutzer darauf zu beschränken, nur bestimmte Jobs in Jenkins anzuzeigen?

Jenkins ermöglicht die Einschränkung der Benutzerfähigkeit pro Projekt über die "Projektbasierte Matrix-Autorisierungsstrategie". Das Problem ist, dass ein Benutzer ohne die Einstellung "Gesamt" und "Lesen" auf nichts zugreifen kann. Dies scheint es ihnen zu ermöglichen, alle Jobs anzuzeigen.

Gibt es ein anderes Plugin, das die Jobbeschränkung zulässt?

ulrichenslin
quelle

Antworten:

63

Denken Sie, dies ist das, wonach Sie suchen: Ermöglichen Sie Benutzern den Zugriff auf bestimmte Projekte

Kurzbeschreibung ohne Screenshots:
Verwenden Sie Jenkins "Projektbasierte Matrix-Autorisierungsstrategie" unter "Jenkins verwalten" => "System konfigurieren". Auf der Konfigurationsseite jedes Projekts haben Sie jetzt "Projektbasierte Sicherheit aktivieren". Fügen Sie nun jeden Benutzer hinzu, den Sie autorisieren möchten.

Christian
quelle
1
Sieht so aus, als müssten Sie die Einstellung "Gesamtlesung" noch öffnen, wie es OP vorschlägt. Ich habe alles versucht und kann die projektbasierten Sicherheitseinstellungen nicht dazu bringen, etwas zu tun, ohne den Gesamtwert zu überprüfen. Könnte sein, dass ich LDAP verwende, aber es funktioniert auf globaler Ebene einwandfrei.
Quickshift im
4
Sie müssen den Gesamtlesevorgang überprüfen, aber dann müssen Sie bei dem Projekt, das Sie sichern, nur "Globale Berechtigungen nicht erben" aktivieren. Auf diese Weise wird der Benutzer, den Sie nicht sehen möchten, das Projekt nicht sehen.
Metaforge
2
"Projektbasierte Matrix-Autorisierungsstrategie" steht nicht unter "Jenkins verwalten" => "System konfigurieren", sondern unter "Jenkins verwalten" => "Globale Sicherheit konfigurieren"
Cowlinator
15

Nur ein Plugin hilft mir: Rollenbasierte Strategie :

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

Die offizielle Dokumentation (wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin) ist jedoch mangelhaft.

Die folgenden Konfigurationen haben bei mir funktioniert:

Konfigurieren-Rollen-Strategie-Plugin-in-Jenkins

Grundsätzlich müssen Sie nur Rollen erstellen und diese mithilfe von Regex mit Jobnamen abgleichen.

JRichardsz
quelle
Dies ist der Schlüssel in der Dokumentation -Step 9. Add Project Roles based on each project.
Vishnu Haridas
Die Links der Learning Academy sind unterbrochen.
Kyle Martin
1
Ich konvertierte zu PDF nur für den Fall: github.com/jrichardsz/jenkins-tips-snippets-templates/blob/…
JRichardsz
Bitte entfernen Sie die URL zu kblearningacademy, da dies nicht funktioniert und auf eine schädliche Website umgeleitet wird. Meine Unternehmensfirewall hat es blockiert.
Dominik
7

Sie können die projektbasierte Matrixauthentifizierungsstrategie verwenden und die Berechtigung "Gesamt lesen" aktivieren, aber "Job lesen" auf Systemebene deaktivieren. Danach sollten Sie Read Job für jedes bestimmte Projekt aktivieren, das Sie für den aktuellen Benutzer sichtbar machen möchten. Weitere Informationen finden Sie in diesem behobenen Problem . Einige Infos von dort:

Ich implementiere die READ-Berechtigung auf Jobebene. Wenn dies erledigt ist, kann ein Benutzer, dem die READ-Berechtigung für einen bestimmten Job fehlt, diesen Job in keiner Ansicht sehen, direkt auf die Jobseite zugreifen und Verweise auf den Job anzeigen (z. B. in vor- oder nachgelagerten Abhängigkeiten).

Außerdem empfehle ich Ihnen, weiter zu gehen und das Rollenstrategie-Plugin zu lesen . Dies kann die Benutzer- / Rollenverwaltung vereinfachen. Sie können die oben beschriebenen verwenden, um Zugriff auf bestimmte Jobs zu gewähren.

Vadim Kotov
quelle
2

Ich verwende die Kombination mehrerer Plugins - für die grundlegende Zuweisung von Rollen und Berechtigungen verwende ich das Rollenstrategie- Plugin .

Wenn ich eine Rolle in Abhängigkeit von den Parametern aufteilen muss (z. B. kann jeder mit Job-Runner Jobs ausführen, aber nur Benutzer-Benutzer-UUU darf den Bereitstellungsjob für die Bereitstellung auf Maschinen-MMM ausführen), verwende ich das Python-Plugin und definiere eine Python Skript als erster Erstellungsschritt und Ende mit sys.exit (-1), wenn die Ausführung des Jobs mit der angegebenen Kombination von Parametern verboten ist.

Erstellen Sie das User Vars Plugin liefert mir Informationen über den Benutzer, der den Job als Umgebungsvariablen ausführt.

Z.B:

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)
Rostislav Matl
quelle
2

Wie oben von Vadim erwähnt, verwenden Sie Jenkins "Projektbasierte Matrix-Autorisierungsstrategie" unter "Jenkins verwalten" => "System konfigurieren". Vergessen Sie nicht, dort Ihren Administrator hinzuzufügen und alle Berechtigungen zu erteilen. Fügen Sie nun den eingeschränkten Benutzer dort hinzu und gewähren Sie allgemeinen Lesezugriff. Gehen Sie dann zur Konfigurationsseite jedes Projekts. Sie haben jetzt die Option "Projektbasierte Sicherheit aktivieren". Fügen Sie nun jeden Benutzer hinzu, den Sie autorisieren möchten.

NMS
quelle
0

Gehen Sie zu "Jenkins verwalten" -> "Benutzer verwalten", gehen Sie zu dem bestimmten Benutzer und bearbeiten Sie dessen Standardansicht "Abschnitt" Meine Ansichten "".

Jordilin
quelle
8
Dies verbirgt den Job nur vor dem Benutzer und verhindert nicht den Zugriff darauf.
Stwalkerster
0

Sie können das Plug-In "Extended Read Permission" installieren. Dann können Sie entweder in "Globale Einstellungen" oder in der Konfiguration einzelner Jobs dem Benutzer die Berechtigung "Erweitertes Lesen" erteilen.

Rahul Singhai
quelle