jenkins 权限控制插件 Role-based Authorization Strategy

本文介绍如何使用RoleStrategyPlugin插件对Jenkins项目进行权限管理,包括配置全局安全策略、分配和指定角色,以及验证配置的有效性。

Role Strategy Plugin插件可以对构建的项目进行授权管理,让不同的用户管理不同的项目,将不同环境的权限进行区分。该插件可以很灵活的根据需求来进行划分权限,包括正则匹配等

插件名称:
Role-based Authorization Strategy

插件介绍:
Enables user authorization using a Role-Based strategy. Roles can be defined globally or for particular jobs or nodes selected by regular expressions.

实现需求:

1、开发环境需要一个通用用户,需要对开发环境的所有项目拥有只读的权限
2、测试环境需要一个通用用户,需要对测试环境的所有项目拥有只读的权限
3、其他环境暂时不创建用户

系统用户:
1、dev:dev环境所需用户
2、test:test环境所需用户

jenkins 项目命名规则介绍:
开发环境:所有项目的名称均以dev-开头,如:dev-cg-api
测试环境:所有项目的名称均以test-开头,如:test-cg-api


好,下面开始配置:

一、安装插件

打开jenkins系统管理,单击管理插件,找到可选插件,输入插件名称,然后点击直接安装即可

这里写图片描述

如果你已经安装过该插件,则在已安装一栏中可以看到该插件

这里写图片描述


二、配置项目安全策略

1、配置全局安全策略
点击系统管理,点击Configure Global Security
在该页面中选择授权策略为:Role-Based Strategy

这里写图片描述

2、配置Manage and Assign Roles策略
1)配置Manage Roles
在Manage Roles中有两种角色
Global roles用来分配全局策略,而 Project roles根据项目环境来分配项目权限

  1. Global roles
  2. Project roles

下面来配置Global roles中的三个角色:

这里写图片描述

admin:超级管理员,它拥有所有的全局权限
dev_roles:dev环境的用户,它只可以看到全局的Overall面板
test_roles:test环境的用户,它只可以看到全局的Overall面板

先说下,这里为什么要添加dev_roles和test_roles的Overall的read权限,如果不添加的话,这些普通用户登录到jenkins则会提示:用户没有Overall/read权限


下面来配置 Project roles 中的两个角色:

这里写图片描述

分别为:dev_roles和test_roles

dev_roles:匹配所有dev-.*的项目,并分配view、read及workspace等权限
test_roles:匹配所有test-.*的项目,并分配view、read及workspace等权限

2)配置Assign Roles
上面的roles和权限已经配置好了,那怎么让他生效呢?或者说让谁拥有这些roles的权限呢?
下面我们来将定义好的规则分配给具体的用户,前面我们提到了系统用户,那么我们现在有两个用户:dev and test

先来配置Global roles

这里写图片描述

之前我们在dev_roles和test_roles中定义了overall/read权限,现在将用户和roles关联起来,这样dev和test用户就拥有了改权限


接着配置Item roles

这里写图片描述

之前我们在Project roles中定义了dev_roles和test_roles规则,分别对应dev-.和test-.的项目及权限,在这里我们将用户和roles关联起来,这样对应的用户就拥有了对应roles的权限。

好,到这里配置已经完成,我们接下来进行验证


三、验证

1、以admin用户登录jenkins

这里写图片描述


2、以dev用户登录jenkins

这里写图片描述


3、以test用户登录jinkins

这里写图片描述

