随着产品线不断扩大, 工程也越来越多, 几乎每个项目在一个环境上会有两个以上的工程, 后期上百个工程, 而且一个账号可以构建、删除、修改所有的工程。 这种情况下会经常发生误删、误改、误构建的事件,进行权限管控能够大量杜绝这样的事件发生
本例子是当前最新的版本 V2.91, 版本越高功能越完善, 建议使用最新版本部署, 低版本视图功能不完善, 在首页可以看到所有项目的工程, 项目一多就很慢
- 本例子根据公司人员职责范围进行的权限划分: 测试、开发、运维
- 测试只能构建非生产环境指定项目的工程
- 开发只能构建与配置非生产环境指定项目的工程
- 运维拥有所有权限
-
安装权限管控,进入
系统管理
页面,点击管理插件
, 过滤Role-based Authorization Strategy
, 勾选后,直接安装
-
回到
系统管理
页面, 点击全局安全配置
-
如下图,
授权策略
选择Role-Based Strategy
, 点击保存
-
回到
系统管理
页面, 列表中多了一个Manage and Assign Roles
, 点击进入该功能页面
配置全局角色
全局角色粒度太大,一定要分配置一个
Read
权限, 否则无法登陆
job_create
: 可以创建工程并且可以对视图进行操作
job_role
: 可以对视图进行操作
权限类型:
Overall
: 全局
Credentials
: 凭证
View
: 视图
Job
: 任务
- 配置
Project roles
, 一共配置三个角色开发者、测试、运维, 点击Add进行添加
Role to add
: 角色名称
Pattern
: 正则表达式, 权限控制范围
- 三个角色配置完成后:
jenkins-demo-devel-role: jenkins-demo-.*(dev|sit|uat)
jenkins-demo-test-role: jenkins-demo-.*(dev|sit|uat)
jenkins-demo-oper-role: jenkins-demo-.*
JOB(工程)主要权限
Build
: 构建
Cancel
: 取消构建
Configure
: 配置
Delete
: 删除
Read
: 浏览
Workspace
: 工作空间
-
点击保存,回到
系统管理
页面, 点击管理用户
-
点击
新建用户
, 分别添加三个用户开发者、测试、运维
jenkins-demo-devel
、jenkins-demo-test
、jenkins-demo-oper
回到
系统管理
页面,Manage and Assign Roles
>Assign Roles
给三个用户分配全局角色
- 给三个用户分配工程角色
点击保存完成配置
-
测试账号登陆, 只有构建与查看权限,并且看不到生产环境的工程
-
开发账号登陆, 除了生产环境的工程看不到, 其它环境的工程都可以查看,删除,修改和构建
-
运维账号拥有所有环境的权限
- 如果项目庞大, 我们可以通过视图限制, 点击
My Views
- >新建视图
My Views 里面创建的视图只有当前账户可以看得到, 而首页里新建的视图所有账户都可以看到, 一但项目多起来将毫无意义, 非常的混乱
我的视图
: 只能显示当前账号有权限的工程
简单视图
: 可以选择当前账号显示的工程
-
选择简单视图, 创建一个开发环境的视图
-
创建完成后只能看到刚才选择的工程, 还有个好处就是可以收藏当前视图的URL地址, 下次可以直接进来, 非常方便
- 如果勾选错了, 导致admin也无法登陆, 可以尝试下面的方法
- 修改全局角色admin角色, 恢复到原始状态
- 修改${jenkins_home}/config.xml, 如果用yum 安装直接
vim /var/lib/jenkins/config.xml
- 找到
<roleMap type="globalRoles">
节点, 把<role name="admin" pattern=".*">
这个节点全部替换成初始的admin角色权限
- 修改${jenkins_home}/config.xml, 如果用yum 安装直接
- 修改全局角色admin角色, 恢复到原始状态
- 这是admin角色初始的权限
<role name="admin" pattern=".*">
<permissions>
<permission>hudson.model.View.Delete</permission>
<permission>hudson.model.Computer.Connect</permission>
<permission>hudson.model.Run.Delete</permission>
<permission>com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains</permission>
<permission>hudson.model.Computer.Create</permission>
<permission>hudson.model.View.Configure</permission>
<permission>hudson.model.Computer.Build</permission>
<permission>hudson.model.Item.Configure</permission>
<permission>hudson.model.Hudson.Administer</permission>
<permission>hudson.model.Item.Cancel</permission>
<permission>hudson.model.Item.Read</permission>
<permission>com.cloudbees.plugins.credentials.CredentialsProvider.View</permission>
<permission>hudson.model.Computer.Delete</permission>
<permission>hudson.model.Item.Build</permission>
<permission>hudson.scm.SCM.Tag</permission>
<permission>hudson.model.Item.Move</permission>
<permission>hudson.model.Item.Discover</permission>
<permission>hudson.model.Hudson.Read</permission>
<permission>com.cloudbees.plugins.credentials.CredentialsProvider.Update</permission>
<permission>hudson.model.Item.Create</permission>
<permission>hudson.model.Item.Workspace</permission>
<permission>com.cloudbees.plugins.credentials.CredentialsProvider.Delete</permission>
<permission>hudson.model.Computer.Provision</permission>
<permission>hudson.model.Run.Replay</permission>
<permission>hudson.model.View.Read</permission>
<permission>hudson.model.View.Create</permission>
<permission>hudson.model.Item.Delete</permission>
<permission>hudson.model.Computer.Configure</permission>
<permission>com.cloudbees.plugins.credentials.CredentialsProvider.Create</permission>
<permission>hudson.model.Computer.Disconnect</permission>
<permission>hudson.model.Run.Update</permission>
</permissions>
<assignedSIDs>
<sid>admin</sid>
</assignedSIDs>
</role>