52

I don't know why "logged in users can do anything" means Jenkins will happily allow non-authenticated users to view project details and access artifacts... Regardless, I need to know how to get Jenkins to allow logged in users to to anything AND hide EVERYTHING for users who AREN'T logged in. Help please?

4

4 回答 4

76

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

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

于 2013-01-09T01:22:36.733 回答
9

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

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

于 2013-03-01T11:04:53.053 回答
4

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

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

手动

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

  • 将授权部分更新为“登录用户可以做任何事情”。

    UNCHECK 允许匿名读取访问

在此处输入图像描述

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

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

使用 Docker 自动化

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

简而言之:

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

安全.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)是需要什么

于 2020-05-23T15:47:53.403 回答
1

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

于 2013-03-01T03:47:51.297 回答