Jenkins:グローバルセキュリティをオンにした後、アクセスは拒否されました。元に戻す方法は?


14

これを理解するのに助けが必要です。この問題を修正するにはどうすればよいですか?グローバルセキュリティを有効にすると、このエラーがすぐに表示されたと思います。

(localhost:8080にアクセスしているときに、次のメッセージが表示されます...)

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)

回答:


14

config.xmlを編集し、次の2つのxmlタグを次のバージョンに置き換えます。次に、サーバーを再起動します。

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

既存のタグはおそらく複数の行にまたがっていることに注意してください。


そして、どこを探すべきconfig.xmlですか?
sobi3ch

わかった。通常はオンに$JENKINS_HOMEなっているが、私の場合は空だった。Ubuntuでそれを見つけました/var/lib/jenkins/
sobi3ch

この質問には良い答えですが、この答えはもう少し一般的です。セキュリティ設定を台無しにした場合(またはIT部門がLDAPを変更した場合)、ロックアウトされたJenkinsに戻る必要がある場合は、config.xmlでセキュリティを削除し、上記のxmlタグを追加することで再開できます。
グヌーチュ

11

セキュリティを有効にしたが、権限を持つユーザーがいないため、このエラーが発生しています。この問題を解決するには、まず編集config.xmluseSecurityfalse

外部データベース(LDAPなど)ではなく、ローカル認証(ユーザーのローカルデータベース)を使用することを想定しています。Jenkins Documentationから以下の手順に従ってください。

  1. [グローバルセキュリティの構成]画面(http:// server / jenkins / configureSecurity /)に移動し、[セキュリティを有効にする]を選択します。試す代替URLはhttp:// server:8080 / configureSecurityです。
  2. セキュリティレルムとして「Jenkins's own user database」を選択します
  3. 「ユーザーによるサインアップを許可する」の横にチェックマークを付けます
  4. 承認として「マトリックスベースのセキュリティ」を選択します
  5. 匿名ユーザーに読み取りアクセス権を付与します
  6. 表の下のテキストボックスにユーザー名を入力し(後で作成します)、[追加]をクリックします
  7. ユーザー名の行全体を確認して、フルアクセスを許可します
  8. 一番下までスクロールし、「保存」をクリックします

バージョン1.566でテスト済み。


上記の手順に影響する可能性があるため、受け入れられた回答で提案された変更を元に戻すことをお勧めします。


何を<useSecurity>false</useSecurity>するの?
アレックス

@alexはJenkinsのセキュリティを無効にするため、ログインして再設定できます。jenkins.io/doc/book/system-administration/security/...
amertkara

2

2行修正(サーバー上で実行):

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

注:sudo許可が必要です。または、として実行しrootます。

その後、通常どおりJenkinsにログインし、セキュリティを再構成します。



0

Windowsの場合:グローバルセキュリティでLDAPを有効にすると、管理者権限も失います。「アクセスが拒否されたため、全体/読み取り権限のジェンキンスウィンドウがありません」というエラーが表示されます。

そのような場合、既存のインスタンスを保持し、別のマシンまたはVMに新しいjenkinsをインストールしてください。Jenkins_Homeからconfig.xmlをコピーし、Jenkin_Homeディレクトリのconfig.xmlに置き換えます。これを実行している間、Jenkinsサービスが停止していることを確認してください。交換したら、インスタンスとVOILAを起動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.