Jenkins 用户权限管理终极指南

Jenkins 用户权限管理终极指南

一、 核心理念

现代 Jenkins 为了安全,默认强制启用安全机制。我们不再需要“开启安全”,而是直接进行配置。权限管理围绕两大核心:

  1. 认证 (Authentication): 你是谁? — 通过 安全域 (Security Realm) 进行配置,决定用户如何登录。
  2. 授权 (Authorization): 你能做什么? — 通过 授权策略 (Authorization Strategy) 进行配置,决定用户登录后拥有哪些权限。

主配置入口: 系统管理 (Manage Jenkins) -> 全局安全配置 (Configure Global Security)


二、 认证配置 (你是谁?)

全局安全配置 页面,找到 安全域 (Security Realm) 部分。这里决定了用户登录 Jenkins 的方式。

选项 1:Jenkins 专用用户数据库 (默认 & 新手推荐)

这是最简单直接的方式,所有用户信息都存储在 Jenkins 内部。

  • 配置:
    1. 安全域 下拉菜单中选择 Jenkins 专用用户数据库
    2. 强烈建议取消勾选 允许用户注册 (Allow users to sign up),以防任何人都能随意创建账号。
  • 用户管理:
    • 管理员需在 系统管理 -> 管理用户 (Manage Users) 中手动创建、删除或修改用户。
选项 2:通过插件扩展更多认证方式 (企业级推荐)

要连接企业用户系统 (如 LDAP) 或第三方平台 (如 GitHub),需要先安装插件。

  • 安装步骤:
    1. 进入 系统管理 -> 插件管理 (Manage Plugins) -> Available plugins 标签页。
    2. 根据需求搜索并安装插件,例如:LDAP, GitHub Authentication, GitLab Authentication
    3. 安装后,根据提示重启 Jenkins。
  • 配置:
    1. 重启后,回到 全局安全配置 -> 安全域
    2. 在下拉菜单中选择你刚刚安装的选项 (如 LDAP) 并填写相关配置。

三、 授权配置 (你能做什么?) - 权限管理核心

全局安全配置 页面,找到 授权策略 (Authorization Strategy) 部分。

重要提示: Jenkins 默认的 登录用户可以做任何事 策略意味着任何登录用户都是管理员,这存在巨大安全风险。必须将其更换为更安全的策略。

策略一只做简单介绍
策略二是我正在使用的策略


策略一:安全矩阵 (Matrix-based security) - 基础选项

这是一种直观的表格化权限管理方式,适用于用户和项目数量不多,权限结构简单的场景。

  • 简介: 在一个二维表格中,直接为每个用户(行)勾选其拥有的权限(列)。
  • 优点: 设置简单,一目了然。
  • 缺点: 当用户和项目增多时,表格会变得异常庞大,难以维护和审计。
  • 关键操作: 选择此策略后,第一步务必先将自己的管理员账号加入矩阵,并授予 Administer 最高权限,然后再进行其他配置,最后点击保存。

前提:检查核心安全插件是否已安装
如果您在 授权策略 的下拉列表中看不到 安全矩阵 (Matrix-based security)这个选项,说明您需要先安装它的功能插件。

  1. 进入插件管理: 系统管理 -> 插件管理 -> Available plugins
  2. 搜索并安装: 搜索 Matrix Authorization Strategy Plugin 并安装。
  3. 重启 Jenkins

策略二:基于角色的策略 (Role-based Strategy) - 推荐的高级选项

安全矩阵 变得难以管理时,Role-based Strategy 插件是最佳解决方案。它通过引入“角色 (Role)”这一中间层,将用户与具体权限解耦,实现了高效、可扩展的权限管理。

第 1 步:安装插件
  1. 在 Jenkins 主界面,点击 系统管理 (Manage Jenkins) -> 插件管理 (Manage Plugins)
  2. 切换到 Available plugins (可选插件) 标签页。
  3. 在右上角的搜索框中输入 Role-based Authorization Strategy
  4. 勾选该插件并安装,然后根据提示重启 Jenkins。
第 2 步:启用策略
  1. 回到 系统管理 -> 全局安全配置 -> 授权策略
  2. 在下拉菜单中,选择新出现的 Role-based Strategy
  3. 点击页面底部的 保存 (Save)
    在这里插入图片描述
第 3 步:进入角色管理界面

启用策略后,系统管理 菜单下会出现一个新的管理入口:
Manage and Assign Roles
点击进入,你将看到权限配置的核心界面。

第 4 步:创建角色 (Manage Roles) - 定义权限模板

在这里,我们不直接给用户权限,而是创建带有权限集合的“角色”。

  1. 创建全局角色 (Global roles):

    • 用途: 定义与具体项目无关的全局性权限。
    • 操作:
      • Global roles 下方的 Role to add 输入框中,输入角色名,例如 admin,点击 Add
      • 在权限列表中,为 admin 角色勾选 Overall 分类下的 Administer 权限。
      • 再创建一个 viewer 角色,只为其勾选 Overall 下的 Read 权限。
        在这里插入图片描述
  2. 创建项目角色 (Item roles):

    • 用途: 定义针对一个或多个项目的特定权限。这是该插件最强大的功能
    • 核心功能: 使用 Pattern 字段,通过正则表达式匹配 Job 名称。
    • 操作:
      • Item roles 下方的 Role to add 输入框中,输入角色名,例如 project-api-dev,点击 Add
      • Pattern 字段: 填写 ^project-api-.*。这个表达式的含义是“匹配所有以 project-api- 字符串开头的 Job 名称”。
      • Permissions: 为这个角色勾选项目相关的权限,例如 Job 分类下的 Build, Configure, Read, Workspace
        在这里插入图片描述

Agent Roles可以暂时不用理会

第 5 步:分配角色 (Assign Roles) - 将权限赋予用户

在这里,我们将之前创建好的角色“贴”到具体的用户或用户组身上。

  1. 分配全局角色 (Global roles):

    • User/group to add 输入框中,添加你的管理员用户名 (如 admin)。
    • 在表格中,为 admin 用户勾选 admin 角色。
    • 找到 authenticated 用户组(代表所有已登录的用户),为其勾选 viewer 角色。这样确保了所有登录用户至少拥有全局只读的权限。
      在这里插入图片描述
  2. 分配项目角色 (Item roles):

    • User/group to add 输入框中,添加需要此权限的开发者用户名 (如 dev_user1, dev_user2,用户需要先在 系统管理-管理用户 下进行创建)。
    • 在表格中,为 dev_user1dev_user2 勾选 project-api-dev 角色。save保存
      在这里插入图片描述
      至此一个简单权限控制就完成了

四、 总结与黄金法则

  1. 安全永在: 现代 Jenkins 安全默认开启,你的任务是配置,而非开启。
  2. 先保自己: 无论切换何种授权策略,第一要务是确保你自己的管理员账号拥有最高管理权限
  3. 最小权限: 始终遵循最小权限原则,只授予必要的权限。
  4. 由简入繁: 团队小,用 安全矩阵;团队大,项目多,果断上 Role-based Strategy 插件。
  5. 善用组/角色: 优先将权限赋予“角色”或“用户组”,而不是单个用户,极大简化人员变动时的权限调整。
  6. 插件是翅膀: Jenkins 的核心功能有限,学会通过插件来扩展其认证和授权能力。
  7. 定期审计: 定期检查用户权限,移除不再需要的账号和权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值