【新书速递】应用上云成必然趋势,“安全左移”是云原生安全的必经之路?

2021-11-10 14:36:15 浏览数 (1)

云计算一经走向市场,就迅速呈现出强大的生命力。随着大数据时代的到来,云计算成为大数据的承载平台,“云计算 大数据 人工智能”成为新基建的核心。云计算也因大数据、人工智能的不断发展而成为信息技术应用的一个重要支柱,在较长时间内占据信息技术的应用舞台。

众所周知,云计算架构通常分为三层,即基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS),反映了云计算平台是在基础设施、平台及软件服务三个层面进行云化。因此,在早期人们常常利用开源或商业的IaaS系统构建云计算平台,简单地将传统物理主机、平台或应用转为虚拟化形态,以便达到整体资源利用更合理、集约式运营降低成本、提升整体水平的目的。随着云计算应用的普及,更多的用户使用云计算资源并非图其算力,往往仅仅是图个方便而已,就好比让硬件设备随用随弃一样,这也充分体现了云计算平台的弹性与分布式架构的特色。既然应用上云成为必然的趋势,如何将本地部署的传统应用更好地搬上可以云化的云计算平台,让业务更好地与云计算平台相融合,就成为需要着重关注的问题。

在实践中,本地部署的传统应用面临着停机更新、无法动态扩展、绑定网络资源(如IP、端口)及系统环境、需要人工部署及运维等方面的限制。如果仅仅是简单地将本地部署的应用迁移到云计算平台上,则很难发挥出云计算平台的优势。因此,充分利用云计算弹性、敏捷、资源池和服务化等特性,以解决业务在开发、运行整个生命周期中遇到的问题成为当务之急。为此,企业界率先提出了在云上设计应用程序的理念,使应用程序得以在云中以最佳的模式运行,以便充分发挥出云计算平台的弹性及分布式架构优势,这就是云原生(Cloud Native)架构。云原生计算基金会(CNCF)对云原生给出的解释是:“云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统做出频繁和可预测的重大变更。”云原生技术正在深刻改变企业上云的模式和新基建所独有的各类特性,也对云安全的后续发展产生深远影响。

安全是一个伴生技术,新技术必然会伴生新的安全问题。云原生出现后,云原生安全问题自然随之而来,并表现为“面向云原生环境的安全问题”和“具有云原生特征的安全问题”。本书作者强调了这样的观点:“容器不是轻量级的虚拟化,容器安全不是轻量级的虚拟化安全;虚拟化安全关注的是资源,云原生安全关注的是应用;安全左移是云原生安全的必经之路。”所谓安全左移,本质上是美国国防体系在21世纪初所提出的“软件确保”(Software Assurance)理念在云计算平台上的落地。我在21世纪初也在提倡“举起软件确保大旗,固本清源,将信息安全向源头推进”的理念,这在当下有一个时髦的词——内生安全,其核心是在软件开发阶段就需要注入安全的理念,不仅要确保软件的所有功能都是可预期的,还要努力做到不存在“可被利用的”漏洞。

这里我们介绍一本新书:《云原生安全:攻防实践与体系构建》,它从云原生技术的风险分析入手,介绍了云原生安全防护思路和体系以及云原生的可观测性,并重点介绍了容器基础设施安全、容器编排平台安全与云原生应用安全。本书的作者长期从事网络安全方面的工程实践工作,尤其是云计算安全和网络安全的前沿研究和产品孵化,因此本书也给出了很好的云原生安全实践的内容。本书内容翔实,注重实践,对从事云原生工作的科技工作者与相关研究人员都具有很高的参考价值。

7大核心内容

NO.1 云原生技术的风险解析

容器基础设施、编排平台、云原生应用的各类风险与真实案例分析

NO.2 云原生的防护思路转换

安全左移、聚焦变化中的不变、关注贴近价值的业务

NO.3 云原生的可观测性

可见才可防:日志、审计、监控与追踪

NO.4 容器基础设施安全

资源安全:Linux内核安全、容器安全加固、行为异常检测

NO.5 容器编排平台安全

平台与网络安全:Kubernetes安全加固、云原生网络安全

NO.6 云原生应用安全

零信任架构、API安全、微服务架构的应用安全、业务与无服务安全

NO.7 各类云化设施安全

5G安全、边缘计算安全、工业物联网安全

内容简介

本书面向实战攻防,分析了云原生体系每层的安全风险与威胁,并根据各类攻击场景,有针对性地设计了面向云原生架构的安全防护体系。

针对每种攻击场景,设计了相应的应对手段,在容器、编排和服务三个层面介绍了相应的安全防护机制,并将云原生的安全能力扩展到了5G、边缘计算等新型基础设施场景。

