Jenkins安全设置指南
Jenkins作为持续集成/交付(CI/CD)核心工具,其安全性直接关系到代码、凭证及系统稳定。以下是分层、实战化的安全设置方案,覆盖基础配置、权限管理、网络安全等关键环节:
进入Jenkins管理界面→「Manage Jenkins」→「Configure Global Security」,勾选“Enable security”(核心开关)。此设置强制所有用户通过身份验证,禁止匿名访问(除非特殊需求)。
选择「Security Realm」(安全域),推荐以下方式:
权限是安全的核心,推荐基于角色的访问控制(RBAC),避免权限过度分配:
限制Jenkins端口的访问范围,减少外部攻击面:
sudo firewall-cmd --permanent --add-port=8080/tcp # 默认HTTP端口
sudo firewall-cmd --permanent --add-port=443/tcp # HTTPS端口(可选)
sudo firewall-cmd --reload
sudo ufw allow 8080/tcp
sudo ufw enable
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="8080" protocol="tcp" accept')。避免数据传输被窃听,推荐使用Let’s Encrypt免费证书:
sudo apt install certbot python3-certbot-nginx(Debian/Ubuntu);sudo certbot --nginx -d jenkins.yourdomain.com;/etc/letsencrypt/live/jenkins.yourdomain.com/fullchain.pem和/etc/letsencrypt/live/jenkins.yourdomain.com/privkey.pem)。在「Configure Global Security」→「CSRF Protection」部分,勾选“Enable CSRF Protection”(默认开启)。如需兼容代理服务器,勾选“Enable proxy compatibility”。
使用「Credentials Binding Plugin」或「Jenkins Credentials Plugin」加密存储敏感信息(如Git密码、API密钥、SSH私钥):
withCredentials块引用凭据(如withCredentials([usernamePassword(credentialsId: 'git-creds', usernameVariable: 'GIT_USER', passwordVariable: 'GIT_PASS')]) { ... })。定期备份Jenkins主目录(默认/var/lib/jenkins),可使用rsync或tar命令:
sudo tar -czvf jenkins_backup_$(date +%F).tar.gz /var/lib/jenkins
备份文件存储在异地(如云存储),确保灾难发生时可快速恢复。
/etc/pam.d/common-password)设置密码复杂度要求(如至少8位、包含大小写字母、数字、特殊字符);/etc/pam.d/su,添加auth required pam_wheel.so use_uid,仅允许wheel组成员使用su切换到root。通过以上步骤,可构建多层次、全生命周期的Jenkins安全体系,有效防范未授权访问、数据泄露及恶意攻击。需根据团队规模(如小型团队可使用内置权限系统,大型企业推荐RBAC插件)和环境需求(如是否集成LDAP)调整配置。