【问题标题】:Restricting visibility of Jenkins jobs to specific users将 Jenkins 作业的可见性限制为特定用户
【发布时间】:2021-06-16 04:38:32
【问题描述】:

在 Jenkins 中,有没有办法限制某些作业,以便只有特定用户才能查看它们?

Jenkins 允许通过“基于项目的矩阵授权策略”限制每个项目的用户能力。问题是如果没有“整体”“读取”设置,用户将无法访问任何内容。这似乎允许他们查看所有作业。

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

【问题讨论】:

    标签: jenkins


    【解决方案1】:

    认为这就是您要搜索的内容:Allow access to specific projects for Users

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

    【讨论】:

    • 看起来您仍然需要按照 OP 的建议打开整体读取设置。我已经尝试了所有方法,如果不检查总体读数,就无法让基于项目的安全设置执行任何操作。可能是我正在使用 LDAP,但它在全局级别上运行良好。
    • 您确实必须检查整体读取,但是在您保护的项目上,只需确保选中“不继承全局权限”。这样,您不想看到该项目的用户就不会看到它。
    • “基于项目的矩阵授权策略”不在“管理 Jenkins”=>“配置系统”下,它在“管理 Jenkins”=>“配置全局安全”下
    【解决方案2】:

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

    wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin

    但是官方文档(wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin)是有缺陷的。

    以下配置对我有用:

    configure-role-strategy-plugin-in-jenkins

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

    【讨论】:

    • 这是文档中的关键 - Step 9. Add Project Roles based on each project.
    • 学习学院链接已损坏。
    • 请删除 kblearningacademy 的 URL,因为它不起作用并重定向到恶意站点。我的公司防火墙阻止了它。
    【解决方案3】:

    您可以使用基于项目的矩阵身份验证策略并启用读取整体权限,但在系统级别禁用读取作业。之后,您应该为您希望对当前用户显示的每个特定项目启用读取作业。请参阅this resolved issue 了解更多信息。那里的一些信息:

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

    另外,我建议您进一步查看Role Strategy Plugin。它可以简化用户/角色管理,您可以使用上述方法来授予对某些工作的访问权限。

    【讨论】:

      【解决方案4】:

      我使用多个插件的组合 - 对于角色和权限的基本分配,我使用 Role Strategy Plugin

      当我需要根据参数拆分某些角色时(例如,每个拥有 job-runner 的人都可以运行作业,但只允许用户 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)
      

      【讨论】:

        【解决方案5】:

        如上所述,Vadim 使用Jenkins《基于项目的矩阵授权策略》下 “管理 Jenkins” => “配置系统”。不要忘记在此处添加您的管理员用户并授予所有权限。现在在此处添加受限用户并授予整体读取权限。 然后转到每个项目的配置页面,您现在有“启用基于项目的安全性”选项。现在添加您要授权的每个用户。

        【讨论】:

          【解决方案6】:

          尝试转到“管理 Jenkins”->“管理用户”转到特定用户,编辑他/她的配置“我的视图部分”默认视图。

          【讨论】:

          • 这只会对用户隐藏作业,不会阻止对它的访问。
          【解决方案7】:

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

          【讨论】:

            猜你喜欢
            • 2021-12-07
            • 2021-09-08
            • 1970-01-01
            • 1970-01-01
            • 2011-10-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多