Jenkins: Accès refusé après avoir activé la sécurité mondiale. Comment revenir?

14

Besoin d'aide pour comprendre celui-ci. Comment puis-je résoudre ce problème? Je pense que j'ai activé la sécurité globale et j'ai vu cette erreur immédiatement.

(en accédant à localhost: 8080 j'obtiens ce qui suit ...)

A problem occurred while processing the request. Please check our bug tracker to see if a similar problem has already been reported. If it is already reported, please vote and put a comment on it to let us gauge the impact of the problem. If you think this is a new issue, please file a new issue. When you file an issue, make sure to add the entire stack trace, along with the version of Jenkins and relevant plugins. The users list might be also useful in understanding what has happened.

Stack trace
hudson.security.AccessDeniedException2: anonymous is missing the Overall/Read permission
    at hudson.security.ACL.checkPermission(ACL.java:54)
    at hudson.model.Node.checkPermission(Node.java:418)
    at jenkins.model.Jenkins.getTarget(Jenkins.java:3658)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:656)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:225)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:370)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
    at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:695)
serverFaulter
la source

Réponses:

14

modifiez le fichier config.xml et remplacez les deux balises xml suivantes par la version ci-dessous. Redémarrez ensuite votre serveur.

  <authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
  <securityRealm class="hudson.security.SecurityRealm$None"/>

Attention, vos balises existantes s'étendent probablement sur plusieurs lignes chacune.

Peter Schuetze
la source
Et où dois-je chercher config.xml?
sobi3ch
OK je l'ai trouvé .. normalement allumé $JENKINS_HOMEmais dans mon cas il était vide. Sur mon Ubuntu, je l'ai trouvé /var/lib/jenkins/.
sobi3ch
Bien qu'une bonne réponse à cette question, cette réponse est également un peu plus générique. Si vous avez bousillé vos paramètres de sécurité (ou si le service informatique a modifié le LDAP) et que vous devez revenir dans un Jenkins verrouillé, effacer la sécurité dans config.xml et ajouter les balises xml ci-dessus vous permettra de recommencer.
gnuchu
11

Vous obtenez cette erreur car vous avez activé la sécurité mais n'avez aucun utilisateur avec des autorisations. Pour résoudre ce problème, modifiez d'abord config.xmlet définissez useSecuritysurfalse

Je suppose que vous souhaitez utiliser l'authentification locale (une base de données locale d'utilisateurs) plutôt qu'une base de données externe (c'est-à-dire LDAP). Suivez les étapes ci-dessous tirées de la documentation Jenkins .

  1. Accédez à l'écran Configurer la sécurité globale ( http: // serveur / jenkins / configureSecurity / ) et choisissez «activer la sécurité». Une autre URL à essayer est http: // server: 8080 / configureSecurity .
  2. Sélectionnez "la propre base de données utilisateur de Jenkins" comme domaine de sécurité
  3. Cochez la case "Autoriser les utilisateurs à s'inscrire"
  4. Sélectionnez "Sécurité basée sur une matrice" comme autorisation
  5. Accorder à un utilisateur anonyme l'accès en lecture
  6. Dans la zone de texte sous le tableau, saisissez votre nom d'utilisateur (vous le créerez plus tard) et cliquez sur "ajouter"
  7. Donnez-vous un accès complet en vérifiant toute la ligne pour votre nom d'utilisateur
  8. Faites défiler jusqu'en bas, cliquez sur "enregistrer"

Testé avec la version 1.566.


Je suggère de revenir sur les modifications suggérées dans la réponse acceptée car cela est susceptible d'affecter les étapes ci-dessus.

amertkara
la source
Que fait <useSecurity>false</useSecurity>-il?
alex
@alex, il désactive la sécurité dans Jenkins afin que vous puissiez vous connecter et reconfigurer. jenkins.io/doc/book/system-administration/security/…
amertkara
2

Correction à deux lignes (exécutée sur le serveur):

sudo ex +g/useSecurity/d +g/authorizationStrategy/d -scwq /var/lib/jenkins/config.xml
sudo /etc/init.d/jenkins restart

Remarque: l' sudoautorisation est requise ou exécutée en tant que root.

Connectez-vous ensuite à Jenkins comme d'habitude et reconfigurez à nouveau la sécurité.

Kenorb
la source
0

Problème similaire que j'ai rencontré mais avec le plugin GitHub OAuth, grâce à la réponse convenue ici, mon problème et sa solution expliqués ici

sandejai
la source
0

Sous Windows: lorsque j'ai activé le LDAP sous Sécurité globale, j'ai également perdu mon administrateur. avec une erreur comme "Accès refusé il manque les fenêtres jenkins d'autorisation globale / lecture".

Dans ce cas, veuillez conserver l'instance existante, faire installer un nouveau jenkins sur une autre machine ou machine virtuelle. Copiez le config.xml de Jenkins_Home et remplacez-le par config.xml de votre répertoire Jenkin_Home. Pendant cette opération, assurez-vous que le service Jenkins est arrêté. une fois remplacé, démarrez l'instance et VOILA.

user3346620
la source