在 CentOS 上配置 Jenkins 权限管理
一 基础安全与运行账户
- 使用普通用户运行 Jenkins,避免以 root 启动:编辑 /etc/sysconfig/jenkins,设置 JENKINS_USER=jenkins,并将相关目录归属调整为该用户(如 /var/lib/jenkins、/var/cache/jenkins、/var/log/jenkins),随后重启服务。为降低风险,目录权限可设为 755(仅必要目录按需放宽)。
- 开放访问端口(默认 8080):执行
sudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload。
- 如启用 SELinux,为 Jenkins 主目录设置正确的类型上下文(例如
jenkins_home_t),执行:sudo semanage fcontext -a -t jenkins_home_t "/var/lib/jenkins(/.*)?" && sudo restorecon -Rv /var/lib/jenkins。
- 安全建议:不要以 root 运行 Jenkins;变更运行用户或目录权限后务必重启服务以生效。
二 全局安全与认证配置
- 进入 Manage Jenkins → Configure Global Security:勾选 Enable security;在 Security Realm 选择认证方式(如 Jenkins’ own user database 或 LDAP 等);在 Authorization 选择授权模型(见下一节两种方案);建议关闭 Allow anonymous read access 以强制登录。
- 用户管理:在 Manage Users 中创建账号,后续按角色进行授权。
三 授权模型选择与配置
- 基于角色的权限控制(推荐):安装插件 Role-based Authorization Strategy;在 Manage and Assign Roles 中配置:
- 全局角色:如 admin(全权限)、common-user(仅 Overall/Read 等只读权限);
- 项目角色:用正则匹配项目名(如 *^frontend-.、^dev-.、^prod-. **),为不同团队分配 Job/Build、Job/Read、Job/Configure、Workspace/Read 等细粒度权限;
- 在 Assign Roles 将用户/组绑定到对应全局角色与项目角色,实现“最小权限”。
- 矩阵式权限(简单场景):在 Authorization 选择 Matrix-based security,直接为用户/组勾选权限(如 Job/Build、View/Read 等),适合用户规模较小、权限模型简单的环境。
四 项目与视图的访问控制实践
- 按命名空间划分项目并用正则匹配分配权限:例如开发组仅对 dev-* 有构建与查看权限,测试组对 test-* 有构建/取消/查看权限,运维对 prod-* 仅有查看或受限发布权限。
- 结合 View(视图)进行可见性隔离:创建团队视图,仅展示匹配的项目,减少误操作和信息泄露。
- 在 Assign Roles 中为用户/组精确分配对应项目角色,避免越权。
五 验证 备份与维护
- 验证:以不同角色账号登录,验证是否能按策略进行查看、构建、配置等操作;逐步收紧权限并回归测试,确保流水线与任务不受影响。
- 备份:定期备份 /var/lib/jenkins(至少包含 config.xml 与 jobs/),变更前先备份,变更后及时回归验证。
- 维护:保持 Jenkins 与插件 更新,及时修复权限相关安全漏洞;生产环境优先采用 Role-Based Strategy 并遵循最小权限原则。