四时宝库

程序员的知识宝库

Jenkins权限管理技巧(jenkins 权限)

前言

如果使用Jenkins来管理整个公司的CICD,特别是有一定规模的公司,需要严格的权限管理。因为一般公司内部有多个开发部门,每个部门又有多个产品,做权限分割是相当重要的。大家都不希望其他组的人,意外触发了自己组的Job。

本文章是给大家介绍一些Jenkins权限管理的插件。希望大家喜欢。

彩蛋在最后!!!


登录验证插件

说到Jenkins的登录验证,不得不提下面的两个插件:

  • LDAP
  • SAML

两个都是基于Active Directory (AD)的验证插件。只需要在Manage Jenkins -> Configure Global Security里面配置就可以了,具体细节笔者就不在这里赘述了,请参照插件的WIKI。配置好之后,符合规定的AD user就可以登录到Jenkins了。

但是笔者一般不会给AD user添加权限,因为如果每次有新用户都要Jenkins管理员添加一次权限,这个太繁杂了。所以这里笔者需要提一下AD group,笔者一般都是给AD group相应的权限,这样所有在该AD group里面的AD user都会拥有一样的权限,而AD group的管理,都可以交还给项目组。

这里笔者还需要提到,有一些公司,用的是AD来管理所有的员工,但是使用其他形式的组来管理权限。这样显然是不能使用这两个插件的,因为他们只能关联相应的AD group。笔者也遇到过这样的问题,最后通过修改这两个插件的代码,做到了其他“group”的集成。

分享一下插件的源码跟需要改动的文件,具体如何修改,读者自己可以研究研究。

  • LDAP:
    https://github.com/jenkinsci/ldap-plugin/blob/master/src/main/java/hudson/security/LDAPSecurityRealm.java
  • SAML:
    https://github.com/jenkinsci/saml-plugin/blob/master/src/main/java/org/jenkinsci/plugins/saml/SamlSecurityRealm.java

权限管理插件

商业版Jenkins(Cloudbees)有一个比较好用的插件,但是本文章主要是针对免费用户的,所以笔者这边介绍一个免费的插件:Role-based Authorization Strategy。这个插件的具体配置,笔者就不在这里赘述了,具体请参照插件的说明。

下面,笔者给大家说一下这个插件的小技巧:

  • role item可以对folder/job进行权限设置(Manage Jenkins -> Manage And Assign Roles -> Manage Roles)
  • 多层次folder配置权限,必须每个层级都配置一次权限


  • 点击pattern的条目,可以看到正则表达式匹配的job



  • 双击修改匹配的正则表达式的条目,可以进行修改




Role-based Authorization Strategy的高级使用

如果公司项目组太多,要处理的分组太多,这个往往要耗费大量时间在这个人员管理上。而且Role-based这个工具,配置起来其实是相当麻烦的。

笔者在这里提供两个方案。

  1. 可以使用“Role Strategy Macros”这个功能,创建自己的Macro,这个可以参考Role-based这个插件的代码,里面有一些简单的例子,如:@BuildableJob这个macro。笔者之前尝试过写这样的macro,但是发现有巨大的坑,而且是比较熟悉Jenkins的源码才能比较快的写出相应的macro。所以笔者这里也不建议读者用这种方法,但是如果读者Java技术很强,有兴趣研究Jenkins源码的话,去尝试一下,也是个不错的选择。
  2. 使用Role-based Authorization Strategy提供的api。大家没有看错,这个插件有自己的API!!!!!笔者一开始的时候,查阅了这个插件的所谓文档,发现根本就没有关于API的描述,所以很绝望。本来打算直接模拟页面POST的操作的,但是要花费大量的开发时间,而且还不一定稳定,所以就放弃了。直到笔者看看了这个插件的源码,发现原来源码上有相关的API的注释!!!!!!
    这些都是笔者辛苦研究出来的,所以脚本就不共享了。具体大家可以参考开源代码里面的注释:
    https://github.com/jenkinsci/role-strategy-plugin/blob/master/src/main/java/com/michelin/cio/hudson/plugins/rolestrategy/RoleBasedAuthorizationStrategy.java

总结

Jenkins集中了很多人的智慧,大家其实可以在里面学到很多东西。如果有兴趣的话,读者可以自行寻找Jenkins的源码,认真研读。

笔者下一篇想写一下Jenkins关于shared library的文章。敬请期待。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接