DevOps 工具链暴露面是什么
研发工具链(Jenkins、GitLab、Nexus、SonarQube、制品与镜像仓库)是内网高价值目标:它们掌握代码、凭据与发布权限,被入侵后可直接向生产推送内容。管理界面原则上不应直接面向公网,远程访问统一走接入通道;同时要关闭匿名访问与自助注册,管控访问令牌。
基本信息
| 主要工具 | CI 服务、代码仓库、制品库、代码质量平台、镜像仓库 |
|---|---|
| 收敛原则 | 管理界面不对公网开放;远程访问走 VPN 或堡垒机 |
| 账号治理 | 接入统一身份(SSO),关闭自助注册 |
| 凭据治理 | 访问令牌集中管理、定期轮换、最小权限 |
常见入口与默认端口
| 工具 | 端口 | 收敛要点 |
|---|---|---|
| Jenkins | 8080 | 内网 + SSO;收紧脚本权限 |
| GitLab | 443 | 注册关闭;管控令牌 |
| Nexus | 8081 | 匿名关闭;初始口令流程 |
| SonarQube | 9000 | 内网访问;令牌轮换 |
| 镜像仓库 | 443/5000 | 认证 + TLS;项目私有 |
暴露核查示例
暴露核查示例
curl -sk -o /dev/null -w '%{http_code}\n' https://jenkins.example.com/login # 外部可达性(授权范围内)
curl -s --max-time 3 http://<内网IP>:8080/api/json | head -c 200 # 是否允许匿名读取
# 端口探测确认管理入口暴露状态;核查应在获批范围内进行典型使用场景
- 暴露面巡检:确认工具链域名是否可在公网直接访问
- 工具链整合:把分散在各团队的自建服务纳入统一入口与SSO
- 权限治理:梳理谁能触发构建、谁能发布到生产
- 供应商与外包接入:为外部人员开设独立受限账号,而非共用
- 事件排查:确认是否有异常的构建记录或令牌使用
风险项与处置
| 风险项 | 后果 | 处置 |
|---|---|---|
| 公网可达 | 爆破与漏洞利用首当其冲 | 网络层收敛,走接入通道 |
| 匿名可读 | 构建参数与凭据 ID 泄露 | 关闭匿名,收敛权限 |
| 自助注册开放 | 任何人都能进入内网工具 | 关闭注册,由管理员开通 |
| 令牌长期不轮换 | 一次泄露长期有效 | 定期轮换并记录归属 |
工具链被入侵的危害是放大式的:从 CI 到生产发布只有一条流水线的距离,因此它的定级应按生产系统而不是内部工具来处理。
同类工具往往在多个团队各建一套:治理时要先做一次完整盘点,否则收敛完一套,另一套仍在公网上。