将 Jenkins 作业的可见性限制到特定用户

在 Jenkins 中,是否有一种方法可以限制某些作业,以便只有特定的用户才能查看它们?

詹金斯允许通过“基于项目的矩阵授权策略”限制每个项目的用户能力。问题是,用户不能访问任何没有“整体”“阅读”设置。这似乎允许他们查看所有的工作。

是否有其他插件允许工作可见性限制?

130433 次浏览

尝试去“管理詹金斯”-> “管理用户”去特定的用户,编辑他/她的配置“我的意见部分”默认视图。

认为这是,你正在寻找: 允许用户访问特定的项目

没有截图的简短描述:
使用“管理 Jenkins”= > “配置系统”下的“基于项目的矩阵授权策略”。在每个项目的配置页面上,现在都有“启用基于项目的安全性”。现在添加要授权的每个用户。

您可以使用基于项目的矩阵授权策略并启用“读整体”权限,但在系统级别禁用“读作业”。之后,您应该为每个特定的项目启用 ReadJob,您希望它们对于当前用户是可见的。详情请参阅 这个问题已经解决了。从那里得到一些信息:

我正在作业级别实现 READ 权限。 完成此操作后,用户将缺乏特定作业的 READ 权限 不会: 在任何视图中查看作业,能够直接访问作业页面,查看作业的任何引用(例如在上游或下游依赖关系中)

此外,我建议您进一步检查 角色策略插件。它可以简化用户/角色管理,您可以使用上面描述的方法来访问某些作业。

您可以安装“扩展读取权限”插件。 然后,在“全局设置”或单个作业配置中,您可以授予用户“扩展读取”权限。

我使用几个插件的组合-为基本分配的角色和权限,我使用 角色策略插件

当我需要根据参数分割一些角色时(例如,每个有作业运行程序的人都可以运行作业,但是只有用户 UUU 可以运行部署到机器 MMM 上的部署作业) ,我使用 Python 插件并定义一个 python 脚本作为第一个构建步骤,当作业被禁止用给定的参数组合运行时,以 sys.exit (- 1)结束。

Build User Vars Plugin 为我提供了有关用户作为环境变量执行作业的信息。

例如:

import os
import sys


print os.environ["BUILD_USER"], "deploying to", os.environ["target_host"]


# only some users are allowed to deploy to servers "MMM"
mmm_users = ["UUU"]


if os.environ["target_host"] != "MMM" or os.environ["BUILD_USER"] in mmm_users:
print "access granted"
else:
print "access denied"
sys.exit(-1)

只有一个插件可以帮助我: 基于角色的策略:

Wiki.jenkins-ci.org/display/jenkins/role+strategy+plugin

但是官方文件( wiki.jenkins-ci.org/display/jenkins/role+strategy+plugin )是有缺陷的。

以下配置对我很有效:

Configure-role-Strategy-plugin-in-jenkins

基本上,您只需要创建角色并使用正则表达式将它们与作业名称匹配。

正如瓦迪姆上面提到的 使用 Jenkins 的“基于项目的矩阵授权策略”下 “管理 Jenkins”= > “配置系统”。不要忘记添加您的管理员用户,并给予所有的权限。现在在这里添加受限用户,并给予总体读访问权限。 然后转到每个项目的配置页面,您现在有了“启用基于项目的安全性”选项。现在添加要授权的每个用户。