序
前言
第一部分 云原生安全概述
第1章 云原生安全 2
1.1 云原生:云計算下半場 2
1.2 什么是云原生安全 4
1.2.1 面向云原生環(huán)境的安全 4
1.2.2 具有云原生特征的安全 5
1.2.3 原生安全:融合的云原生安全 5
1.3 面向云原生環(huán)境的安全體系 7
1.3.1 容器安全 7
1.3.2 編排系統(tǒng)安全 8
1.3.3 云原生應用安全 9
1.4 云原生安全的關鍵問題 9
1.4.1 如何防護短生命周期的容器 9
1.4.2 如何降低安全運營成本 10
1.4.3 DevSecOps 11
1.4.4 如何實現(xiàn)安全的云原生化 12
1.5 云原生安全現(xiàn)狀 13
1.5.1 云原生新范式:Docker + Kubernetes 13
1.5.2 鏡像安全問題仍然很突出 14
1.5.3 安全配置規(guī)范執(zhí)行和密鑰憑證管理不理想 15
1.5.4 運行時安全關注度上升,但依然很難 17
1.5.5 合規(guī)性要求依然迫切,但業(yè)界苦于無規(guī)可循 18
1.6 本章小結 19
第2章 云原生技術 20
2.1 容器技術 20
2.1.1 容器與虛擬化 20
2.1.2 容器鏡像 20
2.1.3 容器存儲 21
2.1.4 容器網絡 22
2.1.5 容器運行時 22
2.2 容器編排 23
2.3 微服務 23
2.4 服務網格 24
2.5 Serverless 25
2.6 DevOps 26
2.7 本章小結 27
第二部分 云原生技術的風險分析
第3章 容器基礎設施的風險分析 30
3.1 容器基礎設施面臨的風險 30
3.1.1 容器鏡像存在的風險 31
3.1.2 活動容器存在的風險 32
3.1.3 容器網絡存在的風險 33
3.1.4 容器管理程序接口存在的風險 33
3.1.5 宿主機操作系統(tǒng)存在的風險 34
3.1.6 無法根治的軟件漏洞 34
3.2 針對容器化開發(fā)測試過程的攻擊案例 34
3.2.1 背景知識 35
3.2.2 CVE-2018-15664:符號鏈接替換漏洞 35
3.2.3 CVE-2019-14271:加載不受信任的動態(tài)鏈接庫 39
3.3 針對容器軟件供應鏈的攻擊案例 43
3.3.1 鏡像漏洞利用 44
3.3.2 鏡像投毒 45
3.4 針對運行時容器的攻擊案例 48
3.4.1 容器逃逸 48
3.4.2 安全容器逃逸 58
3.4.3 資源耗盡型攻擊 73
3.5 本章小結 79
第4章 容器編排平臺的風險分析 80
4.1 容器編排平臺面臨的風險 80
4.1.1 容器基礎設施存在的風險 81
4.1.2 Kubernetes組件接口存在的風險 82
4.1.3 集群網絡存在的風險 84
4.1.4 訪問控制機制存在的風險 84
4.1.5 無法根治的軟件漏洞 85
4.2 針對Kubernetes組件不安全配置的攻擊案例 85
4.2.1 Kubernetes API Server未授權訪問 85
4.2.2 Kubernetes Dashboard未授權訪問 86
4.2.3 Kubelet未授權訪問 87
4.3 針對Kubernetes權限提升的攻擊案例 88
4.3.1 背景知識 88
4.3.2 漏洞分析 90
4.3.3 漏洞復現(xiàn) 94
4.3.4 漏洞修復 101
4.4 針對Kubernetes的拒絕服務攻擊案例 102
4.4.1 CVE-2019-11253:YAML炸彈 102
4.4.2 CVE-2019-9512/9514:HTTP/2協(xié)議實現(xiàn)存在問題 105
4.5 針對Kubernetes網絡的中間人攻擊案例 110
4.5.1 背景知識 112
4.5.2 原理描述 115
4.5.3 場景復現(xiàn) 117
4.5.4 防御策略 123
4.6 本章小結 124
第5章 云原生應用的風險分析 125
5.1 云原生應用風險概述 125
5.2 傳統(tǒng)應用的風險分析 125
5.3 云原生應用的新風險分析 126
5.3.1 數據泄露的風險 126
5.3.2 未授權訪問的風險 128
5.3.3 拒絕服務的風險 129
5.4 云原生應用業(yè)務的新風險分析 130
5.4.1 未授權訪問的風險 130
5.4.2 API濫用的風險 131
5.5 Serverless的風險分析 131
5.5.1 Serverless特征帶來的風險 131
5.5.2 Serverless應用風險 132
5.5.3 Serverless平臺風險 132
5.5.4 Serverless被濫用的風險 154
5.6 本章小結 155
第6章 典型云原生安全事件 156
6.1 特斯拉Kubernetes挖礦事件 156
6.1.1 事件分析 156
6.1.2 總結與思考 158
6.2 微軟監(jiān)測到大規(guī)模Kubernetes挖礦事件 160
6.2.1 事件分析 160
6.2.2 總結與思考 162
6.3 Graboid蠕蟲挖礦傳播事件 164
6.3.1 事件分析 164
6.3.2 總結與思考 166
6.4 本章小結 167
第三部分 云原生安全防護思路和體系
第7章 云原生防護思路轉變 170
7.1 變化:容器生命周期 170
7.2 安全左移 171
7.3 聚焦不變 171
7.4 關注業(yè)務 173
7.5 本章小結 174
第8章 云原生安全體系 175
8.1 體系框架 175
8.2 安全組件簡介 176
第9章 左移的安全機制 178
9.1 開發(fā)安全 178
9.2 軟件供應鏈安全 178
9.3 容器鏡像安全 179
9.3.1 容器鏡像安全現(xiàn)狀 179
9.3.2 容器鏡像安全防護 180
9.4 本章小結 182
第四部分 云原生可觀測性
第10章 可觀測性概述 184
10.1 為什么需要實現(xiàn)云原生可觀測性 184
10.2 需要觀測什么 185
10.3 實現(xiàn)手段 186
10.4 本章小結 187
第11章 日志審計 188
11.1 日志審計的需求與挑戰(zhàn) 188
11.1.1 需求分析 188
11.1.2 面臨的挑戰(zhàn) 189
11.2 Docker日志審計 189
11.3 Kubernetes日志審計 192
11.3.1 應用程序日志 192
11.3.2 系統(tǒng)組件日志 193
11.3.3 日志工具 194
11.4 本章小結 195
第12章 監(jiān)控 196
12.1 云原生架構的監(jiān)控挑戰(zhàn) 196
12.2 監(jiān)控指標 197
12.3 監(jiān)控工具 198
12.3.1 cAdvisor和Heapster 199
12.3.2 Prometheus 199
12.4 本章小結 200
第13章 追蹤 201
13.1 動態(tài)追蹤 201
13.2 eBPF 203
13.2.1 eBPF原理與架構 204
13.2.2 eBPF驗證器 206
13.2.3 eBPF程序類型 207
13.2.4 eBPF工具 208
13.2.5 小結 210
13.3 基于BPFTrace實現(xiàn)動態(tài)追蹤 211
13.3.1 探針類型 212
13.3.2 如何使用BPFTrace進行追蹤 214
13.4 微服務追蹤 219
13.4.1 微服務追蹤概述 219
13.4.2 分布式追蹤 220
13.4.3 微服務追蹤實現(xiàn)示例 220
13.5 本章小結 222
第五部分 容器基礎設施安全
第14章 Linux內核安全機制 224
14.1 隔離與資源管理技術 224
14.1.1 內核命名空間 224
14.1.2 控制組 224
14.2 內核安全機制 225
14.2.1 Capabilities 225
14.2.2 Seccomp 225
14.2.3 AppArmor 226
14.2.4 SELinux 226
14.3 本章小結 227
第15章 容器安全加固 228
15.1 概述 228
15.2 容器安全配置 228
15.3 本章小結 229
第16章 容器環(huán)境的行為異常檢測 230
16.1 基于規(guī)則的已知威脅檢測 230
16.1.1 檢測系統(tǒng)設計 231
16.1.2 基于規(guī)則的檢測實戰(zhàn):CVE-2019-5736 232
16.1.3 小結 234
16.2 基于行為模型的未知威脅檢測 234
16.2.1 檢測系統(tǒng)架構 235
16.2.2 學習與檢測流程 237
16.2.3 基線設計 238
16.2.4 小結 240
16.3 本章小結 240
第六部分 容器編排平臺安全
第17章 Kubernetes安全加固 242
17.1 API Server認證 242
17.1.1 靜態(tài)令牌文件 242
17.1.2 X.509 客戶端證書 243
17.1.3 服務賬號令牌 243
17.1.4 OpenID Connect令牌 245
17.1.5 身份認證代理 246
17.1.6 Webhook令牌身份認證 247
17.1.7 小結 248
17.2 API Server授權 249
17.3 準入控制器 252
17.4 Secret對象 256
17.5 網絡策略 257
17.6 本章小結 259
第18章 云原生網絡安全 260
18.1 云原生網絡架構 260
18.1.1 基于端口映射的容器主機網絡 260
18.1.2 基于CNI的Kubernetes集群網絡 260
18.1.3 服務網格 261
18.2 基于零信任的云原生網絡微隔離 261
18.2.1 什么是微隔離 262
18.2.2 云原生為什么需要微隔離 262
18.2.3 云原生網絡的微隔離實現(xiàn)技術 263
18.2.4 云原生網絡入侵檢測 265
18.3 基于Cilium的網絡安全方案示例 266
18.3.1 Cilium架構 266
18.3.2 Cilium組網模式 268
18.3.3 Cilium在Overlay組網下的通信示例 268
18.3.4 API感知的安全性 272
18.4 本章小結 277
第七部分 云原生應用安全
第19章 面向云原生應用的零信任安全 280
19.1 什么是信任 280
19.2 真的有零信任嗎 282
19.3 零信任的技術路線 282
19.4 云化基礎設施與零信任 284
19.5 云原生環(huán)境零信任架構 286
19.6 本章小結 287
第20章 傳統(tǒng)應用安全 289
20.1 應用程序代碼漏洞緩解 289
20.1.1 安全編碼 290
20.1.2 使用代碼檢測工具 290
20.2 應用程序依賴庫漏洞防護 290
20.2.1 使用受信任的源 290
20.2.2 使用軟件組成分析工具 290
20.3 應用程序訪問控制 291
20.4 應用程序數據安全防護 291
20.4.1 安全編碼 291
20.4.2 使用密鑰管理系統(tǒng) 292
20.4.3 使用安全協(xié)議 292
20.5 本章小結 292
第21章 API安全 293
21.1 傳統(tǒng)API防護 293
21.2 API脆弱性檢測 293
21.3 云原生API網關 294
21.4 本章小結 295
第22章 微服務架構下的應用安全 296
22.1 認證服務 297
22.1.1 基于JWT的認證 297
22.1.2 基于Istio的認證 298
22.2 訪問控制 306
22.2.1 基于角色的訪問控制 306
22.2.2 基于Istio的訪問控制 306
22.3 數據安全 310
22.4 其他防護機制 310
22.4.1 Istio和API網關協(xié)同的全面防護 311
22.4.2 I