Ubuntu 上 Jenkins 权限控制实操指南
一 核心思路与准备
- 在 Ubuntu 上,Jenkins 的权限由两部分构成:
- 认证 Authentication:确认“是谁”(如 Jenkins 自有用户数据库、LDAP、Unix 用户/组数据库);
- 授权 Authorization:决定“能做什么”(如 Role-Based Strategy、Project-based Matrix Authorization Strategy)。
- 建议先完成基础环境与安全加固:安装 OpenJDK 11+、更新系统、仅安装必要插件、定期更新;生产环境启用 HTTPS/SSL 并配置防火墙(如放开 8080 端口)。
二 启用全局安全与选择授权模型
- 进入 Manage Jenkins → Configure Global Security,勾选 Enable security。
- 在 Security Realm 选择认证方式:
- Jenkins’ own user database(内置账户,便于快速落地);
- LDAP(企业统一账号);
- Unix user/group database(与操作系统账号联动)。
- 在 Authorization 选择授权策略(二选一或组合):
- Role-Based Strategy(基于角色,便于规模化与分环境管理);
- Project-based Matrix Authorization Strategy(矩阵式,按用户/组对项目逐项赋权)。
- 提示:首次启用安全时,为避免被锁,可短暂选择 Anyone can do anything,完成授权配置后再收紧。
三 基于角色的权限控制 RBAC 步骤
- 安装插件:进入 Manage Jenkins → Manage Plugins,搜索并安装 Role-based Authorization Strategy,安装后重启。
- 定义角色:进入 Manage Jenkins → Manage and Assign Roles → Manage Roles
- 创建 全局角色(如 admin、developer),分配如 Overall/Administer、Overall/Read 等;
- 创建 项目角色(如 project1_builder),在 Pattern 填写项目匹配正则(如 project1.*,匹配以 project1 开头的所有项目),分配 Job/Build、Job/Cancel、Job/Read 等。
- 分配角色:进入 Assign Roles,为用户/组绑定对应全局角色与项目角色。
- 验证:使用不同账号登录,确认 admin 具备全部权限,普通用户仅能访问被授权的项目与操作。
四 系统层面安全与运行用户
- 运行用户:默认以 jenkins 系统用户运行。为降低风险,可创建专用系统用户(如 jenkinsadmin),并在 /etc/default/jenkins 中设置 JENKINS_USER=jenkinsadmin 与 JENKINS_GROUP=jenkinsadmin,随后修正目录所有权并重启:
- sudo chown -R jenkinsadmin:jenkinsadmin /var/lib/jenkins /var/cache/jenkins /var/log/jenkins
- sudo systemctl restart jenkins
- 重要提醒:不建议以 root 运行 Jenkins;若因历史原因考虑改为 root,需充分评估安全影响并做好审计与隔离。
- 网络安全:生产环境启用 HTTPS/SSL(可用 Let’s Encrypt 免费证书),并通过 ufw 等防火墙仅开放必要端口(如 8080)。
五 快速排错与最佳实践
- 避免锁死:首次启用安全时保留一个具有 Overall/Administer 的紧急账号,或短暂使用 Anyone can do anything,完成授权后再收回。
- 权限验证:以不同用户登录,逐项验证 登录、查看、构建、取消、配置 等操作是否符合预期。
- 持续维护:定期更新 Jenkins 与插件、审查用户与角色、备份 JENKINS_HOME(含 jobs/、users/、config.xml 等),并对关键操作启用审计日志。