阅读量:61
CentOS Jenkins配置中的安全设置
1. 启用全局安全配置
进入Jenkins管理界面(Manage Jenkins → Configure Global Security),勾选“Enable security”(启用安全)。这是Jenkins安全的基础,未启用时所有用户可无限制访问。启用后需配置安全领域(身份验证)和授权(权限控制)两大核心模块。
2. 配置安全领域(身份验证)
安全领域决定用户身份信息的来源,常见选项:
- Jenkins自身用户数据库(默认):适合小型团队,用户信息存储在Jenkins本地,可通过“Manage Users”创建/管理用户;
- LDAP集成:适合企业环境,将身份验证委托给企业LDAP服务器(需安装LDAP插件),实现统一用户管理;
- 第三方认证(如GitHub、GitLab):通过OAuth实现单点登录(SSO),提升用户体验和安全性。
3. 配置授权策略(权限控制)
授权策略决定用户/组对Jenkins资源的访问权限,推荐以下两种方式:
- 基于角色的访问控制(Role-Based Strategy):需安装
Role-based Authorization Strategy插件,支持创建三类角色:- Global roles(全局角色):定义用户对Jenkins整体的权限(如管理员、普通用户);
- Project roles(项目角色):按项目分配权限(如某用户仅能访问“dev-frontend”项目);
- Node roles(节点角色):控制用户对构建节点(Agent)的访问权限;
- 矩阵授权策略:通过“Matrix-based security”设置用户/组的权限列表(如读、写、构建、取消构建等),适合简单场景。
4. 强化系统级安全
- 修改默认端口:编辑
/etc/sysconfig/jenkins文件,修改JENKINS_PORT(如改为8081),避免默认端口(8080)被扫描攻击; - 配置防火墙:使用
firewall-cmd开放Jenkins端口(如sudo firewall-cmd --permanent --add-port=8081/tcp),并重载防火墙规则(sudo firewall-cmd --reload); - 禁用匿名访问:在“Configure Global Security”的“Authorization”部分,取消勾选“Anonymous user may access Jenkins”,避免未登录用户查看敏感信息;
- 限制su命令:编辑
/etc/pam.d/su文件,添加auth required pam_wheel.so use_uid,仅允许wheel组用户使用su切换root,减少root权限滥用风险。
5. 安全存储敏感信息
使用Credentials Binding插件或Jenkins Credentials功能,将API密钥、数据库密码、私钥等敏感信息加密存储。在作业配置中通过${VAR_NAME}引用,避免敏感信息硬编码在脚本或配置文件中。
6. 防止CSRF攻击
在“Configure Global Security”的“CSRF Protection”部分,保持“Enable CSRF Protection”开启(默认开启)。Jenkins会生成CSRF令牌,验证请求的合法性,防止恶意用户伪造请求执行危险操作(如删除作业、修改配置)。
7. 定期更新与备份
- 更新Jenkins及插件:定期检查Jenkins更新(
Manage Jenkins→Manage Plugins→Available),升级到最新稳定版,修复已知安全漏洞; - 备份JENKINS_HOME目录:
JENKINS_HOME(默认/var/lib/jenkins)包含作业配置、构建日志、凭据等关键数据。可通过cron定时任务或插件(如ThinBackup)定期备份,建议备份到异地或云存储。
8. 其他安全最佳实践
- 强化用户口令:强制用户设置复杂密码(包含大小写字母、数字、特殊字符,长度≥8位),可在“Manage Jenkins” → “Configure Global Security” → “Password Policy”中配置;
- 禁用不必要的服务:关闭Jenkins不需要的功能(如远程访问、不必要的插件),减少攻击面;
- 使用SSL加密通信:通过Let’s Encrypt申请免费SSL证书,配置Jenkins使用HTTPS(
Manage Jenkins→Configure Global Security→Enable SSL),避免数据传输过程中被窃取。