首页>参考读物>计算机科学与技术>安全

DevSecOps实战
作者 : 周纪海 周一帆 马松松 陶芬 杨伟强 等著
丛书名 : 实战
出版日期 : 2021-11-23
ISBN : 978-7-111-69565-3
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 298
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书通过描述一家大型互联网企业和一家大型传统银行的DevSecOps转型的过程,帮助读者浅显易懂并且有代入感地了解如何将DevSecOps在企业内部落地和实践。基于各类行业特点的DevSecOps实施与落地方法,是本书的主要技术要点。

图书特色

汇集来自腾讯、百度等互联网企业和汇丰银行等金融行业的资深DevOps和安全专家的实战经验。
全面讲解DevSecOps安全左移给软件开发生命周期各个阶段带来的变革、企业DevSecOps体系和度量平台建设,以及云原生场景下实现DevSecOps的探索。

图书前言

为什么要写这本书
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月

上架指导

计算机\安全

封底文字

本书以德富银行和灰石网络两家虚拟公司为背景,穿插叙述故事的方式探讨DevSecOps,考虑到几位作者的背景,这些大概率是真实事件改编。目前关于DevOps的书籍很多,但能把安全融入研运管理的经验都是零散的社区分享,本书在完整阐述DevOps理论、工具链和相关技术概念的基础上,将代码安全、运维运营安全等工作与DevOps体系进行了整合。
对于研发、测试和运维类读者,可以从中了解金融及互联网公司的一些DevOps实践,以及与安全团队的合作方式;对于安全岗位的读者,在了解DevOps理论及实践的基础上,可以找到自己团队参与DevOps的切入点;对于IT管理者,则可以收获完整的DevSecOps整合经验。
党受辉
腾讯IEG技术运营部助理总经理
这本书系统介绍了DevSecOps的实施解决方案与相应的转型策略,涵盖范围十分广泛,包括对微服务改造、数据安全、云原生安全等话题的讨论。隆重推荐给业界相关从业人员。
夏勇
汇丰科创风投及合作研究中心总经理,代理汇丰亚太区首席架构师
随着近年来DevOps在软件行业的迅速普及,在开发和运维流程中有效集成安全控制手段,实现整个软件生命周期的持续安全,已成为各大软件企业向DevOps 转型升级过程中急需解决的问题。而DevSecOps作为在DevOps下持续解决安全问题的有效方案,已逐渐成为软件工程领域的研究和实践热点。
本书集合了多位互联网和金融领域的研发效能与应用安全方面的专家,他们结合实战经验详细介绍了DevSecOps如何在软件开发全流程的各个阶段融入安全,为企业实现DevOps转型之后的下一步进阶而赋能。特别值得一提的是,有别于常见技术书籍,本书虚构了一个简化的企业DevSecOps转型的故事,通过故事中的问题引领读者展开对每章内容的探索,非常新颖和富有创意。
张贺
南京大学软件工程学院教授,博士生导师,软件研发效能实验室主任
本书叙事生动,充满真知灼见,是一部实战型著作,为这一崭新领域提供了可信赖的、明确的、全面而系统的行动指南。
刘凯
平安科技信息安全运营团队安全总监

图书目录


