Jenkins的授权策略有非常多种,我习惯用基于角色的授权策略,这里记录下配置的一些细节。

我使用的Jenkins版本:2.375.2

安装插件

进入插件安装页面:Dashboard → Manage Jenkins → Plugin Manager → Available plugins,搜索 “Role-based”,选择 Role-based Authorization Strategy 插件,点击 Download now and install after restart 进行安装。

安装插件

配置授权策略

进入配置全局安全页面:Dashboard → Manage Jenkins → Configure Global Security, 修改 Authorization 配置,选择 Role-Base Strategy,点击 Apply 按钮应用配置。

配置授权策略

创建角色

插件提供了三种类型的角色。

类型备注
全局角色(Global roles)适用于管理员,可以跨越全部项目进行授权
项目角色(Item roles)适用于给用户按项目分配权限的场景
节点角色(Agent roles)适用于集群管理,对节点进行分配权限(我还没有实践过,查资料得到的结论

全局角色的权限会覆盖项目角色的权限,如果一个用户给了全局权限,即使项目权限没有给,该用户也会拥有该权限。并且由于全局角色是跨越全部项目的,如果设置不得当,会让用户不受项目角色控制,可以操作全部项目。

创建全局角色

进入配置页面:Dashboard → Manage Jenkins → Manage and Assign Roles → Manage Roles,找到 Global roles 配置。

配置全局角色步骤1

配置全局角色步骤2

对于管理员,建议直接勾选 Overall | Administer

对于一般的用户,希望按项目管理权限是,建议只勾选 Overall | Read ,其他的都不要勾选,如果不勾选 Overall | Read,用户登录后会显示空白页面,啥操作都做不了

创建项目角色

进入配置页面:Dashboard → Manage Jenkins → Manage and Assign Roles → Manage Roles,找到 Item roles 配置。

配置项目角色步骤1

配置项目角色步骤2

分配角色给用户

进入配置页面:Dashboard → Manage Jenkins → Manage and Assign Roles → Assign Roles

分配角色给用户

不能只给用户分配项目角色,必须要分配一个全局角色,全局角色包含 Overall | Read 权限,否则用户登录后会显示空白页面,啥操作都做不了。