一、DevSecOps 定义
DevSecOps 是将开发(Dev)、安全(Sec)和运营(Ops)整合的框架,其核心理念是把安全融入到整个 DevOps 流程中,从软件开发生命周期的最初阶段就考虑安全因素,而不是在后期添加或作为单独的阶段 ,倡导 “安全即代码” 的文化,强调发布工程师和安全团队之间持续、灵活的协作。
二、关键流程
持续集成(CI)与版本控制
概念:持续集成是频繁地将代码集成到共享仓库,进行自动化构建和测试,确保代码的质量和可集成性;版本控制则是对代码的变更进行管理和追踪,常用的版本控制系统如 Git。
系统构成:包括版本控制系统(如 GitLab、GitHub)、编译构建系统(如 Maven、Gradle)、编排调度系统(如 Jenkins、GitLab CI)等。
流水线:有基于 GitHub 的持续集成流水线,以及基于 Jenkins、GitLab CI 的持续集成流水线等不同实现方式,通过自动化流程完成代码的拉取、编译、测试等操作。
持续交付(CD)与持续部署
概念:持续交付是将代码变更自动部署到生产环境的前一步,确保软件随时可部署;持续部署则是在持续交付的基础上,进一步实现自动将软件部署到生产环境。
系统构成:涵盖镜像容器管理系统(如 Docker Registry)、配置管理系统(如 Ansible、Chef)、运维发布管理系统等。
流水线:像基于 GitHub + Docker 的持续交付持续部署流水线,以及基于 Jenkins + Docker + K8s 的持续交付持续部署流水线,实现从代码提交到生产环境部署的自动化流程。
三、安全工具链
威胁建模类:用于识别系统可能面临的威胁和风险,帮助开发团队提前规划应对措施。
静态安全检测类:如 Fortify、Checkmarx,在代码不运行的情况下,检测代码中的安全漏洞,如缓冲区溢出、SQL 注入等。
动态安全检测类:例如 AWVS、Nessus,通过模拟攻击,在应用程序运行时检测漏洞。
交互式安全检测类:如 Dongtai,在应用程序运行过程中,实时监测并分析应用与外部交互的过程,检测潜在的安全问题。
运行时应用自我保护类:像 OpenRASP,在应用程序运行时提供实时的安全防护,阻止攻击行为。
四、“即代码” 概念
安全即代码(SAC):把每项安全措施都当作代码工件,与软件一起进行版本控制、测试和部署。具体实施步骤包括明确定义安全要求、选择合适的工具和技术、创建定制代码、进行版本控制和文件编制、集成到 CI/CD 管道、审查和测试代码以及监控和持续改进。
基础设施即代码(IAC):将基础设施定义为代码,实现自动调配和配置,提高一致性、效率并简化管理,也包括网络即代码(NAC)和容器安全即代码(CSAC)。
策略即代码(PAC):把安全策略定义为代码,实现策略的自动执行,更易于与现有工作流程集成。
配置即代码(CAC):侧重于将各种系统和应用程序的配置作为代码进行管理,确保一致性,减少手动配置错误。
数据即代码(DAC):将数据资产作为代码来管理和处理,实现数据集的自动配置、版本管理和部署,有助于数据治理、协作和可重现性。
密钥管理即代码(SMAC):将密码、API 密钥和加密密钥等敏感信息作为代码工件进行管理和安全存储,确保跨应用程序和环境对密钥进行一致、安全的管理。
题目 1:DevSecOps 的核心目标是什么?( )
A. 提高开发速度
B. 降低运营成本
C. 将安全深度融入软件开发全生命周期
D. 增强团队协作
参考答案:C。DevSecOps 的核心理念是把安全融入到整个 DevOps 流程中,从软件开发生命周期的最初阶段就考虑安全因素。
题目 2:以下哪种工具属于静态安全检测类工具?( )
A. AWVS
B. Fortify
C. Dongtai
D. OpenRASP
参考答案:B。Fortify 属于静态安全检测类工具,在代码不运行的情况下检测代码中的安全漏洞,而 AWVS 是动态安全检测类,Dongtai 是交互式安全检测类,OpenRASP 是运行时应用自我保护类。
题目 3:在 DevSecOps 的关键流程中,持续集成(CI)的主要作用不包括以下哪一项?( )
A. 频繁将代码集成到共享仓库
B. 进行自动化构建和测试
C. 实现自动将软件部署到生产环境
D. 确保代码的质量和可集成性
参考答案:C。实现自动将软件部署到生产环境是持续部署的内容,持续集成是频繁地将代码集成到共享仓库,进行自动化构建和测试,确保代码的质量和可集成性。
原文始发于微信公众号(CISSP Learning):关于DevSecOps需要掌握的内容
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论