AltSchool Of Engineering Tinyuka’24 第11月 第1周
Source: Dev.to
如果你错过了我们之前的课程,可以在这里补看。本周我们探讨了 持续集成 (CI)、变更管理 和 左移安全 如何结合,构成现代且安全的软件开发生命周期(SDLC)。
现代软件交付不再仅仅是编写代码——更在于代码以多快、 多安全、 多可靠的方式交付给用户。随着系统日益复杂、 安全威胁不断增加,组织必须重新思考如何集成代码、管理变更,并从第一天起就保障应用的安全。
持续集成 (CI)
持续集成是一种 DevOps 实践,开发者频繁地将代码更改合并到共享仓库中,触发自动化构建和测试。它避免了等待数周或数月才进行代码集成,确保:
- 代码提前得到验证
- 快速发现错误
- 减少集成问题
- 团队能够更快且更有信心地工作
简单示例
- 开发者将代码推送到 GitHub。
- 运行测试。
- 构建代码。
- 执行安全检查。
- 在几分钟内返回反馈。
如果出现故障,团队会立即知晓。
CI 平台
| 平台 | 亮点 |
|---|---|
| GitHub Actions | GitHub 仓库的原生 CI/CD,基于 YAML 的工作流,紧密集成 GitHub。 |
| GitLab CI/CD | 内置 CI/CD,强大的安全扫描,支持端到端 DevSecOps。 |
| Jenkins | 开源、高度可定制,拥有庞大的插件生态系统,企业中广泛使用。 |
| CircleCI | 云原生,速度优化,深受初创公司和 SaaS 团队欢迎。 |
| Azure DevOps Pipelines | 与 Microsoft 生态系统深度集成,支持混合和云工作负载。 |
为什么 CI 在现代软件交付中至关重要
CI 帮助团队:
- 及早发现错误
- 保持代码质量
- 防止构建失败
- 提高部署频率
- 增强开发者信心
没有 CI,变更管理将变得风险高且容易出错。
变更管理
传统变更管理
- 手动批准
- 长发布周期
- 大量文档
- 风险规避的流程
这种模式在现代 DevOps 环境中无法扩展。
现代变更管理(DevOps 驱动)
现代团队使用以下方式管理变更:
- 版本控制(Git)
- 自动化测试
- 基础设施即代码(IaC)
- CI/CD 流水线
- 可观测性与监控
示例(Terraform)
- 通过拉取请求(pull request)进行配置更改。
- CI 验证更改。
- 更改自动应用。
- 如有需要,回滚很容易。
变更变得可控、可审计且安全。
左移安全
左移意味着将安全性提前到软件开发生命周期(SDLC)的早期,而不是把它当作最后的检查点。
安全 SDLC 阶段
规划与设计
- 威胁建模
- 安全架构评审
- 风险评估
开发
- 安全编码实践
- 密钥管理
- 依赖扫描
CI/CD 流水线
- 静态应用安全测试(SAST)
- 软件组成分析(SCA)
- 密钥扫描
测试
- 动态应用安全测试(DAST)
- API 安全测试
- 渗透测试
部署与监控
- 运行时安全
- 日志记录与告警
- 漏洞管理
支持左移安全的工具
- Snyk – 依赖扫描
- SonarQube – 代码质量与安全
- Trivy – 容器与基础设施即代码(IaC)扫描
- OWASP ZAP – 动态安全测试
- Checkov – Terraform 与 IaC 安全
- GitHub Advanced Security
这些工具直接集成到 CI 流水线中。
实际工作流
- 开发者提交代码。
- CI 流水线运行测试。
- 安全扫描执行。
- 变更已审查。
- 基础设施安全部署。
- 监控确保稳定。
这种方法降低风险、提升速度,并建立信任。
对公司的好处
- 更快发布
- 减少安全事件
- 提升系统稳定性
- 降低运营风险
- 构建弹性软件
现代组织更倾向于 DevSecOps 而非传统模型,因为 CI、现代变更管理和左移安全是构建可靠、安全、可扩展软件的基础。
结论
通过提前集成安全、自动化变更并验证每一次提交,团队可以在不牺牲安全的前提下快速前进。这是软件交付的未来,也是高绩效工程团队的标准。