1. 课程导论:什么是自动化Runbook,为什么需要联动GitLab CI,课程目标与前置知识

1.1 什么是自动化Runbook

自动化Runbook是一套可编程、可重复执行的操作手册,它将传统运维人员手动执行的故障恢复、变更部署、安全巡检等流程,转化为由代码或脚本驱动的自动化工作流。与静态的Word/Confluence文档不同,自动化Runbook具备以下核心特征:

  • 可执行性:Runbook可以直接在自动化引擎(如Ansible、AWX、Rundeck、GitLab CI)中触发,无需人工逐条阅读指令。
  • 版本化:Runbook的每一次变更都记录在Git仓库中,支持回滚、审计和协作评审。
  • 可观测性:执行过程中的日志、状态码、输出结果被自动采集,便于事后分析和告警。
  • 安全嵌入:Runbook在执行时动态获取临时凭证,避免硬编码密钥,并遵循最小权限原则。
关键认知: 自动化Runbook不是“把文档里的步骤写成脚本”,而是将运维知识、安全策略和CI/CD管道深度融合,形成“策略即代码”的闭环。

1.2 为什么需要联动GitLab CI

GitLab CI不仅是持续集成/持续部署工具,它本身就是一个强大的自动化Runbook引擎。将Runbook与GitLab CI联动,可以解决传统运维中的三大痛点:

痛点 传统方式 联动GitLab CI后的改进
权限碎片化 运维人员手动登录服务器,使用共享root密码或长期SSH密钥 通过GitLab CI Job + Vault动态获取临时凭证,执行后自动吊销
流程不可追溯 操作记录依赖人工日志,难以审计 每次Runbook执行都对应一个Pipeline Job,完整记录环境变量、执行日志和产物
安全策略滞后 安全规则写在Wiki里,靠人自觉遵守 安全扫描、密钥检测、合规检查作为Runbook前置Stage,不通过则阻断执行

联动GitLab CI后,Runbook的触发方式也变得更加灵活:

  • 事件驱动:当Git仓库发生特定变更(如Tag推送、MR合并)时自动触发Runbook。
  • 手动触发:运维人员通过GitLab UI或API手动启动Runbook,并传入参数。
  • 定时执行:通过Pipeline Schedule实现每日/每周的安全巡检Runbook。
自动化Runbook联动GitLab CI核心架构 GitLab CI 管道 Stage 1: 安全扫描 Stage 2: 密钥检测 Stage 3: 合规检查 Stage 4: 执行Runbook Runbook 仓库 故障恢复.yml 安全巡检.yml 证书轮换.yml 目标环境 Kubernetes 集群 云服务器 (ECS/EC2) 数据库实例 CDN / 负载均衡 Runbook 存储在Git仓库中,通过GitLab CI管道执行安全前置检查后,自动下发到目标环境

1.3 课程目标

完成本课程后,学员将具备以下能力:

  1. 设计安全Runbook结构:掌握如何在GitLab仓库中组织Runbook目录,区分公共Runbook、环境专属Runbook和敏感操作Runbook。
  2. 配置最小权限CI Job:熟练使用CI_JOB_、id_tokens、Vault集成和自定义角色,确保每个Runbook Job只拥有执行所需的最小权限。
  3. 实现安全扫描前置:在Runbook执行前自动集成SAST、密钥检测(gitleaks/trufflehog)和合规策略检查,不符合条件则阻断管道。
  4. 构建审计与追溯体系:利用GitLab的审计日志、Pipeline报告和制品归档,实现Runbook执行全链路可追溯。
  5. 实战落地:通过至少3个真实场景(数据库密码轮换、K8s故障自愈、安全基线巡检)完成从Runbook编写到CI管道配置的完整闭环。

1.4 前置知识

为了确保学习效果,建议学员具备以下基础:

知识领域 具体要求 推荐学习资源
GitLab CI 基础 理解.gitlab-ci.yml基本结构、Job/Stage/Runner概念 GitLab官方CI快速入门
Shell / Python 脚本 能编写简单的自动化脚本,理解变量、条件判断、错误处理 《Linux命令行与Shell脚本编程大全》
容器基础 了解Docker镜像构建、容器运行、docker exec基本操作 Docker官方文档
安全基础概念 了解最小权限原则、临时凭证、密钥管理的基本思想 OWASP Top 10 / 零信任安全模型
学习建议: 如果你对GitLab CI还不太熟悉,建议先花2小时完成GitLab官方“CI/CD Quick Start”教程。本课程会从基础概念讲起,但不会重复解释before_script和artifacts等基础语法。

1.5 课程内容概览

本课程共分为6个模块,30个章节,从基础概念到高级实战逐步深入:

  • 模块一(第1-5章):自动化Runbook基础与GitLab CI安全模型
  • 模块二(第6-12章):Runbook仓库结构设计与权限规划
  • 模块三(第13-19章):安全扫描与合规检查集成
  • 模块四(第20-24章):动态凭证管理与Vault集成
  • 模块五(第25-28章):实战案例:密码轮换、故障自愈、安全巡检
  • 模块六(第29-30章):审计追溯与Runbook运维最佳实践
课程模块与知识体系关系 模块一:基础与安全模型 Runbook定义 · GitLab CI安全模型 Job · 最小权限原则 第1-5章 模块二:仓库与权限规划 Runbook目录结构 · 环境隔离 自定义角色 · 分支保护 第6-12章 模块三:安全扫描集成 SAST/DAST · 密钥检测 合规策略 · 阻断机制 第13-19章 模块四:动态凭证管理 Vault集成 · 临时密钥 OIDC认证 · 自动吊销 第20-24章 模块五:实战案例 数据库密码轮换 K8s故障自愈 · 安全巡检 第25-28章 模块六:审计与最佳实践 审计日志 · 追溯体系 Runbook运维规范 第29-30章
重要提示: 本课程所有实战章节均提供完整的.gitlab-ci.yml和Runbook脚本示例。建议学员在个人或测试GitLab实例上同步操作,不要直接在生产环境执行未经测试的Runbook。