<think> 我们正在解决Jenkins中安装Role-based Authorization Strategy插件后,在权限配置界面没有出现"Node roles"配置项的问题。根据用户提供的引用内容,引用[1]提到了安装此插件,引用[2]和[3]与当前问题关联不大。 可能的原因及解决方案: 1. **插件版本问题**:旧版本的插件可能不支持Node roles功能,需要升级插件。 2. **Jenkins版本问题**:Jenkins版本过低,导致插件功能不完整。 3. **配置入口问题**:可能用户没有找到正确的配置入口。 具体解决步骤: ### 1. 确认插件版本 进入Jenkins插件管理页面,查看已安装的Role-based Authorization Strategy插件的版本。确保插件版本在3.0以上(较新的版本才支持Node roles)。 ### 2. 升级插件(如果版本过低) 如果插件版本过低,需要升级: - 进入 **Manage Jenkins** > **Manage Plugins** - 在 **Available** 选项卡中搜索 Role-based Authorization Strategy - 如果有更新,勾选并安装 ### 3. 检查Jenkins版本 确保Jenkins版本在2.176.1以上(这是支持较新RBAC插件的版本)。升级Jenkins的方法: - 下载最新版本的Jenkins WAR包,替换原文件并重启(注意备份) ### 4. 确认配置入口 安装并升级后,检查配置入口: - 进入 **Manage Jenkins** > **Manage and Assign Roles** - 这里应该有三个选项: - Manage Roles - Assign Roles - Role Strategy Macros (可选) - 点击 **Manage Roles**,此时应该可以看到三个标签页: - Global roles - Item roles - **Node roles** (如果存在,则问题解决) ### 5. 清除浏览器缓存 有时候界面缓存可能导致新功能不显示,尝试清除缓存或使用无痕模式。 ### 6. 重新安装插件 如果以上步骤无效,尝试重新安装插件- 卸载Role-based Authorization Strategy插件 - 重启Jenkins - 重新安装最新版本的插件 ### 7. 查看日志 在Jenkins的系统日志中查看是否有关于该插件的错误信息: - **Manage Jenkins** > **System Log** - 查看日志中是否有插件加载的错误 ### 8. 使用其他方式配置(如果仍不可用) 如果经过以上步骤仍然没有Node roles,可以考虑使用其他方法管理节点权限: - 通过全局角色(Global roles)和项目角色(Item roles)来控制对节点的访问(但不够精确) - 或者使用脚本控制(不推荐) 但是,我们期望的Node roles功能应该在新版本插件中可用。因此,重点检查版本和升级。 根据引用[1]中提到的插件安装,我们确认这个插件是支持节点权限管理的,所以版本问题是最可能的原因。 注意:在升级Jenkins插件前,请确保备份。 如果问题仍未解决,可以参考插件的官方文档或社区。 希望以上步骤能够帮助您解决问题。 --- §§相关问题§§ 1. 如何升级JenkinsRole-based Authorization Strategy插件? 2. Jenkins插件安装失败如何解决? 3. 如何备份Jenkins数据? 4. 除了Role-based Authorization Strategy插件,还有其他管理节点权限的插件吗? 5. Jenkins系统日志中如何筛选特定插件的错误信息? </think> ### 🔍 解决 Role-based Authorization Strategy 插件无 Node Roles 配置的问题 根据引用[1]的插件安装说明和实际配置经验,当插件安装后缺失 Node Roles 配置项时,通常有以下原因和解决方案: --- ### 🔧 **核心解决步骤** #### 1. **验证插件安装状态** - 进入 `Manage Jenkins > Manage Plugins > Installed` - 确认 **Role-based Authorization Strategy** 插件状态为 **Active** ✅ - 检查版本号是否 ≥3.0(旧版可能无 Node Roles 功能)[^1] #### 2. **激活权限策略** ```mermaid graph LR A[Manage Jenkins] --> B[Configure Global Security] B --> C[Authorization] C --> D[选择 Role-Based Strategy] D --> E[保存并重启] ``` > 需确保此处选择的不是 *Matrix-based security* 或其他策略 #### 3. **手动添加 Node Roles 类型** ```groovy // 通过 Groovy 脚本初始化(需管理员权限) import com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy import com.synopsys.arc.jenkins.plugins.rolestrategy.RoleType def strategy = new RoleBasedAuthorizationStrategy() strategy.addRole(RoleType.Node, "default", new HashSet()) // 初始化节点角色 Jenkins.instance.setAuthorizationStrategy(strategy) ``` 执行路径:`Manage Jenkins > Script Console` #### 4. **检查配置文件** 编辑 `$JENKINS_HOME/config.xml`,确认包含: ```xml <authorizationStrategy class="...RoleBasedAuthorizationStrategy"> <roleMap type="nodeRoles"> <!-- 关键节点 --> <roles/> </roleMap> </authorizationStrategy> ``` --- ### ⚠️ **常见问题排查** | 现象 | 解决方案 | 关联引用 | |---------------------|-----------------------------|----------| | 插件已启用但无入口 | 执行步骤2+3 | [^1] | | 保存后配置消失 | 检查 `config.xml` 写入权限 | | | Jenkins 版本过旧 | 升级至 LTS ≥ 2.346.1 | [^1] | | 与其他插件冲突 | 暂时禁用 Matrix Auth 等插件 | | --- ### 🌟 **替代方案** 若仍无法解决,可通过 **全局角色(Global Roles)** 间接控制节点: 1. 在 `Manage Roles > Global roles` 创建新角色 2. 配置权限: ```markdown - Computer/Configure: ✗ - Computer/Connect: ✗ - Computer/Create: ✗ - Computer/Delete: ✗ - Computer/Disconnect: ✗ ``` 3. 分配角色给相应用户组 > 💡 此方式虽无独立 Node Roles 界面,但能实现节点权限控制[^1] --- ### 📚 **补充说明** - **插件依赖**:确保安装 `Role Strategy Plugin` 而非基础版权限插件 - **浏览器缓存**:清理缓存或使用隐身模式访问 - **日志检查**:`$JENKINS_HOME/logs/rolestrategy.log` 查看错误详情 完成配置后,节点管理界面将出现 **Node Roles** 选项卡(通常在重启后生效): ```mermaid graph TB ManageJenkins --> ManageRoles ManageRoles --> GlobalRoles ManageRoles --> ItemRoles ManageRoles --> NodeRoles[Node Roles - 新增] ``` ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值