背景
公司研发人员和测试人员,还有运维人员有时候登录jenkins去查看一些job的状态或者是其他的东西,虽然有企业微信的通知,但是感觉还是不能满足, 比如job错误了,企业微信虽然吧错误发给了研发人员,但是研发还是要登录jenkins上去看,就感觉要舒服一点,测试上做的一些自动化测试,有时候失败了他们也会去看或者是去建立一些自动化的job。之前建立了公共的账号,开发和测试人员都去登录,但是有时候他们误操作了,导致一些其他的东西失败或者错误,虽然做了权限控制,但是他们还是死不承认,所以这里介入ldap。谁动的就知道了,这样就不怕了。
开始配置
登录jenkins——>系统管理——>全局安全配置
访问控制——>LDAP
配置完成以后我们需要测试一下连接是否正常,点击Test LDAP setttings
,输入在ldap的其中一个账户来进行验证,没问题的结果如下:
配置完成并测试通过后就可以用LDAP直接登录了
注: 启用了LDAP登录后将无法再用之前的登录方式(本地认证将无法在使用)登录,登录进来的任何一个账号都是管理员,都是管理着肯定来说不安全,权限配置请下看
配置ldap的账户权限
上面我们虽然吧ldap配置完成,但是我们需要对用户进行权限的配置,不可能每个人登录都能对我们jenkins进行无限制的操作,这不符合我们之前的意图。安装Role-based Authorization Strategy
插件
- 在系统管理——>全局安全配置,可以看到下面选项,每项介参考
保存以后,返回系统管理界面就可以看到多处一个Manage and Assign Roles
点击进去
- Manage Roles: 角色分为Global和Project,可创建角色分组和添加项目。
- Assign Roles: 增加具体的用户,分配到角色组,指定项目权限。
- 下面我的配置,和之前的大同小异
注: 这里有一个小问题,这样配置以后,新用户登录进来以后就会提示没有权限,Access Denied,xxxx没有全部/Read权限
,这是因为在打开jenkins后,没有创建用户前,先不要勾选系统设置中启用安全选项,如果勾选了,就会出现无法进入jenkins的现象
在网上看到有这种的解决办法,有几种方案,一个是修改confing.xml的文件,修改config.xml文件的三种方式感觉都不太切合实际的业务;下面是我做的两种办法,推荐使用第二种
Role-Based Strategy
在Assign Roles
吧用户添加进来,然后勾选权限,
系统管理——>Manage and Assign Roles——>Assign Roles
但是这有一个弊端,就是每次新来一个用户就得去添加一次用户权限,虽然满足了业务需求,但是不科学项目矩阵授权策略
这是一个全局的配置,特定组只能按照最小的权限授权,额外的权限可以在具体的项目权限矩阵里面在添加。 默认只有Anonymous Users
和Authenticated Users
,管理员组是需要添加的admin
Anonymous Users: 匿名用户,显然不能
Authenticated Users: 认证用户,就是只要是认证的账号都可以拥有的权限
admin: 就是拥有所有的权限了,这个组一般只能运维人员和部门老大加入。
加入admin组以后,他会自动去同步ldap的组用户,如果用户在ldap是admin组,那么在这里就会是管理员权限,如果用户是普通组,那么就是Authenticated Users
组赋予的权限,使用这种方式只要用户是ldap里面的,就可以登录查看。这样就满足了业务场景需求
日志记录
记录用户日志需要单独的安装Audit Trail
插件,该插件在Jenkins主配置页面中添加了一个配置部分,可以在此处配置日志位置和设置(文件大小和循环日志文件的数量),以及用于记录请求的URI模式。默认选项选择效果显着的大多数操作,例如创建/配置/删除作业和视图或永久删除/保存/开始构建。日志将按照配置写入磁盘,最近的条目也可以在“管理/系统日志”部分中查看。
Audit Trail官方参考
这里配置以后还不能记录job的日志,需要对job进行记录需要另外的安装Job Configuration History插件,根据官方的介绍,可用于查看所有作业配置历史记录或仅查看已删除的作业或所有类型的配置历史记录条目。同时,如果配置了安全策略,还可以查看哪个用户进行了哪些更改。
安装完成后,我们在job里面可以看到一个Job Config History
的菜单。最开始没有没有任何记录,只有当构建job或者修改过job以后才会有记录
- 点击Show Diffs 可以看到我们具体修改了什么东西
当我们安装好这个插件以后,也测试可以使用,但是我们不能让所有的job日志记录保存历史过久,如果job过多,记录过多,这会对我们的磁盘空间来说,肯定是一个压力,所以这里我们就需要进行配置,保存多少次的记录,而且还可以设置排除的文件。