ISACA Blog | 安全即代码:DevSecOps的关键构件

在不断演变的威胁环境中,安全必须作为系统和流程的基本特征和属性而存在,而不是仅仅作为对安全事件的被动反应。为了跟上快速软件开发和部署的速度和可扩展性需求,安全必须是可访问的、敏捷的和自动化的。这就是“安全即代码”(SaC)概念发挥作用的地方。

想象一下这样一个世界,安全协议、配置和最佳实践不仅是可以手动实施,还可以是自动执行的,并直接集成到软件开发生命周期的方方面面。

DevSecOps与安全即代码

DevSecOps是一个框架,它将开发、安全和运营团队及其职能整合成一个有凝聚力的单元,专注于交付高质量的安全代码,以满足业务需求。文化、协作和自动化是DevSecOps的关键要素。

因此,安全即代码(Security-as-Code)是DevSecOps的基础构件。SaC为确保DevSecOps生态系统中的安全提供了自动化、一致性和可靠性。它将每项安全措施都视为代码工件,与实际软件一起进行版本控制、测试和部署。

安全即代码实际应用

以下是安全即代码的实际应用情况:

  • 需求定义:明确定义每项需要自动化的安全措施的安全要求。这包括指定配置、策略、规则和最佳实践。

  • 工具和技术选择:确定并选择实施SaC所需的工具和技术。这包括静态代码扫描器、配置管理工具、密钥管理技术和漏洞分析器。

  • 定制代码:创建定制代码是为了编码安全控制、配置和最佳实践,并将其转换为可重复使用的代码模块。

  • 版本控制和文件编制:代码存储在版本控制系统中。这可确保对代码的所有更改都能得到跟踪、记录和审计,从而实现协作和持续改进。

  • 管道集成:在持续集成和持续部署(CI/CD)管道的各个节点中都集成了经过编码的安全检查。

  • 代码审查和安全测试:与要保护的软件一样,定制SaC代码的每一行都要经过审查和安全测试,以确保其质量和安全性。这一过程包括使用静态分析工具、动态扫描工具和人工审查。

  • 监控:启用监控和审核机制来跟踪安全事件、检测异常情况并确保遵守安全策略。这包括安全信息和事件管理(SIEM)工具,用于集中管理安全日志和警报。

  • 持续改进和成熟度:SaC实施的所有要素都处于持续评估和改进的过程中。不断变化的业务目标、流程、改进的工具和安全事件的根本原因分析都是加强SaC计划的输入。

安全即代码的优势

安全即代码的主要特点包括自动化、编码、版本控制、集成和可重用性。这为组织带来了安全态势改善、运营效率提高和灵活性增强等多项好处。这些优势包括:

  • 安全问题的早期检测和补救:SaC允许将安全控制和检查集成到开发流程中,从而及早发现安全漏洞和问题。通过在开发过程中识别和解决安全问题,组织可以降低安全漏洞发生的可能性,并将相关风险降至最低。

  • 一致性和标准化:SaC可促进开发、测试和生产环境中安全配置和实践的一致性和标准化。通过将安全措施定义为代码工件,组织可以确保在整个软件开发生命周期中统一应用和实施安全策略。

  • 灵活性和效率:SaC实现了漏洞扫描、合规性检查和配置管理等安全流程的自动化,从而提高了灵活性和效率。

  • 可扩展性和灵活性:鉴于其编码性质,SaC可轻松扩展,以适应基础设施、应用程序和安全需求的变化。这使组织能够调整安全措施,以适应不断变化的威胁、业务需求和监管要求。

  • 改善协作与沟通:SaC通过跨职能协作和分担安全责任,促进开发、安全和运营团队之间的协作与沟通。

  • 增强可见性和可审计性:SaC的编码和版本控制功能提供了可见性,使组织能够更有效地跟踪变更、维护审计跟踪并证明合规性。

  • 节约成本:通过自动化执行重复性任务和简化安全流程,组织可以优化资源分配并最大限度地减少运营开销。

  • 缩短上市时间:由于安全是自动化的并包含在流水线中,组织可以减少延迟,加快应用程序和服务的上线时间。

关键的“**即代码”概念

安全即代码包含其他几个“**即代码”概念和实现方法。

所有“**即代码”方法都共享安全即代码的核心原则:通过代码实现流程自动化,从而提高敏捷性、一致性并减少人为错误。一些关键概念如下:

  • 基础设施即代码(Infrastructure-as-Code,IaC):这种方法将基础设施定义为代码。这可以实现自动调配和配置,从而提高一致性、效率并简化管理。这也包括网络即代码(NaC)和容器安全即代码(CSaC)。

  • 策略即代码(Policy-as-Code,PaC):PaC将安全策略定义为代码,可实现单个策略声明的编码。这样可以实现自动执行,并更容易与现有工作流程集成。

  • 配置即代码(Configuration-as-Code,CaC):CaC侧重于将各种系统和应用程序的配置作为代码进行管理。这可确保一致性并减少手动配置中的错误。

  • 数据即代码(Data-as-Code,DaC):DaC是指将数据资产作为代码来管理和处理,实现数据集的自动配置、版本管理和部署。它有助于以数据为中心的工作流程中的数据治理、协作和可重现性。

  • 密钥管理即代码(Secrets Management-as-Code,SMaC):SMaC专注于将密码、API密钥和加密密钥等敏感信息作为代码工件进行管理和安全存储。它可确保跨应用程序和环境对密钥进行一致、安全的管理。

编者按:本文于2024年5月31日首次发表于ISACA官网ISACA Now Blog。文章内容仅代表作者本人观点。

作者:Divya Aradhya(Div-yuh Uh-RAHD-yuh)是花旗银行的高级应用安全架构师,拥有20年的职业生涯。她拥有网络安全硕士学位以及CISM和CISSP证书。

翻译:王岩(Liam Wong),CISA、CIA、CDPSE、CISM、CISSP、CZTP、CISP-F、PMP、OCM 11g/12c、PGCA、OBCA、MCDBA、MCSE,ISACA微信公众号特邀通讯员

校对:王亮(Lionel Wang),CISA,ISACA微信公众号特邀通讯员,致力于网络安全、数据安全、个人信息保护、工控安全以及IT审计方向的研究