Jenkins安全 - 除非用户登录,否则隐藏所有屏幕

cbm*_*ica 50 continuous-integration jenkins

我不知道为什么"登录用户可以做任何事情"意味着Jenkins很乐意允许未经过身份验证的用户查看项目详细信息并访问工件......无论如何,我需要知道如何让Jenkins允许登录用户访问任何东西并为未登录的用户隐藏一切.请帮忙吗?

Kev*_*cke 74

这可以通过Role-Strategy插件完成.

安装插件,添加一个名为"Anonymous"的新组并取消选中所有内容.然后,您要添加另一个名为"authenticated"的组并检查所有内容.将现有用户添加到该组.Jenkins会立即以这种方式提示您登录.

  • 需要说明的是,这是针对Role-Strategy插件(https://wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin) - 而不是默认的Jenkins.很好用! (14认同)
  • 我添加了"Authenticated"(大写),它不起作用.谢谢,谢谢! (2认同)

rco*_*len 9

你可以使用https://wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin

它允许指定定义角色并为用户分配角色,没有角色的用户甚至不会看到jenkins ui.


Mat*_*t R 6

回答一个老问题,但我来这里搜索是因为我试图在 Docker 上自动启动 Jenkins 实例,并发现了同样的问题。

当提出问题时,这个选项很可能不可用。截至目前(v2.222.3,但不确定多久之前),事实证明您可以在不安装任何其他插件的情况下执行此操作。

手动

  • 导航到全局安全性(Jenkins > 管理 Jenkins > 全局安全性)

  • 将授权部分更新为“登录用户可以执行任何操作”。

    取消选中 允许匿名读取访问

在此输入图像描述

任何未经身份验证的访问都将重定向到立即登录。

我要注意的是,如果您通过设置向导设置 Jenkins,则默认情况下会禁用匿名读取访问。如果您想要这种行为并且想要自动配置 jenkins,请继续阅读。

使用 Docker 实现自动化

我的情况是,我想检查我的存储库,运行我的撰写文件,并准备好所有配置/用户/插件等。如果有兴趣的话,这里有更多详细信息。

简而言之:

Dockerfile

FROM jenkins/jenkins:lts-alpine

# Disable setup wizard since security.groovy creates our user
ENV JAVA_OPTS="-Djenkins.install.runSetupWizard=false"

COPY security.groovy /usr/share/jenkins/ref/init.groovy.d/security.groovy

Run Code Online (Sandbox Code Playgroud)

安全常规

#!groovy

import jenkins.model.*
import hudson.security.*

def instance = Jenkins.getInstance()

// Create Admin User
def hudsonRealm = new HudsonPrivateSecurityRealm(false)
hudsonRealm.createAccount("admin", "admin") // Dont do this. This is bad
instance.setSecurityRealm(hudsonRealm)

// Set Auth to Full Control Once Logged In and prevent read-only access
def strategy = new FullControlOnceLoggedInAuthorizationStrategy()
strategy.setAllowAnonymousRead(false)
instance.setAuthorizationStrategy(strategy)

instance.save()
Run Code Online (Sandbox Code Playgroud)

特别strategy.setAllowAnonymousRead(false)是需要什么