Jenkins 进阶篇 - 权限配置

Jenkins的授权策略

Jenkins 默认的授权策略是【登录用户可以做任何事】,也就是人人都是管理员,可以修改所有的设置以及构建所有的任务,不用做任何设置,有账号登录到 Jenkins 系统即可,这对于测试研究 Jenkins 来讲是不错的,但将这种策略用于生产环境绝对不是我们想要的。试想一下,原本很多的 Jenkins 配置信息已经设置好了,结果来了一个新手,由于不是很会使用 Jenkins,结果把 Jenkins 的设置打乱了,如果没有文档记录的话,你都不知道之前是怎么设置的。同样的,有些任务不是任何人都可以去构建的,特别是用于部署生产环境的的一些任务,随便去构建了,那就可能会部署到生产环境去,没做好控制的话很容易被误操作,这是会出生产事故的,所以做好权限控制是非常有必要的。

Jenkins 默认的授权策略显然满足不了我们的高要求,那有方式实现我们的权限精细化控制吗?肯定是有的。其实 Jenkins 除了前面说的默认“登录用户可以做任何事”的策略外还内置了其他几种授权策略:任何用户可以做任何事(没有任何限制,不登录就可以进行管理操作),安全矩阵、遗留模式、项目矩阵授权策略。其中安全矩阵策略和项目矩阵授权策略比较相似,都是对用户或组进行权限设置,但是可设置的权限还不算很细,做简单的权限控制还是够了的,但有个明显的缺点是要给所有的用户都要设置一遍。下面我将介绍另一种授权策略  Role-Based Strategy,从名称我们就可以知道这是基于角色的权限控制。

在使用 Role-Based Strategy 授权策略之前我们要先安装一个插件 Role-based Authorization Strategy。在【插件管理】的【可选插件】中过滤搜索关键词 Role,就会看到 Role-based Authorization Strategy 插件,安装好后重启下 Jenkins。Jenkins 有个很方便的重启方式,浏览器中登录到 Jenkins 系统,然后访问地址 http://jenkins_host:port/restart 确定是后就会重启 Jenkins

如下图:

image.png

Role-based Authorization Strategy 插件安装好后,在 Jenkins 的【全局安全配置】中的【授权策略】会多出【Role-Based Strategy】选项,我们将授权策略调整为【Role-Based Strategy】后保存下:

image.png

这时候在 Jenkins 的【系统管理】中会看到 【Manage and Assign Roles】的设置选项以及还有一块如下图的黄色警告。

image.png

这个警告内容翻译过来就是默认情况下,Jenkins中的构建以具有完整 Jenkins 权限的虚拟 Jenkins 系统用户身份运行。如果某些用户对某些作业有限制或没有访问权限,但可以配置其他作业,则可能会出现问题。如果是这样的话,建议安装一个实现构建身份验证的插件,并覆盖这个默认值。我这里的警告里面是一个❌,如果你的警告里面有两个❌,则需要再安装一个插件 Authorize Project。安装好 Authorize Project 插件后,去到【全局安全配置】中的【Access Control for Builds】进行如下设置,添加两个如下的配置警告就消失了:

image.png

角色和权限的设置

我们进入到【Manage and Assign Roles】,进行角色和权限设置,它的步骤是这样的:首先在【Manage Roles】里面添加角色并对角色进行赋权,然后在【Assign Roles】里面对用户进行角色指定。

image.png

在进行角色和权限分配之前我们先讲下应用场景,最常见的一个场景是,一个公司的 IT 团队中有专门做开发的,有做测试的还有做线上运维发布的,这个场景下开发者就只能去构建开发环境的任务,测试就只能去构建测试环境的任务,生产环境的任务就只能由线上运维人员进行操作。明白了场景要求我们就可以划分角色和权限了。我们可以分为三种角色:开发者角色 dev-role、测试员角色 test-role、运维员角色 prod-role,假定开发者角色就只能构建开发环境的任务,测试人员只能构建测试环境的任务,运维人员可以构建所有环境的任务。还有一点需要注意的是,角色权限的设置最终会落实到对任务的操作权限,那么任务的命名就需要规范化,因为是采用正则匹配,规范任务的命名才要写正则表达式,否则写正则表达式就会劝退不少人。

接下来就开始我们的角色权限配置,首先我们先创建几个 Jenkins 用户账号进行测试。用管理账号登录到 Jenkins 系统,去到 Jenkins 【系统管理】的【管理用户】功能设置里面新创建用户:张三、李四、王五:

image.png

image.png

image.png

我们假定张三、李四、王五分别是开发人员角色、测试人员角色和运维人员角色,他们的权限分别是张三可以构建开发环境任务、李四可以构建测试环境任务、王五可以构建开发、测试和生产环境的任务。除了构建任务和对任务的配置进行设置,他们都不能修改 Jenkins 的其他配置。创建好用户后,我们再去到【Manage and Assign Roles】的【Manage Roles】里面创建角色和配置权限。

在【Global roles】里面保持 admin 角色的权限不变,新添加 dev、test、prod 三个角色,然后将这三个角色设置上只读权限,如果不设置读取相关权限,用户登录后什么也看不到。在【Item roles】里面依旧添加 dev、test、prod 三个角色,并将所有的权限都勾选上,需要注意的是添加【Item roles】角色时还有填入 Pattern 信息,这个 Pattern 表示正则匹配哪些任务。例如我这里 dev 的角色可以管理所有名称包含 dev 关键字的任务,test 角色可以管理所有名称包含 test 关键字的任务,prod 角色可以管理所有名称包含 prod 关键字的任务,所以任务名称规范非常重要。

这里说明一下正则匹配,拿 test 角色举例。我这里 test 角色填入的 Pattern 正则表达式为 .*(?i)test.* 这表示匹配所有名称包含 test 关键字的任务,其中 test 忽略大小写,这个任务是指所有 Jenkins 的任务类型,包括目录。

image.png

点击某个 Pattern 正则会弹窗提示匹配到哪些任务:

image.png

然后在【Assign Roles】角色分配里面对用户进行角色分配,【 Global roles】和【Item roles】的设置如下,需要注意的是添加时是根据登录用户名进行设置,这里的用户名最终会显示成完整名称。

image.png

到这里角色和权限的配置已经完成了,在下一节内容中我们将用实际的项目和不同角色的用户进行演示,看看我们角色权限是否配置正确。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Jenkins进阶篇主要涉及到在Jenkins中使用多分支管道来进行持续集成、持续传送和持续部署的操作。首先,你需要准备好Git库,并按照指南在不同平台上安装Jenkins。接下来,你可以使用多分支管道来配置Jenkins以实现集成、测试和交付等阶段。这些阶段可以根据正在构建的分支进行选择性地执行。例如,你可以添加“交付和生产部署”阶段,并且在该阶段中添加当分支为"development"时的执行步骤和当分支为"production"时的执行步骤。在这些步骤中,你可以指定要执行的脚本命令,例如运行测试、部署到开发环境或部署到生产环境。你也可以在适当的阶段添加交互式输入,以便在执行过程中进行人工干预。最后,你可以使用Jenkinsfile来定义整个多分支管道的流程和步骤。这样,你就可以在Jenkins中实现更高级的持续集成和部署方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Jenkins | 进阶篇 | 端对端多分支Pipeline](https://blog.csdn.net/weixin_37417954/article/details/83412133)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Jenkins进阶篇](https://download.csdn.net/download/weixin_26704349/19545011)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心如光

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值