前言
为什么要写这本书
12年前,DevOps(研发运维一体化)作为精益和敏捷之后的另一个全新的方法论被提出,并且走进了软件开发的世界。作为DevOps的核心理念,持续交付帮助企业通过自动化和更好的团队协作实现了快速交付。之后出现的微服务让DevOps摆脱了单一架构模式下各个模块的依赖关系,从而使得交付速度更上一层楼。而云原生的出现不仅降低了基础设施的成本,也使得系统的运维和运营更加稳定。经过过去10多年的发展,企业的DevOps已经逐渐成熟。大家突然发现,除了速度和质量外,安全对于企业来说也同等重要。而且传统应用安全保护模式已经不适应DevOps模式下的快速交付了,甚至逐渐成为快速交付继续进阶的瓶颈。为了解决这个问题,2012年就被提出来的DevSecOps于2017年开始在世界范围内逐渐流行起来。
然而,DevSecOps横跨研发效能和安全两个领域,过去这种复合型人才几乎不存在。从事研发效能的专家将安全引入开发流程的各个阶段,以及从事应用安全的专家将安全在开发团队进行落地,都需要额外的技能和大胆的尝试。由于实践DevSecOps的挑战巨大和难度极高,虽然经历了三四年的发展,不仅国外DevSecOps相关的书籍甚少,国内至今仍无一本全面并且系统地介绍DevSecOps落地实践的书籍。
自从2018年在汇丰银行内部开始实践DevSecOps,并于2019年年初作为演讲嘉宾参加日内瓦DevOpsDays以来,截至2020年,我已经在国内外20多场技术峰会、论坛以及社区分享过自己在国际大型银行和国内大型互联网公司实践DevSecOps的经验。在有了一定的积累之后,为了让更多正迷茫于如何落地DevSecOps的企业和对DevSecOps感兴趣的个人有相关的经验可以参考,从2020年年末开始,我联合腾讯、百度等多家互联网公司和汇丰银行等金融行业的研发效能和应用安全领域的DevSecOps实践者,一起计划编写国内第一本DevSecOps相关书籍,希望让更多人受益,尤其是对DevSecOps这种全新的理念和方法论还处于迷茫状态的人们。
本书特色
本书采取了与大部分技术书不同的编写方式。书中杜撰了一个简单的故事,讲述了两位发小,作为研发效能和安全专家在比较有代表性的互联网公司(灰石网络)和金融企业(德富银行)落地DevSecOps的经历。通过故事里实践DevSecOps过程中抛出的问题和痛点,引出各章的相关内容和解决方案,让读者更有实际工作场景的代入感。
本书的作者都是拥有DevSecOps相关工具开发或者落地实践经验的资深专家和高级管理者,却又来自不同的领域(DevOps和应用安全)和不同的行业(互联网和金融)。由于DevSecOps本身是跨越软件开发、研发效能和应用安全等不同领域的全新方法论,并且在不同行业的落地目标和方式也有所不同,因此本书的作者群体正好可以从不同角度对DevSecOps的实践和落地进行全方位覆盖。其目标是不仅使来自不同行业的开发和DevOps背景的读者了解DevSecOps相关安全理念和实践,也使来自不同行业信息安全背景的读者了解如何进行安全前置,最终将安全意识和能力落地开发团队。
读者对象
- 研发效能工程师
- 研发效能架构师
- 研发效能管理人员
- 敏捷和研发效能教练
- 应用安全工程师
- 应用安全架构师
- 应用安全管理人员
- 开发、测试和运维人员
- 对研发效能和应用安全感兴趣的其他人员
如何阅读本书
本书共分为9章。其中,第3~7章为本书的重点,如果你没有充足的时间完成全书的阅读,则可以选择性地进行重点章节的阅读。
第1章由马松松、周纪海和杨伟强编写,简单介绍了DevOps的理念和发展史,以及DevOps到DevSecOps的演进,接着详细介绍了实践DevSecOps的理论基础和指导原则,最后分析了互联网和金融行业推动DevSecOps的动机和目标。
第2章由周纪海和周一帆编写,对DevSecOps行业和企业现状进行了调研和分析。关于DevSecOps解决方案,本章从流程和方法论、技术、文化和组织,以及DevSecOps体系建设层面进行了详细的介绍和讨论。
第3章由马松松和周纪海编写,详细介绍了在软件开发阶段DevSecOps通过安全左移带来的开发人员安全意识和能力提升、安全编码、代码质量,以及如何通过持续集成流水线实现安全扫描自动化等内容。
第4章由程胜聪和周纪海编写,详细介绍和讨论了持续测试对于提高测试效能、实现自动化测试的重要性,以及安全左移和右移后对测试阶段的影响。另外,本章对融入测试阶段的动态安全测试和交互式安全测试也进行了详细的介绍。
第5章由周纪海和周一帆编写,详细介绍了一个完整的业务需求管理涵盖的各个方面:需求收集和过滤、需求分析、需求排期、需求描述、需求拆分和需求评审等。另外,本章也详细介绍了如何基于变更分类进行需求安全管理和评审的融入。
第6章由周一帆和陈亚平编写,详细介绍了DevOps快速交付模式下微服务架构的拆分和设计原则、微服务改造和开发框架。接着详细介绍了架构安全评估体系下的不同实现模式(快速检查表、威胁建模以及合规检查等),其中尤其重点介绍了完整风险评估——威胁建模。
第7章由周一帆、周纪海和杨伟强编写,详细介绍了运维和线上运营阶段DevSecOps包含的各方面内容:配置和环境管理、发布部署、持续监控、日志分析、事件响应、权限控制、安全众测和红蓝对抗等。最后对最新的运行时自我保护工具RASP进行了重点介绍和分析。
第8章由周纪海和周一帆编写,从实际问题出发,讨论了为什么需要度量驱动进行持续反馈,重点介绍了DevSecOps度量指标和平台建设,分析了度量实践中常见的问题和误区,并对如何使用好度量提出了指导建议。
第9章由陶芬编写,重点讨论DevSecOps在云原生场景下的应用,其中包括DevSecOps在基于云原生的开发、分发、部署和运行时各个阶段的实施流程,以及相关的落地工具和框架。
勘误和支持
由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你有更多的宝贵意见,则欢迎通过邮箱Service@ChinaDevSecOps.com与我联系,期待能够得到你们的真挚反馈,在技术之路上我们互勉共进。
致谢
感谢参与本书编著的小伙伴们,很高兴和你们一起并肩作战,共同完成这个作品。
另外,我也要感谢我的太太和儿子。为写作这本书,我牺牲了很多陪伴他们的时间,但也正因为有了他们的付出与支持,我才能坚持写下去。
最后,谨以此书献给众多热爱研发效能以及DevSecOps的朋友们!
周纪海
2021年8月