全书一共七部分24章,具体内容如下:

  • 第一部分简要介绍了云原生安全的背景,以及云原生的相关技术;
  • 第二部分系统性地分析了云原生各层所面临的安全风险,以及若干典型的安全事件;
  • 第三部分介绍了云原生时代的安全防护思路和云原生安全体系;
  • 第四部分详细介绍了云原生的可观测性概念和各个组件;
  • 第五部分介绍了容器基础设施层面的安全,包括容器系统内在安全、安全加固和异常检测;
  • 第六部分介绍了容器编排平台安全,包括编排系统安全加固和编排网络安全;
  • 第七部分介绍了云原生应用安全,包括零信任、API安全、微服务、无服务和应用业务安全。

目录

前言

第一部分 云原生安全概述

第1章 云原生安全 2

1.1 云原生:云计算下半场 2

1.2 什么是云原生安全 4

1.2.1 面向云原生环境的安全 4

1.2.2 具有云原生特征的安全 5

1.2.3 原生安全:融合的云原生安全 5

1.3 面向云原生环境的安全体系 7

1.3.1 容器安全 7

1.3.2 编排系统安全 8

1.3.3 云原生应用安全 9

1.4 云原生安全的关键问题 9

1.4.1 如何防护短生命周期的容器 9

1.4.2 如何降低安全运营成本 10

1.4.3DevSecOps 11

1.4.4 如何实现安全的云原生化 12

1.5 云原生安全现状 13

1.5.1 云原生新范式:Docker Kubernetes 13

1.5.2 镜像安全问题仍然很突出 14

1.5.3 安全配置规范执行和密钥凭证管理不理想 15

1.5.4 运行时安全关注度上升,但依然很难 17

1.5.5 合规性要求依然迫切,但业界苦于无规可循 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.5Serverless 25

2.6DevOps 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 宿主机操作系统存在的风险 34

3.1.6 无法根治的软件漏洞 34

3.2 针对容器化开发测试过程的攻击案例 34

3.2.1 背景知识 35

3.2.2CVE-2018-15664:符号链接替换漏洞 35

3.2.3CVE-2019-14271:加载不受信任的动态链接库 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.2Kubernetes组件接口存在的风险 82

4.1.3 集群网络存在的风险 84

4.1.4 访问控制机制存在的风险 84

4.1.5 无法根治的软件漏洞 85

4.2 针对Kubernetes组件不安全配置的攻击案例 85

4.2.1Kubernetes API Server未授权访问 85

4.2.2Kubernetes Dashboard未授权访问 86

4.2.3Kubelet未授权访问 87

4.3 针对Kubernetes权限提升的攻击案例 88

4.3.1 背景知识 88

4.3.2 漏洞分析 90

4.3.3 漏洞复现 94

4.3.4 漏洞修复 101

4.4 针对Kubernetes的拒绝服务攻击案例 102

4.4.1CVE-2019-11253:YAML炸弹 102

4.4.2CVE-2019-9512/9514:HTTP/2协议实现存在问题 105

4.5 针对Kubernetes网络的中间人攻击案例 110

4.5.1 背景知识 112

4.5.2 原理描述 115

4.5.3 场景复现 117

4.5.4 防御策略 123

4.6 本章小结 124

第5章 云原生应用的风险分析 125

5.1 云原生应用风险概述 125

5.2 传统应用的风险分析 125

5.3 云原生应用的新风险分析 126

5.3.1 数据泄露的风险 126

5.3.2 未授权访问的风险 128

5.3.3 拒绝服务的风险 129

5.4 云原生应用业务的新风险分析 130

5.4.1 未授权访问的风险 130

5.4.2API滥用的风险 131

5.5Serverless的风险分析 131

5.5.1Serverless特征带来的风险 131

5.5.2Serverless应用风险 132

5.5.3Serverless平台风险 132

5.5.4Serverless被滥用的风险 154

5.6 本章小结 155

第6章 典型云原生安全事件 156

6.1 特斯拉Kubernetes挖矿事件 156

6.1.1 事件分析 156

6.1.2 总结与思考 158

6.2 微软监测到大规模Kubernetes挖矿事件 160

6.2.1 事件分析 160

6.2.2 总结与思考 162

6.3Graboid蠕虫挖矿传播事件 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 关注业务 173

7.5 本章小结 174

第8章 云原生安全体系 175

8.1 体系框架 175

8.2 安全组件简介 176

第9章 左移的安全机制 178

9.1 开发安全 178

9.2 软件供应链安全 178

9.3 容器镜像安全 179

9.3.1 容器镜像安全现状 179

9.3.2 容器镜像安全防护 180

