• Jenkins Manage and Assign Roles角色权限控制



    一、概述

    虽然常见的凭证选项能够处理很多用例,但有时你可能希望使用更细粒度的方法来进行安全加固和授权。

    一 个示范用例将创建一组具有特定权限的新角色,并将角色分配给个人用户。

    基于角色的授权策略插件(Role-based Authorization Strategy plugin) 是为了提供这种功能而设计的

    插件允许定义如下 三种角色。

    全局角色(Global roles)

    能跨越具有权限的项目(如任务、运行和源码管理)的角色。

    项目角色(Item roles)

    针对任务或者运行类别中的 一个项目的角色。

    从节点角色(Node roles)

    具有管理节点权限的角色。

    二、基本操作

    安装插件Role-based Authorization Strategy

    在这里插入图片描述

    启用Role-Based Strategy

    在这里插入图片描述
    在这里插入图片描述
    选择Role-Based Strategy并保存
    在这里插入图片描述
    在管理 Jenkins 页面会增加一个Manage and Assign Roles
    在这里插入图片描述
    在管理和分配角色的界面上,主要功能有 三种选项:管理角色、分配角色和角色策略宏
    在这里插入图片描述

    三、管理角色

    允许你创建 或删除角色并为它 们分配权限

    在下面的矩阵中,每行是一个已定义的角色(默认为admin)、 每列是 一个指定权限的 Jenkins 对象(全部、凭证、代理等)
    分类。要想给 一个角色授予权限,你只需要勾选该角色行中所需权限列上的复选框即可
    在这里插入图片描述
    可以通过在添加角色(Role to Add )文本框中输入想要的角色名称来创建 一个新角色。

    项目和从节点部分也是这种模式。这些模式用于将 项目或从节点角色 分别关联到项目或从节点名称。

    全局部分不需要模式,因为我们将特定的用户分配给那些角色, 而不是依赖匹配的用户 ID 。

    模式匹配规则

    角色模式是一 种正则表达式,用于根据对象的名称进行匹配一一项目名或节点名取决于角色的类型。项目的名称包括路径中所有 Jenkins 文件夹名称。

    常用规则:

    cpp-.*				#将匹配名称以cpp-开头的所有job
    
    ^git_.*feature_.*	#以git_开头,中间任意字符,feature_后面跟任意字符
    
    "^upgrade_(aa|bb)_.*"		#(aa|bb)可以匹配aa或者bb
    
    (dev.*|test.*)				#匹配dev.*或者test.*
    
    (?!)cpp-.*					#不区分大小写
    
    ^foo/bar.*					#匹配文件夹 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    全局角色示例

    创建一个测试管理员(test-admin)的角色。**注意:实际使用中不建议这么做**
    在这里插入图片描述
    添加角色后,授予一些权限
    在这里插入图片描述
    根据经验,最好再创建一个只读的角色
    在这里插入图片描述

    项目示例

    假设测试人员操作的job均以test开头,那么可以创建一个项目角色test-job,匹配模式为test.*
    在这里插入图片描述
    并授予对应的权限
    在这里插入图片描述
    优先顺序:
    在这里插入图片描述

    从节点角色示例

    跟上述方法一致,test-slave.*可以匹配所有以test-slave开头的节点
    在这里插入图片描述
    在这里插入图片描述

    四、分配角色

    当我们建立了角色后,可以将用户或组分配给特定的角色。

    我们使用分配角色(Assign Roles )界面来做这些(可以从管理和分配角色页面访问)。

    对于管理角色页面上的每个角色类别, 分配角色页面上都有相应的部分。然而,后者的相应部分有更“ 髦”
    的名称一一Item 角色和 Node 角色。 Item 角色对应于 Project 角色, Node角色对应于 Slave 角色。

    这里的用法很简单。在每个部分(全局、项目和节点)中,行表示用户或组,列表示为类别定义的角色。请注意,匿名用户有一个默认条目。

    为了允许一个用户/组具有与角色相关联的权限,只需在添加用户/组(User/group to add)文本框中输入用户/组的名字,点击添加按钮,然后勾选与你期望的角色对应的列中的复选框。

    给test1用户授予read角色

    在这里插入图片描述
    在这里插入图片描述

    给test1用户分配test-job的项目角色

    在这里插入图片描述

    验证角色设置

    用test1用户登录,只能看到test开头的job
    在这里插入图片描述

    五、角色策略宏

    其背后的思想是能够具有根据项目的某些特性来定义访问权限的宏,现在有以下三种
    在这里插入图片描述
    以BuildableJob 宏为例。
    这个宏被设计用于过滤列表中的“可构建的”任务项目。
    有几个原因可以解释为什么一个 Jenkins 中的项目可能是不可构建的,但在单独的任务层面上却是可构建的,最典型的就是因为
    这个任务被禁用了。能最快地指示你 一个任务不可构建的就是,菜单上立即构建(BuildNow )选项的缺失。

    红框中代表这些宏只适用于项目
    在这里插入图片描述

    示例

    创建一个项目角色:@BuildableJob
    在这里插入图片描述
    创建一个新用户test2,给test2分配read全局角色和@BuildableJob项目角色
    在这里插入图片描述

    在这里插入图片描述
    把test3项目禁用
    在这里插入图片描述
    以test1用户登录,可以看到test3项目
    在这里插入图片描述
    再以test2用户登录,因为它会绑定到BuildableJob角色,因此看不到被禁用掉的test3项目

    在这里插入图片描述

    六、参考书籍

    《Jenkins2权威指南》

  • 相关阅读:
    【吞噬星空4】又魔改,徐欣自杀殉情,变成被阿特金击杀,引发粉丝吐槽
    javaweb疫苗预约网站源码
    到底有几个鸿蒙OS? 谈谈我眼里的鸿蒙操作系统
    木马免杀
    CubeMX+BabyOS 使用方法
    Centos for arm64 aarch64 下载地址列表以及鲲鹏服务器安装教程
    高光时刻丨极智嘉斩获2023中国物流与采购联合会科学技术一等奖
    【Unity】Resources.Load
    自定义RBAC(2)
    Java工程师进阶知识完全扫盲, 太全了!!
  • 原文地址:https://blog.csdn.net/anqixiang/article/details/124403735