文章目录

  • 一、概述
    • `插件允许定义如下 三种角色。`
      • 全局角色(Global roles)
      • 项目角色(Item roles)
      • 从节点角色(Node roles)
  • 二、基本操作
    • `安装插件Role-based Authorization Strategy`
    • `启用Role-Based Strategy`
  • 三、管理角色
    • `模式匹配规则`
    • `全局角色示例`
    • `项目示例`
    • `从节点角色示例`
  • 四、分配角色
    • 给test1用户授予read角色
    • 给test1用户分配test-job的项目角色
    • `验证角色设置`
  • 五、角色策略宏
    • 示例
  • 六、参考书籍

一、概述

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

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

基于角色的授权策略插件(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.*                   #匹配文件夹

全局角色示例

创建一个测试管理员(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权威指南》

Jenkins Role-based Authorization Strategy基于角色的访问权限控制相关推荐

  1. 给Elasticsearch 和Kibana添加基于角色的访问权限控制

    给ELK 添加Shield权限控制 背景 这两天整个项目(电商SAAS系统)上线后,由于系统变得很大,每天产生的业务日志.访问日志.数据库慢查询.php等语言日志,都分布在不同的机器上,所以需要统一收 ...

  2. jenkins使用Role-based Authorization Strategy插件管理视图任务权限

    前言 提到jenkins的权限管理,大家应该都知道 Role-based Authorization Strategy 插件,但是如何使用这个插件来做到视图和任务的权限控制,很多人搞不明白,而且搜索了 ...

  3. java的string访问某个元素_架构师必懂的——RBAC基于角色的访问权限设计

    RBAC 是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限.这就极大地简化了权限的管理.这 ...

  4. 实现权限控制_在 Go 语言中使用 casbin 实现基于角色的 HTTP 权限控制

    Go语言中文网,致力于每日分享编码.开源等知识,欢迎关注我,会有意想不到的收获! 身份认证和授权对 web 应用的安全至关重要.最近,我用 Go 完成了我的第一个正式的 web 应用,这篇文章是在这个 ...

  5. php : RBAC 基于角色的用户权限控制-表参考

    --管理员表 CREATE TABLE `sw_manager` (`mg_id` int(11) NOT NULL AUTO_INCREMENT,`mg_name` varchar(32) NOT ...

  6. Jenkins配置基于角色的项目权限管理--转

    本文将介绍如何配置jenkins,使其可以支持基于角色的项目权限管理. 由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,本文将使用Role Str ...

  7. RBAC(基于角色的访问控制权限的基本模型)

    (一)基本概念 1.定义 RBAC(Role-Based Access Control),也就是所谓的**"基于角色的访问控制权限"**. 2.优势 在RBAC中,用户不再直接与权 ...

  8. SpringSecurity系列——其他的权限控制,基于access表达式的权限控制day6-2(源于官网5.7.2版本)

    SpringSecurity系列--其他的权限控制,基于access表达式的权限控制day6-2(源于官网5.7.2版本) 常见权限控制总表 基于access表达式的权限控制 实例1:改写hasRol ...

  9. 基于SpringAOP实现数据权限控制

    基于SpringAOP实现数据权限控制 在此主要是实现对用户查询数据返回字段的控制.比如一个表格有A,B,C,D,E五列,用户U1只能查看A,B,C三列. 此文章讲述的内容并不能实现在查询时仅查询A, ...

最新文章

  1. 机器学习5种特征选择的方法!
  2. Windows下编译tensorflow-gpu教程
  3. w3wp.exe内存占用过高(网站打不开,应用程序池回收就正常)
  4. oracle in与exists的使用
  5. android6.0源码分析之Camera API2.0简介
  6. Django视图(一)
  7. 需求决定设计,设计来源于需求
  8. firl 函数 matlab,经典matlab信号处理学习
  9. linux 查看手机硬件信息失败,linux下硬件信息的查看总结
  10. opencv for java HoughLinesP的使用
  11. 为什么所有人都对 HTML、CSS 失望了?
  12. Android 要收费?周鸿祎:这是迟早的事!
  13. 开发API整理(转)
  14. 2018百度之星程序设计大赛初赛B——1002hex
  15. 使用 POI 读取 Word docx 中的书签、替换书签内容(汉字或合并外部文档内容)
  16. 机器人操作系统ROS—深度相机+激光雷达实现vSLAM建图与导航
  17. 163邮箱无法通过POP3接收邮件
  18. 用友系统检查iis服务器不符,安装用友U8的时候已经安装了IIS但是环境检测的时候却通不过?...
  19. 7月31日 细雨霏霏 不是我的泪
  20. 华为服务器_RH2288H V3介绍

热门文章

  1. 维基解密创始人阿桑奇被捕:“天才黑客”到“阶下之囚”
  2. [wp]ctfshow-web入门-爆破
  3. J2EE总结:Java命名与目录接口JNDI(转载)
  4. 技术圈热议:阿里 GitHub 项目被爆出 刷 Star!这波又摊上事了...
  5. [Vue+Vant] 使用 Vant 组件的详细操作流程
  6. 断网别慌,WIFI上网修复技巧:联想智能引擎帮你恢复网络
  7. php 微信 群聊,vbot微信机器人微信聊天消息详解(18):群组变动
  8. Bootstrap学习与实践
  9. 2015年北邮网研院复试上机题目
  10. 使用CSS将图像进行模糊处理