web-dev-qa-db-fra.com

jenkins Slave fonctionne en tant qu'utilisateur

J'ai une configuration de jenkins avec plusieurs utilisateurs qui se connectent avec plugin Active Directory . Ceci est utile pour que chaque utilisateur puisse accéder à ses propres tâches.

Cependant, chaque utilisateur dispose également d'autorisations différentes sur le réseau local, telles que l'accès à différents dossiers, etc. J'ai remarqué que les autorisations accordées à chaque tâche ne sont pas liées à l'utilisateur mais au compte sous lequel l'esclave est exécuté en tant que service. Existe-t-il un moyen de changer cela pour que la tâche soit exécutée sur l'esclave sous les informations d'identification (et donc les autorisations) de l'utilisateur?

Je vous remercie

13
RockScience

Le problème est le suivant: il n'y a qu'un seul processus esclave exécutant le travail différent attribué à ce serveur par le maître Jenkins.
Ainsi, l’esclave s’exécute en tant qu’utilisateur unique (généralement, un compte dédié ou un compte système).

Étant donné que vous pouvez obtenir l'ID utilisateur en tant que variable d'environnement (avec un plugin tel que JENKINS Build User Plugin Vars ), vous pouvez envisager de configurer le travail afin que l'étape de construction "s'exécute" en tant que l'utilisateur qui a déclenché la construction.
Voir par exemple le plugin JENKINS Authorize Project .

https://wiki.jenkins-ci.org/download/attachments/70877566/authorize-project_01_globalsecurity.png?version=2&modificationDate=1439085782000&api=v2

https://wiki.jenkins-ci.org/download/attachments/70877566/authorization-page.png?version=1&modificationDate=1486871612000&api=v2

Cependant, comme a mentionné cette réponse :

Le plug-in "Authorize Project" ne modifie pas l'utilisateur au niveau du système d'exploitation qui exécute des commandes.
Il définit uniquement l'utilisateur Jenkins qui exécute le travail et tous les travaux en aval, en utilisant l'authentification Jenkins (quelle qu'elle soit).

Ainsi, il vous reste étape de construction avec les commandes runas ou su -c afin de pouvoir sûr que votre tâche soit exécutée avec le bon utilisateur.

5
VonC

J'avais le même problème et je me souviens d'avoir géré davantage de contrôle sur les projets que j'avais utilisés role Strategy Plugin et configuré la sécurité globale à l'aide de serveurs LDAP (Active Directory devrait également être ok) . plugin de projet autorisé . Regardez et j'espère que cela devrait vous aider. Laissez-moi savoir sur la section commentaire pour toute clarification. 

1
Avinash