购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 权限管理

Jenkins的权限管理是一种安全实践,皆在控制平台上的不同租户对Jenkins项目的访问范围。若企业中存在若干项目组使用同一个Jenkins来进行CI/CD,则需要为每个项目组配置权限,减少误触发的情况。

在企业中通过创建Jenkins项目命名规范标准来识别不同组织的项目。Jenkins用户与权限图如图2-11所示,UserA属于devops团队,具有以devops为前缀的Jenkins项目的权限;UserB属于test团队,具有以test为前缀的Jenkins项目的权限。

图2-11 Jenkins用户与权限图

2.2.1 准备

为了后面演示权限管理的效果,笔者准备创建1个测试用户jenkins_user1和4个测试Jenkins项目。

导航到用户管理页面,添加测试用户jenkins_user1。添加测试用户后的系统用户列表如图2-12所示。

图2-12 添加测试用户后的系统用户列表

导航到新建任务页面,分别按照同样的步骤创建4个测试任务。项目创建页面如图2-13所示。

图2-13 项目创建页面

如图2-14所示,Jenkins项目分别是devops-app-service_STG、devops-app-service_TEST、test-app-service_STG和test-app-service_TEST。

图2-14 项目页面

2.2.2 安装Role-based插件

在Jenkins系统中,授权插件应用最广的是Role-based Authorization Strategy。导航到插件管理页面,单击“可选插件”选项卡,选择安装Role-based Authorization Strategy插件。安装插件后需重启Jenkins服务器以使其生效。插件管理如图2-15所示。

图2-15 插件管理

插件安装成功后,导航到“全局安全配置”页面,配置授权策略为Role-Based Strategy。然后单击“保存”按钮完成配置。全局安全配置的配置授权策略如图2-16所示。

图2-16 全局安全配置的配置授权策略

完成上面的配置后,再次导航到系统管理页面,可以看到新的选项“Manage and Assign Roles”,如图2-17所示。

图2-17 Jenkins系统管理页面之管理角色

选择图2-17所示的“Manage and Assign Roles”选项后,可以看到“Manage Roles”“Assign Roles”“角色策略宏”选项。Roles管理页面如图2-18所示。

图2-18 Roles管理页面

2.2.3 创建角色

在图2-18中选择Manage Roles进入管理角色页面,可以看到以下3种角色。

Global roles:全局权限配置,权限是由Item Roles和Node Roles组成的集合。

Item roles:项目级权限配置,配置项目权限。

Node roles:节点及权限配置,配置节点权限(用途很少,本节省略其示例)。

1.创建Global roles

创建Global roles为devopsdev,并分配开发人员常用的任务构建和配置权限。开发人员的权限在企业中基本上相同,后面所有项目组的开发人员都可以使用此角色。创建Global roles页面,如图2-19所示。

图2-19 创建Global roles页面

2.创建Item roles

创建Item roles为devops,使用正则表达式设置权限的作用范围。这里匹配的是项目名称以devops-开头并且以任意字符结尾的项目,将具有项目的Build、Cancel、Configure、Read权限,创建Item roles页面如图2-20所示。

图2-20 创建Item roles页面

2.2.4 授权角色

参考图2-18,进入Assign Roles页面。

1.授权Global roles

为jenkins_user1用户授权devopsdev全局角色,授权Global roles页面如图2-21所示。

图2-21 授权Global roles页面

2.授权Item roles

为jenkins_user1用户授权devops项目权限。授权Item roles页面如图2-22所示。

图2-22 授权Item roles页面

2.2.5 测试权限

使用jenkins_user1账号登入Jenkins,如果仅能看到devops相关的项目就表示成功实现了权限控制。每个项目组中的用户仅可操作所属项目组内的项目。Jenkins登录成功后首页如图2-23所示。

图2-23 Jenkins登录成功后首页

提示:

如果提示“Access Denied”,说明没有给用户分配Global roles中的全部Read权限。Jenkins用户无权限报错如图2-24所示。

图2-24 Jenkins用户无权限报错 1vrTsWxHHcSf6sLE4Roqdtcgu9o/pza+E7RNFdzj6ZXtDeagF0mrrVRyixrSrUik

点击中间区域
呼出菜单
上一章
目录
下一章
×