来源:DevOps云学堂
DevSecOps 是一套实用且面向目标的方法,用于确保系统安全。DevSecOps 被定义为通过与 IT 安全团队、软件开发人员和运营团队合作,在标准 DevOps 周期中建立关键安全原则的过程。以下是对 2022 年 DevSecOps 管道、框架和最佳实践的深入分析。
目录
-
什么是 DevSecOps?
-
DevSecOps 管道如何工作?
-
了解 DevSecOps 框架
-
2022 年 5 大 DevSecOps 最佳实践
什么是 DevSecOps?
DevSecOps 是指通过与 IT 安全团队、软件开发人员和运营团队合作,在标准 DevOps 周期中建立关键的安全原则。
顾名思义,DevSecOps 是DevOps 概念的延续。它基于这样一个事实,即组织中的每个部门都同样负责在软件开发周期的每个阶段集成安全性。
以尽可能快的方式执行新代码发布到生产是所有组织的共同目标。然而,在这个在线安全问题、网络威胁和其他安全漏洞日益严重的时代,每个阶段都需要遵循特定的安全协议,这就是 DevSecOps 的用武之地。
DevSecOps 的主要优势之一是它可以最大限度地减少任何产品的漏洞,并使其完全准备好供最终用户使用。由于每个流程和相关工作流程都通过严格的安全检查实现自动化,因此可以更准确地满足安全要求。但是,选择正确的工具来维护持续集成 (CI) 中的安全性至关重要。安全团队需要经过充分培训才能帮助实现这一目标。
DevSecOps 管道如何工作?
通常,DevOps 管道涉及多个步骤。DevSecOps 通过确保每个阶段的严格安全标准从传统方法中脱颖而出。软件开发生命周期 (SDLC)过程的主要阶段包括规划、编码、构建、测试、发布和部署。
-
计划:在计划阶段,执行主要的安全分析。工程师制定适当的测试策略,用于确定测试的方式、地点和时间。
-
代码:在编码步骤中使用各种类型的 Git 控件和工具来保护敏感信息,例如应用程序编程接口 (API) 密钥和密码。
-
构建:编写和执行用于构建源代码的代码至关重要。在这里,静态应用程序安全测试 (SAST) 技术被广泛用于使代码无错误。
-
测试:在测试阶段,动态应用程序安全测试(DAST)工具主要用于测试产品/应用程序,保护用户身份验证,并识别 SQL 注入和 API 端点中可能存在的问题。
-
发布:发布阶段是指在渗透测试和漏洞扫描过程中执行的安全分析。
-
部署:部署阶段是在生产中实施适当的安全协议,为最终部署做好准备。
如前所述,在 DevSecOps 的每个阶段都实施了多项安全措施。以下是此类安全程序的各个阶段:
第一阶段:威胁建模
威胁建模总结了可能的攻击场景,列出了敏感数据的流向,并突出了漏洞和缓解替代方案。此阶段有助于解决安全问题并提高团队的安全理解。
第二阶段:扫描
扫描阶段评估代码以确保其安全且没有安全漏洞。此处包括手动和自动代码审查。在此步骤中,使用了 SAST 和 DAST 等 AppSec 工具。由于处于软件开发生命周期的早期,此阶段允许工程师解决大多数安全漏洞和缺陷。
第三阶段:分析
分析所有先前获取的数据和指标,以识别此阶段的任何安全漏洞。然后将危险分类到一个列表中,从最严重到最轻微。一些 SAST 程序(例如 Klocwork)可以自动执行此过程。
第四阶段:补救
补救阶段处理在先前阶段已识别和组织的安全漏洞。一些 DevSecOps 技术(例如 SAST)可以针对发现的漏洞、缺陷和缺陷提出修复建议。这使得在出现安全问题时更容易处理它们。
第五阶段:监控
在监控阶段,跟踪发现的漏洞,努力减轻或消除它们,并对应用程序进行整体安全状况评估。跟踪和管理实际指标值和目标指标值之间的变化也很好。在软件开发生命周期中,这有助于做出明智的数据驱动决策。组织应首先在安全单元测试中实施持续安全。安全单元测试要求与我们编写的其他单元测试一样重要。
了解 DevSecOps 框架
DevOps 有助于加速软件交付,这对标准安全实践提出了挑战。由于这个问题,DevSecOps(或 SecDevOps)一词被创造来描述将安全程序整合到 DevOps 系统中。了解 DevSecOps 在不同行业中采用何种方式以提供最佳安全级别至关重要。为此,您需要清楚了解构建 DevSecOps 框架所需的主要功能和解决方案。接下来,我们将引导您了解应用安全产品的顶级标准功能,以创建 DevSecOps 框架。
3.1 安全扫描
安全扫描是应用安全产品的主要功能之一。它基本上有两种类型——基于代理的和无代理的。虽然这两种扫描模型都很流行,但无代理扫描模型的工作方式却截然不同。在这里,应用程序安全服务从安全管理员那里收集项目和相关数据,然后在无代理扫描架构中执行安全扫描。
安全管理员可以使用 Web 仪表板输入项目信息或编写脚本将数据传输到应用程序安全服务的公开 API。无代理安全扫描基于两个主要组件——扫描代理和应用程序安全服务。扫描代理的主要作用是运行彻底的安全扫描并将输出提交给应用程序安全服务进行进一步的扫描和分析。
如果没有应用程序安全服务,安全代理的扫描结果将毫无用处。例如,对于 SCA 产品,扫描库的签名可以在结果中,而漏洞详细信息是预期的。另一方面,对于 SAST 产品,结果包含漏洞代码。因此,扫描结果只能与应用程序安全服务的数据库一起使用。
3.2 获取源代码
应用安全产品一般通过两种主要方式接收源代码——版本控制系统方式和文件上传方式。在这个过程中,相关安全管理员根据需要将源代码压缩后上传到应用安全产品。上传过程通过已发布的 API 或 Web 管理界面进行。
安全管理员通过版本控制系统的方式为项目配置存储库信息。一些示例是——存储库统一资源定位器、存储库访问凭证等。
应用程序安全服务使用一组特定的数据从版本控制系统获取源代码。由于获取完整的源代码可能更加耗时和复杂,因此它会检索更新的代码以确保获得更好的结果。
此外,使用版本控制系统还有其他优点,例如增量扫描、更严格的身份验证过程、与项目相关的简化操作等。这是使获取多个级别的源代码变得独特而有效的主要因素之一。
3.3 项目组织
每个项目都由不同的团队根据组织层次结构进行生产和管理。用户和组用于组织应用程序安全产品中的任务。
每个用户都是一个或多个组的成员,每个组都可以访问一个或多个项目。此外,员工经常需要同时处理多个软件项目。此类项目通常与公司的单个部门相关联。
因此,直接从组织结构映射是不切实际的。因此,每个项目都被分配到一个组,该组包括该项目的所有使用应用程序安全产品的用户。
DevSecOps 架构中有两个主要部分,尤其是在高级架构中。这里的代理是指一个易于使用的脚本,它提取和收集源代码并将其发送到相关引擎。这是 CI(持续集成)过程的关键部分。
在这里,单体架构和微服务架构是两种架构。由于这些原因,该框架的引擎是利用微服务架构构建的:
-
维护更简单:引擎支持不同的安全程序(如安全扫描、报告检索和凭证管理)。每个特性都可以定义为架构中的一个单独的微服务,可以独立创建和维护。如果选择整体设计,更改或添加一个安全功能将需要更改或添加另一个元素。
-
更高的可靠性和可用性:当一个安全组件(例如,安全报告)发生故障时,它不会影响其他安全功能。如果为此框架采用单体架构,则单个安全功能故障可能会导致整个框架失败。
-
更易于扩展:每个服务都可以单独扩展,以便在必要时提供更多资源。使用单体架构时,必须扩展整个引擎以满足单个功能的资源需求。
2022 年 5 大 DevSecOps 最佳实践
要释放 DevSecOps 的潜力,您必须遵守设定的最佳实践。在这里,我们列出了 DevSecOps 的最佳实践,以确保高水平的安全性、降低风险和提高运营效率。目标应该是确保高标准的安全性。
4.1 使用安全编码技术
安全编码技术是 DevSecOps 不可或缺的一部分,以确保软件得到充分保护,免受任何低漏洞级别的威胁。除非代码高度安全,否则将存在数据泄露、网络安全攻击和其他安全威胁等风险。建议在安全编码技术上投入所需的时间和资源,以避免将来出现严重的安全攻击。始终选择有经验的开发人员并遵守正确的编码标准。
4.2 整合正确的工具
集成正确的工具是有效实施 DevSecOps 的基础之一。大多数公司利用顶级应用安全技术,例如 SAST、DAST、交互式应用程序安全测试 (IAST) 和源组合分析 (SCA) 等,以确保正确使用和优化工具。
DevSecOps 工具中一些常见但备受追捧的功能是图像保证、入侵检测、运行时保护和其他微服务安全功能。随着容器化和微服务成为现代应用程序基础设施的基础,必须将适当的 DevSecOps 工具集成到企业 SOP 中。这就是开发良好且易于使用的 API 发挥作用的地方,因为它们有助于跨不同平台和应用程序领域扩展和集成工具。
4.3 使用自动化
手动流程更容易出错,并且通常不方便扩大规模。此类技术还增加了错误配置的风险,这是企业面临的最具影响力、最严重的安全威胁之一。
需要在整个 CI/CD 管道中应用和验证严格的安全协议和措施,而自动化是简化整个过程的原因。这就是为什么它是 DevSecOps 最有效的最佳实践之一。企业必须尽可能实现自动化——从 IDE 中的代码编写到生产中的 IAM 角色——通过避免错误配置来预防、检测和修复问题。
4.4 采用安全即代码
安全即代码是指安全策略的编码、扫描和验证。安全作为代码的主要优点是它确保了适当的安全规则。协议在整个基础设施中统一实施。它还有助于加快部署并使用管道的版本控制和自动化。
安全即代码,如自动化和其他 DevSecOps 最佳实践,提供了加强安全性的好处并有助于改进操作。此外,一旦记录在案,它就简化了迭代和扩展安全方法。
4.5 安全左移
传统上,安全扫描和评估是在软件生产之后进行的。因此,解决安全漏洞是复杂、昂贵且容易受到时间限制的。为了解决这些困难,左移安全强调尽早将安全集成到软件开发生命周期 (SDLC) 中。
左移不仅仅是代码。它还需要在 SDLC 的规划、分析和设计阶段优先考虑安全性。企业可以及早发现安全问题和错误配置,提高产品质量和安全性,同时减少修复漏洞所需的时间和精力。
超级工程师实战营第七模块【安全模块】邀请到华为云SDL专家&DevSecOps专家 刘皓老师带来3小时大时段课程分享,主题是《DevSecOps安全实战》
7月5日(周二)和7月6日(周三)晚上19:30-21:00,线上直播,扫码立即报名,精彩内容,不容错过