前言 1
第 1章 对DevSecOps的需求 7
1.1 开发软件 7
1.1.1 开发敏捷性 10
1.1.2 开发有问题的软件 11
1.1.3 暗房操作 12
1.1.4 事后再考虑安全问题 13
1.2 文化优先 14
1.3 流程胜于工具 15
1.3.1 推广正确的技能 15
1.3.2 DevSecOps作为流程 16
1.4 适应DevSecOps的SDLC模型 18
1.5 小结 19
第 2章 精选的基础知识 21
2.1 命令行界面 21
2.1.1 命令行、终端和shell 22
2.1.2 为什么我需要CLI 23
2.1.3 开始使用CLI 23
2.2 协议概述 24
2.2.1 协议层 24
2.2.2 两个协议加另一个协议 26
2.2.3 基础互联网协议 26
2.3 数据安全:机密性、完整性和可用性 34
2.4 脚本开发概述 36
2.4.1 命令和内置命令 37
2.4.2 基本编程结构:变量、数据和数据类型 37
2.4.3 使用条件语句做出决策 38
2.4.4 循环 41
2.4.5 列表和数组 42
2.5 小结 42
第3章 集成安全 43
3.1 集成安全实践 43
3.1.1 实施最小权限 44
3.1.2 维护机密性 46
3.1.3 传输中的数据 46
3.1.4 静态数据 50
3.2 验证完整性 51
3.2.1 校验和 52
3.2.2 验证电子邮件 53
3.3 提供可用性 54
3.3.1 SLA和服务级别目标 55
3.3.2 寻找利益相关者 55
3.3.3 确定可用性需求 55
3.3.4 定义可用性和估算成本 56
3.4 关于问责制 58
3.4.1 站点可靠性工程师 58
3.4.2 代码可追溯性和静态分析 59
3.5 提高安全意识 61
3.5.1 寻找正规培训 62
3.5.2 获取免费知识 62
3.5.3 通过日志分析获得启发 63
3.6 实战OWASP ZAP 64
3.6.1 建立目标 64
3.6.2 安装ZAP 66
3.6.3 ZAP入门:手动扫描 66
3.7 小结 73
第4章 管理代码和测试 75
4.1 检查开发 75
4.1.1 有意识并有条理 75
4.1.2 不要自我重复 76
4.2 使用Git管理源代码 77
4.2.1 Git的简易设置 77
4.2.2 使用Git(简明版) 80
4.2.3 分支和合并 84
4.2.4 探讨Gitflow模式 85
4.2.5 探讨基于主干的模式 86
4.3 测试代码 87
4.3.1 单元测试 88
4.3.2 集成测试 88
4.3.3 系统测试 88
4.3.4 自动化测试 88
4.4 小结 92
第5章 走向部署 93
5.1 将配置作为代码和SBOM进行管理 93
5.2 使用Docker 97
5.2.1 容器和镜像概念 98
5.2.2 获取镜像 99
5.3 使用蓝绿部署进行安全部署 107
5.4 小结 108
第6章 部署、运维和监控 109
6.1 持续集成和持续部署 109
6.1.1 使用Ansible构建和维护环境 110
6.1.2 使用Jenkins进行部署 111
6.1.3 创建流程 116
6.2 监控 121
6.3 小结 124
第7章 规划与扩展 127
7.1 使用Kubernetes进行扩展 127
7.1.1 了解Kubernetes基本术语 127
7.1.2 安装Kubernetes 128
7.2 使用Kubernetes进行部署 134
7.2.1 定义Deployment 135
7.2.2 定义Service 138
7.2.3 迈向微服务 139
7.2.4 连接资源 141
7.3 集成Helm 144
7.4 小结 145
第8章 超越DevSecOps 147
8.1 DevSecOps模式 147
8.1.1 左移和添加CI/CD 147
8.1.2 多云集成 148
8.1.3 集成化与自动化安全 148
8.1.4 Linux操作系统无处不在 148
8.1.5 重构与重新部署 149
8.2 小结 149
附录A 端口与协议 151
附录B 命令参考 153