前言
第1章 DevSecOps的演进与落地思考1
1.1 DevOps简介4
1.1.1 DevOps发展简史5
1.1.2 DevOps理念6
1.2 DevSecOps简介7
1.2.1 从DevOps到DevSecOps7
1.2.2 从SDL到DevSecOps11
1.2.3 DevSecOps的指导原则14
1.2.4 DevSecOps实践17
1.3 互联网行业推动DevSecOps的动机与目标 21
1.4 金融行业推动DevSecOps的动机与目标 22
1.5 总结23
第2章 DevSecOps的实施解决方案和体系建设24
2.1 DevSecOps现状调研26
2.1.1 DevSecOps的行业调研26
2.1.2 企业现状调研29
2.2 流程和方法论:敏捷开发与CI/CD34
2.2.1 敏捷开发34
2.2.2 持续集成、持续交付和持续部署40
2.3 技术:工具与自动化41
2.3.1 项目管理工具41
2.3.2 源代码管理工具42
2.3.3 静态代码扫描工具42
2.3.4 静态应用安全测试工具43
2.3.5 持续集成工具44
2.3.6 构建工具44
2.3.7 制品管理工具45
2.3.8 第三方安全扫描工具45
2.3.9 自动化测试工具45
2.3.10 动态安全测试工具46
2.3.11 交互式安全测试工具46
2.3.12 自动化配置/发布工具46
2.3.13 日志分析工具47
2.3.14 监控工具47
2.3.15 DevSecOps工具链48
2.4 文化与组织结构50
2.4.1 DevSecOps的文化和挑战50
2.4.2 DevSecOps的组织结构和角色50
2.5 DevSecOps框架与模型的建立52
2.5.1 DevSecOps的运营模型 52
2.5.2 DevSecOps的实现模型54
2.5.3 DevSecOps的成熟度模型54
2.6 总结56
第3章 DevSecOps转型—从研发入手57
3.1 安全意识和能力提升60
3.1.1 安全意识61
3.1.2 安全能力61
3.1.3 隐私合规63
3.2 安全编码64
3.2.1 默认安全64
3.2.2 安全编码规范64
3.2.3 安全函数库和安全组件65
3.2.4 框架安全65
3.3 源代码管理和安全66
3.3.1 源代码安全管理67
3.3.2 分支策略67
3.3.3 代码评审74
3.4 持续集成75
3.4.1 编译构建和开发环境安全76
3.4.2 持续集成流水线76
3.4.3 安全能力在流水线上的融入78
3.5 代码质量和安全分析79
3.5.1 静态代码质量分析79
3.5.2 静态应用安全测试81
3.5.3 软件成分分析83
3.6 制品管理及安全85
3.7 总结87
第4章 持续测试和安全88
4.1 持续测试—DevOps时代的高效测试之钥90
4.1.1 测试效率面临着巨大挑战91
4.1.2 什么是持续测试92
4.1.3 如何实现持续测试92
4.2 测试执行提效之自动化测试93
4.2.1 分层的自动化测试策略93
4.2.2 单元测试95
4.2.3 接口测试98
4.2.4 UI测试100
4.2.5 其他自动化测试101
4.3 测试执行提效之精准测试101
4.4 测试流程提效:迭代内测试102
4.4.1 持续测试带来流程上的变革要求102
4.4.2 如何实践迭代内测试103
4.5 持续测试下的“左移”和“右移”104
4.5.1 测试左移104
4.5.2 测试右移106
4.5.3 “左移”“右移”不等于“去测试化”107
4.6 应用安全测试左移108
4.6.1 动态应用安全测试108
4.6.2 交互式应用安全测试112
4.7 DevSecOps影响着测试的方方面面116
4.7.1 测试分类116
4.7.2 质量度量118
4.7.3 组织架构120
4.7.4 团队文化121
4.8 总结122
第5章 业务与安全需求管理123
5.1 业务功能需求管理125
5.1.1 需求的收集与筛选126
5.1.2 需求的分析127
5.1.3 需求排期130
5.1.4 需求描述和文档130
5.1.5 需求拆分132
5.1.6 需求评审132
5.1.7 需求状态管理133
5.1.8 需求管理工具134
5.1.9 临时/紧急需求134
5.2 安全需求管理135
5.2.1 需求的安全分类136
5.2.2 需求的安全评审138
5.3 总结143
第6章 进一步左移—设计与架构144
6.1 为什么需要微服务架构147
6.1.1 单体架构的局限性148
6.1.2 微服务架构的优势149
6.1.3 微服务与DevOps的关系149
6.1.4 微服务化的实施路线151
6.2 微服务拆分与设计151
6.2.1 微服务拆分原则151
6.2.2 微服务设计原则152
6.2.3 微服务拆分方法152
6.3 微服务开发与组合:微服务开发框架154
6.3.1 Spring Cloud微服务架构154
6.3.2 Service Mesh微服务架构157
6.4 微服务改造:单体系统重构160
6.4.1 改造策略160
6.4.2 微服务改造的关键要素161
6.4.3 微服务改造的实施步骤161
6.5 安全设计与架构安全162
6.5.1 安全风险评估体系的建立162
6.5.2 项目的分类定义164
6.6 快速检查表的使用166
6.7 完整风险评估—威胁建模169
6.7.1 识别资产170
6.7.2 创建架构设计概览171
6.7.3 分析应用系统171
6.7.4 识别威胁172
6.7.5 记录威胁175
6.7.6 威胁评级176
6.7.7 威胁建模的工具与自动化180
6.8 合规性检查184
6.9 总结186
第7章 DevSecOps运维和线上运营187
7.1 配置和环境管理189
7.1.1 基础设施即代码190
7.1.2 配置的安全管理原则191
7.1.3 安全的计算环境192
7.2 发布部署策略193
7.3 持续监控和安全195
7.3.1 业务和应用层级的持续监控196
7.3.2 安全监控197
7.3.3 统一监控平台的建立198
7.4 日志分析198
7.4.1 日志管理的挑战199
7.4.2 日志平台建设199
7.4.3 日志的安全200
7.5 事件响应与业务的连续性202
7.5.1 信息安全应急响应机制202
7.5.2 业务的连续性206
7.6 身份认证和访问控制208
7.6.1 身份认证与访问控制的方式及对应问题208
7.6.2 统一的身份认证与访问管理214
7.7 数据管理和安全216
7.7.1 数据本身的安全216
7.7.2 数据的安全防护218
7.7.3 大数据安全220
7.7.4 数据治理与合规222
7.8 安全众测225
7.9 红蓝对抗227
7.10 DevOps平台的安全229
7.11 RASP230
7.11.1 RASP和WAF231
7.11.2 RASP的工作原理和特点232
7.11.3 RASP技术面临的挑战233
7.12 总结234
第8章 DevSecOps度量体系建设236
8.1 持续反馈和度量驱动238
8.2 度量指标的定义与成熟度模型240
8.2.1 度量的指标241
8.2.2 成熟度模型245
8.3 度量平台的建立、安全管控和可视化248
8.4 度量实践常见的问题和误区250
8.5 实践中如何正确使用度量251
8.6 研发效能度量实践254
8.7 总结257
第9章 云原生场景下的DevSecOps应用258
9.1 云原生带来的新变化260
9.1.1 云原生的DevOps新变化260
9.1.2 云原生面临的新安全风险262
9.1.3 云原生带来的新安全需求265
9.2 云原生DevSecOps实施流程266
9.2.1 开发阶段的安全266
9.2.2 分发阶段的安全267
9.2.3 部署阶段的安全270
9.2.4 运行时阶段的安全271
9.3 云原生DevSecOps相关安全工具274
9.3.1 云原生安全开源工具274
9.3.2 云原生安全商业产品276
9.3.3 云原生DevSecOps实践框架277
9.4 云原生DevSecOps的落地应用和演进趋势278
9.5 总结281
后记282
参考文献285

教学资源推荐
作者: [美]菲利普 N. 克莱因(Philip N. Klein)著
作者: [德]罗伯特·施米德(Robert Schmied) 著
作者: 邹德清 代炜琦 金海 著
作者: 朱俊虎 主编 奚琪 张连成 周天阳 曹琰 颜学雄 彭建山 邱菡 胡雪丽 尹中旭 秦艳锋 参编 王清贤 主审
参考读物推荐
作者: 大学霸IT达人 编著
作者: [印]维杰·库马尔·维卢(Vijay Kumar Velu) 著
作者: (美)Keith E.Strassberg,Richard J.Gondek,Gary Rollie
作者: 大学霸IT达人 编著