9.4 本章小结 182

第四部分 云原生可观测性

第10章 可观测性概述 184

10.1 为什么需要实现云原生可观测性 184

10.2 需要观测什么 185

10.3 实现手段 186

10.4 本章小结 187

第11章 日志审计 188

11.1 日志审计的需求与挑战 188

11.1.1 需求分析 188

11.1.2 面临的挑战 189

11.2Docker日志审计 189

11.3Kubernetes日志审计 192

11.3.1 应用程序日志 192

11.3.2 系统组件日志 193

11.3.3 日志工具 194

11.4 本章小结 195

第12章 监控 196

12.1 云原生架构的监控挑战 196

12.2 监控指标 197

12.3 监控工具 198

12.3.1cAdvisor和Heapster 199

12.3.2Prometheus 199

12.4 本章小结 200

第13章 追踪 201

13.1 动态追踪 201

13.2eBPF 203

13.2.1eBPF原理与架构 204

13.2.2eBPF验证器 206

13.2.3eBPF程序类型 207

13.2.4eBPF工具 208

13.2.5 小结 210

13.3 基于BPFTrace实现动态追踪 211

13.3.1 探针类型 212

13.3.2 如何使用BPFTrace进行追踪 214

13.4 微服务追踪 219

13.4.1 微服务追踪概述 219

13.4.2 分布式追踪 220

13.4.3 微服务追踪实现示例 220

13.5 本章小结 222

第五部分 容器基础设施安全

第14章 Linux内核安全机制 224

14.1 隔离与资源管理技术 224

14.1.1 内核命名空间 224

14.1.2 控制组 224

14.2 内核安全机制 225

14.2.1Capabilities 225

14.2.2Seccomp 225

14.2.3AppArmor 226

14.2.4SELinux 226

14.3 本章小结 227

第15章 容器安全加固 228

15.1 概述 228

15.2 容器安全配置 228

15.3 本章小结 229

第16章 容器环境的行为异常检测 230

16.1 基于规则的已知威胁检测 230

16.1.1 检测系统设计 231

16.1.2 基于规则的检测实战:CVE-2019-5736 232

16.1.3 小结 234

16.2 基于行为模型的未知威胁检测 234

16.2.1 检测系统架构 235

16.2.2 学习与检测流程 237

16.2.3 基线设计 238

16.2.4 小结 240

16.3 本章小结 240

第六部分 容器编排平台安全

第17章 Kubernetes安全加固 242

17.1API Server认证 242

17.1.1 静态令牌文件 242

17.1.2X.509 客户端证书 243

17.1.3 服务账号令牌 243

17.1.4OpenID Connect令牌 245

17.1.5 身份认证代理 246

17.1.6Webhook令牌身份认证 247

17.1.7 小结 248

17.2API Server授权 249

17.3 准入控制器 252

17.4Secret对象 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 云原生网络的微隔离实现技术 263

18.2.4 云原生网络入侵检测 265

18.3 基于Cilium的网络安全方案示例 266

18.3.1Cilium架构 266

18.3.2Cilium组网模式 268

18.3.3Cilium在Overlay组网下的通信示例 268

18.3.4API感知的安全性 272

18.4 本章小结 277

第七部分 云原生应用安全

第19章 面向云原生应用的零信任安全 280

19.1 什么是信任 280

19.2 真的有零信任吗 282

19.3 零信任的技术路线 282

19.4 云化基础设施与零信任 284

19.5 云原生环境零信任架构 286

19.6 本章小结 287

第20章 传统应用安全 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 使用密钥管理系统 292

20.4.3 使用安全协议 292

20.5 本章小结 292

第21章 API安全 293

21.1 传统API防护 293

21.2API脆弱性检测 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.1Istio和API网关协同的全面防护 311

22.4.2Istio与WAF结合的深度防护 312

22.5 本章小结 314

第23章 云原生应用业务和Serverless安全 315

23.1 云原生应用业务安全 315

23.2Serverless应用安全防护 316

23.3Serverless平台安全防护 317

23.3.1 使用云厂商提供的存储最佳实践 318

23.3.2 使用云厂商的监控资源 318

23.3.3 使用云厂商的账单告警机制 318

23.4Serverless被滥用的防护措施 318

23.5 其他防护机制 319

23.5.1Serverless资产业务梳理 319

23.5.2 定期清理非必要的Serverless实例 319

23.5.3 限制函数策略 319

23.6 本章小结 319

第24章 云原生应用场景安全 320

24.15G安全 320

24.2 边缘计算安全 323

24.3 工业互联网安全 327

24.4 本章小结 327

后记 云原生安全实践与未来展望 328

参考文献 331

0 人点赞