@2024云安全联盟大中华区-保留所有权利。你可以在你的电脑上下载、储存、展示、查看及打印,或者访问云安全联盟大中华区官网(https://www.c-csa.cn)。须遵守以下:(a)本文只可作个人.信息获取.非商业用途;(b)本文内容不得篡改;(c)本文不得转发;(d)该商标.版权或其他声明不得删除。在遵循中华人民共和国著作权法相关条款情况下合理使用本文内容,使用时请注明引用于云安全联盟大中华区。 ©2024云安全联盟大中华区版权所有2 ©2024云安全联盟大中华区版权所有3 致谢 《DevSecOps的六大支柱:务实的实现(TheSixPillarsofDevSecOps:PragmaticImplementation)》由RoupeSahans编写,并由CSA大中华区专家组织翻译并审校。 (以下排名不分先后): 中文版翻译专家组 翻译组组长:李岩 翻译组成员: 何伊圣 陈宏伟 殷铭 贺志生 吴嘉雯 高亚楠 伏伟任 江澎 江泽鑫 余晓光 谢绍志 屈伟 江楠 王岩 王贵宗 王彪 苏泰泉 欧建军 林艺芳 张坤 审校组成员: 李岩江泽鑫王彪张坤研究协调员:闭俊林、赵鹏 贡献单位: 北京天融信网络安全技术有限公司中国电信股份有限公司研究院华为技术有限公司上海缔安科技股份有限公司 英文版本编写专家 主要作者:RoupeSahans贡献者: CharlesBideauAristideBouixMauricioCanoEricGauthier DanielGoraMichaelHoldenBrynnaNeryAbdulRahmanSattarMichaelRozaSreeniSharmaDamianZawodnik 审校者: ChrisLathamFabiolaMoyónDouglasNeedham 联合主席: KapilBarejaChrisKirschkeSamSehgal CSA分析师:JoshBukerCSA全球员工: ClaireLehnertStephenLumpe 在此感谢以上专家。如译文有不妥当之处,敬请读者联系CSAGCR秘书处给予改正!联系邮箱research@c-csa.cn;云安全联盟CSA公众号。 序言 DevSecOps随着DevOps的发展进入到了火爆的程度,DevSecOps也为云原生流水线注入了新的安全活力。云原生技术以其高度的弹性、自动化特性,为DevSecOps的实施提供了更为广阔的空间。 在云原生环境下,DevSecOps能够充分利用云计算的优势,实现更加灵活、高效的安全管理和软件开发。云原生技术强化了DevSecOps的安全能力。在云原生环境中,安全策略可以被更好地集成到整个开发流程中,实现安全前置和持续集成。通过利用云原生平台的安全特性,如加密、访问控制、安全审计等,DevSecOps能够更有效地保护应用和数据的安全。 通过学习CSA务实的DevSecOps实施,帮助企业提升黄金流水线的合规和安全能力,实现基于快速交付的安全合规的新方案。 DevSecOps专题也是CSA顶级云安全专家课程(CSAACSE)中级课程,DevSecOps是践行安全黄金流水线的实现,从一开始就考虑应用程序和基础设施安全。DevSecOps专家认证(CertifiedDevSecOpsProfessional)是ACSE置换认证的前置课程之一。CSADevSecOps课程的价值主要体现在提升安全性、促进团队协作、加速软件交付、培养全栈人才和提高企业价值等方面。 李雨航YaleLiCSA大中华区主席兼研究院院长 目录 序言6 前言9 介绍10 目标11 读者11 1概述12 2软件生命周期的安全转型14 2.1人是成功实现DevSecOps转型的关键推动者15 2.2文化将加快速度并提高绩效19 2.3技术和流程是DevSecOps实务的基础23 3DevSecOps阶段23 3.1设计与架构23 3.2开发(编码)23 3.3集成和测试24 3.4交付和部署24 3.5运行时防御和监测25 4设计和架构33 4.1威胁建模33 4.2安全用户故事35 4.3价值流安全映射36 4.4架构原则和制品39 4.5风险管理(左移)43 5开发(编码)45 5.1对开发人员培训45 5.2安全钩子(Hook)47 5.3代码检查(linting)48 5.4软件组成分析50 5.5静态应用程序安全测试51 5.6容器强化55 5.7基础设施即代码分析58 5.8同行评审64 6集成与测试65 6.1动态应用程序安全测试65 6.2交互式应用程序安全测试67 6.3API测试69 6.4模糊测试71 6.5渗透测试72 6.5.1渗透测试范围74 6.5.2渗透测试的步骤和纵深防御75 6.5.3渗透测试的益处、框架、指导和战术手册77 6.5.4在DevSecOps环境中需要考虑的特殊用例78 6.5.5渗透测试工具79 6.5.6容器测试80 6.5.7完整性检查81 7交付和部署83 7.1护栏84 7.2环境分离89 7.3密钥和密钥管理93 7.4保护CI/CD流水线96 7.4.1治理97 7.4.2身份管理98 7.4.3部署配置98 7.5系统加固100 8运行时102 8.1混沌工程102 8.2云安全态势管理104 8.2.1监控和可观测性107 8.2.2攻击面管理112 8.2.3事后刨析115 8.2.4紫色团队116 8.2.5漏洞管理(识别后)118 8.2.6事件响应122 参考文献125 缩略词128 前言 云安全联盟(CSA)和SAFECode致力于提高软件安全成果。2019年8月发布的论文《DevSecOps的六大支柱》提供了一套高级方法并成功实施了解决方案,其作者使用这些方法快速构建软件并最大限度地减少与安全相关的错误。这六大支柱是: 支柱1:集体责任(发布于2020年2月20日) 支柱2:协作与整合(发布于2024年2月21日) 支柱3:务实的实现(发布于2022年12月14日) 支柱4:桥接合规与发展(发布于2022年8月2日) 支柱5:自动化(发布于2020年6月7日) 支柱6:测量、监控、报告和行动(预计2024年4月) 支持每个支柱的成功解决方案是云安全联盟和SAFECode联合出版物的更详细的集合的主题。本文是后续出版物中的第四篇。 介绍 在将安全性纳入到软件开发生命周期(SDLC)中时,组织有多种工具和解决方案可供选择。然而,这些通常存在一些问题:要么难以部署、实施和扩展,要么无法提供有助于减轻实际安全风险的可行见解。由于每个SDLC在结构、流程、工具和整体成熟度方面都不同,因此没有通用的二元蓝图来实施DevSecOps。 通过采用与框架无关的DevSecOps模型(专注于应用程序开发和平台安全,以确保数字社会的安全、隐私和信任),组织将能够切实地处理DevOps中的安全问题。该模型通过将安全嵌入到软件开发生命周期中,以满足所有在利益相关人(包括开发人员、运维人员和安全人员)连接过程中未被满足的需求。1 本文中的DevSecOps实施指南被组织成一系列实际职责和活动,旨在帮助数字安全领导者在开始进行DevSecOps时做出务实决策。 采用通常由软件开发和平台工程团队有机地建立,或者由领导层统一建立。无论驱动因素和利益相关者如何,组织都应将其DevSecOps实施视为一项迭代的持续改进工作,而不是一次性的瀑布项目。 本文的范围确定并扩展了成功的DevSecOps倡议的4个关键要素:文化、人员、流程和技术。本文涉及隐私,但没有提供该领域的完整视图(即隐私融入安全设计)。 目标 云安全联盟DevSecOps工作组(WG)在“通过反思性安全 (ReflexiveSecurity))进行信息安全管理:安全、开发和运维集成的六大支柱”中发布了高级指南。2这六大支柱被认为是实施DevSecOps的关键重点领域,建议的支柱之一是务实实施安全计划。务实的定义是基于实际而非理论考虑,明智而现实地做出深思熟虑的决策。3 对于阅读本文的数字和安全领导者来说,DevSecOps的实用主义将通过实施产生最高投资回报的方法来推动。本指南将帮助组织成功实施DevSecOps,将安全性嵌入到SDLC和DevOps的现有工作流程中。 读者 本文档的目标受众包括参与风险、信息安全和信息技术管理和运维职能的人员。该受众包括CISO、CIO、CTO以及那些领导数字化转型计划的人。 此外,应用系统、平台、安全工程师和架构师也可以使用本指南作为改进组织DevSecOps计划的参考。 1概述 本文中的实施指南侧重于涵盖内部开发和第三方打包软件的安全性,无论其在何处运行(本地或云上)。 关于组织如何实施DevSecOps计划,通常有两种不同的观点: 1.从DevOps的角度来看,组织应该构建安全性并将其集成到SDLC中。 2.从安全团队的角度来看,安全控制通常是在考虑流程和技术的基础上实施的。 我们在本文中融合了这两个常见观点,并提供了全面覆盖的安全活动指导。组织应将DevSecOps作为一项迭代和持续改进工作,而不是一次性项目。目的是让读者思考组织内希望重点改进的领域,然后参考本文及其指南,确定每个软件生命周期阶段的优先活动。 使用DevOps导入安全性 从DevOps的角度来看,团队可以在设计和编码阶段的早期解决安全问题,也称为“左移”。其目的是尽早将安全与组织中的非安全利益相关者集成。建立默认的安全流程,以便以不安全的方式做事需要额外的努力,并且包括异常工作流程。图1展示了DevOps观点的安全性。通过DevOps观点导入安全的组织通常包括以下步骤: 1.评审开发和IT组织当前的软件生命周期。这就是评估、构建、测试、部署和操作新技术的方式。SDLC通常可以采用多种方式来处理安全团队可以利用的变更(即主要是功能请求)。 2.评审DevOps和IT组织的现有工具,特别是自动化部署和开发任务的工具。 理解开发工作流程和现有工具集有助于在软件生命周期的每个阶段制 定安全控制决策。本文详细探讨了如何实现上述两点,并结合支柱5自动化中详细介绍的自动化方法。 图1:安全开发生命周期 虽然定义软件开发生命周期(SDLC)及其阶段的方法有很多种,但图1中引用的五个阶段的SDLC:设计、编码、集成和测试、部署和监控为软件开发提供了通用视图。 2软件生命周期的安全转型 从安全的角度看,寻求安全改进的组织倾向稳健的安全计划,且这些计划赖于将安全最佳实践有效集成到组织的软件开发范式中。这通常由文化和流程、安全基础设施和技术的运营以及员工意识所主导。每个软件生命周期阶段的安全都需要结合人员、文化、流程和技术: 人:组织中的个人及其角色,以及安全和成功的应用程序、平台和基础设施的交付。重点关注领导人、技术利益相关者、实施者和决策者。 文化:组织如何处理和管理工作和风险。文化通常是软件开发工作和安全的软性和难以衡量的领域,它直接参与了绩效和成功。 过程:常见的工作流程、手工操作和有据可查的活动。人们在自动化或两者组合的支持下执行流程。 技术:技术侧重于使用工具和自动化安全地创建和操作基础设施和应用程序,以帮助保护资产、检测漏洞、事件和事故。 这些组合之间将根据组织安全计划的规模和复杂程度而有所不同。小型组织通常主要依赖于担任多个角色的人员并管理应用程序的安全,而大型组织可能会利用技术和自动化。一个组织的文化可能会受到合规要求的影响,这会导致重大的监督和审计,而其他组织则将制衡嵌入到标准工作流程中。 2.1人是成功实现DevSecOps转型的关键推动者 DevSecOps最重要的方面是人。如果不了解如何利用现有员工的技能和知识并建立成功的跨职能团队,您的DevSecOps工作将变得昂贵且低效。跨职能团队和角色通常是组织在DevSecOps中的最大推动因素。跨职能团