实现方式
基于Jenkins的 “CAS Plugin” 和 “Role-based Authorization Strategy”插件实现
CAS Plugin: 该插件支持使用CAS作为身份验证源,以支持单点登录(SSO)。一般的,企业都会有 这么一个服务,提供企业 统一身份管理,比如 百度的UUAP等。
Role-based Authorization Strategy*: 使用基于角色的策略启用用户授权。角色可以全局定义,也可以为正则表达式选择的特定作业或节点定义。这样可以基于任务纬度进行权限的管理。
配置详情
主要是5步:
1.Jenkins插件安装
2. 为Jenkins配置域名和VIP
3.在企业的统一身份管理平台申请权限;
4.Jenkins配置CAS登录
5.配置角色策略
1.Jenkins插件安装
一般的,可以通过Jenkins的插件管理进行安装插件,安装完毕后,需要重启 Jenkins ,重启后,在“插件管理–> 已安装”中确保插件已经生效。
系统管理–> 插件管理
2. 为Jenkins配置域名和VIP
- 为Jenkins 配置一个VIP,VIP 自身需要是80端口
- 后端的Jenkins 端口随意
- 然后为VIP绑定一个域名
- 修改Jenkins的"Jenkins URL"为前面申请的域名(这个很重要,Jenkins在调企业的统一认证时,认证平台是根据这个域名进行校验的)
为什么需要这么做?
当然,也可以不用配置域名,不用配置VIP,主要得看 你们企业统一身份管理平台 的要求。重点是:如果需要使用域名,那么就需要 通过域名可以直接访问 jenkins,不用加端口。不然,在使用 企业统一身份管理平台登录后,无法跳转到Jenkins(因为 企业统一身份管理平台 是直接用域名跳转过去的,无法配置端口。)
3.在企业的统一身份管理平台申请权限
这个可以去参考企业的权权限申请,一般的,需要指定域名的。
4.Jenkins配置CAS登录
4.1 系统管理 --> 全局安全配置 --> 安全域
在“安全域”中选择"CAS “,然后需要填写 “CAS Server URL” 和 “CAS Protocol”。其中,
- “CAS Server URL“就是企业统一身份管理平台提供CAS登录的地址,注意:填写到"login/"之前的内容即可;
- “CAS Protocol” 版本 需要选择合适的版本,这个根据 企业统一身份管理平台 提供的 进行选择,注意的是:根据 Jenkins的说明 不知道时,选择 3.0版本,这样做是不行的,协议版本并不是兼容。
4.2 系统管理 --> 全局安全配置 --> 授权策略
这里你可以选择 “登录用户可以做任何事”,这样任何用户登录都可以操作Jenkins。到这里,已经可以 通过 “使用企业权限”进行登录Jenkins了。你可以退出,再登录测试下。
或者使用“Role-based Authorization Strategy” 进行角色分配
4.3 使用“Role-based Authorization Strategy” 进行角色分配
4.3.1 系统管理 --> 全局安全配置 --> 授权策略
选择 Role-Based Strategy
4.3.2 系统管理–> Manage and Assign Roles
需要先配置“Manage Roles”,再配置“Assign Roles”
先配置一个 developer ,它有全局只读权限
配置一些Job的组,用于哪些用户可以使用 哪些 Job,可以使用正则匹配进行筛选
点击 “Assign Roles”进行角色分配
你需要把你自己配置到 admin的全局角色中,这个切记,不然 你保存后,就没admin用户了。
然后你还可以给其他人新增,这个新增的就是 你企业登陆的地址,一般是邮箱前缀。
然后给用户增加 Job操作权限。
保存后,即可尝试。
问题处理
1.配置错误导致无法登陆,如何解决?
- 关掉jenkins
- 找到 Jenkins的家目录,一般是:~/.jenkins
- vim .jenkins/config.xml,安全里修改为 false
- 保存后,启动Jenkins即可,这样,就不需要使用密码就能登录Jenkins 了。
- 然后 系统管理 --> 全局安全配置 选择 如下内容,这样你就又回到了最开始的admin登录了。