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

时间:2013-01-09 00:56:22

标签: jenkins continuous-integration

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

4 个答案:

答案 0 :(得分:74)

可以使用Role-Strategy plugin完成此操作。

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

答案 1 :(得分:9)

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

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

答案 2 :(得分:1)

此外,如果您使用GitHub作为您的版本控制系统 - 您可以使用GitHub OAuth插件。一旦“匿名”到达您的页面,它们将被自动重定向到GitHub。

答案 3 :(得分:0)

回答了一个老问题,但是我试图在Docker上自动启动Jenkins实例时发现了相同的问题。

问问题时此选项不可用的可能性很大。截至目前(v2.222.3,但不确定多远),事实证明您可以执行此操作而无需安装任何其他插件。

手动

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

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

    取消检查 允许匿名读取访问权限

enter image description here

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

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

通过Docker自动化

我的情况是我想签出我的仓库,运行我的撰写文件,并准备好我的所有配置/用户/插件等。很棒的帖子here,如果有兴趣,请提供更多详细信息。

简而言之:

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

security.groovy

#!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()

尤其需要strategy.setAllowAnonymousRead(false)