温馨提示×

centos jenkins部署安全性如何保障

小樊
31
2025-12-21 16:45:57
栏目: 智能运维

CentOS 上部署 Jenkins 的安全保障要点

一 系统与网络加固

  • 保持系统与软件更新:执行 yum update -y,并定期更新 Jenkins 及插件,及时修复已知漏洞。
  • 最小化暴露面:仅开放必要端口,例如 8080/HTTP50000/Agent 通信,使用 firewall-cmd 精准放行;如对外服务,优先发布到内网或跳板机,仅放通管理网段。
  • 强化系统账户与登录安全:禁用不必要的超级用户与默认账户,设置 强口令策略(≥10 位,含大小写数字特殊字符),限制 su 使用范围,设置 TMOUT=300 自动注销,必要时禁用 Ctrl+Alt+Delete 重启。
  • 文件与权限防护:对关键文件(如 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow)设置不可变属性 chattr +i;限制 Jenkins 主目录与 secrets 的文件权限与属主,避免被非授权进程读取。
  • 运行环境隔离:遵循 最小权限原则,避免在 Jenkins 控制器上直接执行构建,优先在 代理节点运行任务,降低主机被攻陷风险。

二 Jenkins 身份与访问控制

  • 启用全局安全:在 Manage Jenkins → Configure Global Security 勾选 Enable security,禁用匿名访问,创建 管理员并设置强密码。
  • 认证方式:优先对接 LDAP/企业 SSO;如使用内置数据库,强制 强密码与周期性更换。
  • 授权模型:采用 Role-based Authorization StrategyMatrix Authorization,按“全局角色/项目角色”分配权限,做到“最小权限”与“职责分离”。
  • 安全特性:保持 CSRF 保护开启;谨慎调整默认安全项,变更前评估影响并在可控窗口实施。

三 数据安全 通信加密与凭据管理

  • 全站加密:为 Jenkins Web 启用 HTTPS/TLS,使用有效证书(如 Let’s Encrypt 或企业 CA),避免明文传输凭据与构建产物。
  • 凭据集中与加密:使用 Credentials Binding 等插件统一存储 用户名/密码、SSH 私钥、Secret 文件/文本 等敏感信息,避免在脚本或代码库硬编码。
  • 代理通信安全:确保 JNLP/WebSocketAgent→Controller 通信走 加密通道,并按需限制来源网段与端口。
  • 备份与恢复:定期备份 JENKINS_HOME(含 jobs、config.xml、secrets 等),验证可恢复性并异地留存。

四 构建环境与运行隔离

  • 控制器与代理分离:在 Manage Nodes and Clouds 将内置节点 执行器设为 0 或限制为“仅匹配标签的作业”,强制在代理节点构建,缩小攻击面。
  • 代理与容器安全:代理以 非 root 运行;如使用容器/虚拟化,控制镜像来源、启用 内容信任(DCT),并遵循最小权限原则。
  • 最小权限执行:在 Pipeline 中使用 agentstage agent 精确限定执行节点与权限范围,避免越权访问。
  • 审计与监控:开启并定期检查 系统日志、构建日志与审计日志,对异常登录、权限变更、凭据使用与构建异常进行告警。

五 快速加固清单

领域 关键动作 命令或路径示例
系统与网络 更新系统、仅开放 8080/50000、限制来源网段 firewall-cmd --permanent --add-port=8080/tcp; firewall-cmd --permanent --add-port=50000/tcp; firewall-cmd --reload
身份与授权 启用安全、禁用匿名、配置 LDAP/SSO、RBAC/Matrix 授权 Manage Jenkins → Configure Global Security
加密与凭据 启用 HTTPS、集中加密存储凭据 配置 TLS 证书;安装 Credentials Binding 插件
运行隔离 控制器不构建、代理非 root、容器最小权限 内置节点执行器=0;容器以 jenkins 非 root 运行
日志与备份 审计日志留存、定期备份 JENKINS_HOME 定时备份 /var/lib/jenkins 并异地保存

以上清单可作为上线前的安全基线,后续结合变更与合规要求进行复审与加固。

0