关于我们
书单推荐
新书推荐
|
Kubernetes安全指南 读者对象:DevOps工程师,Kubernetes平台工程师,云原生架构师
本书的主要内容有:通过威胁建模来了解Kubernetes系统的漏洞。聚焦pod,从配置到攻防。保护你的集群和工作负载流量。使用RBAC、OPA和Kyverno定义和实施策略。深入研究沙箱和隔离技术等。
编辑推荐 想要安全可靠地运行你的Kubernetes工作负载吗?本书提供了基于威胁的Kubernetes安全指南,每一章都会检查特定组件的架构和默认设置,并且回顾现有的备受瞩目的攻击和历史上的通用漏洞披露(CVE)。本书作者分享了最Z佳实践配置,帮助你从可能收到攻击的角度强化集群。
专家推荐 “这是一本很棒的书,从攻击者的角度全面介绍了他们可能如何尝试破坏 Kubernetes 集群,以及你可以采取哪些措施来阻止他们。” ——Liz Rice Isovalent 首席开源官
“每个运行基于 Kubernetes 的工作负载的团队的必B备读物。” ——Bilgin Ibryam Red Hat产品经理和《Kubernetes Patterns》的合著者
前言 欢迎阅读本书,这是为希望安全可靠地运行工作负载的Kubernetes 从业者准备的。在撰写本书时,Kubernetes 已经存在了大约六年。有超过一百个经认证的Kubernetes 产品(https://oreil.ly/bo2xA)可用,如分发和托管服务。随着越来越多的组织决定将其工作负载转移到Kubernetes,我们想分享这一领域的经验,帮助你更安全可靠地部署和运维工作负载。感谢你加入我们的旅程,我们希望你在阅读本书并应用你所学知识时,能像我们在写作本书时一样开心。 在前言中,我们将描绘我们的目标读者,聊聊我们为什么写这本书,并解释我们认为你应该如何通过提供的快速内容指南来使用它。我们还将讨论一些细节,如Kubernetes 版本和使用惯例。 关于读者 为了更好地理解本书,我们假设你要么是DevOps 工程师,要么是Kubernetes平台工程师,要么是云原生架构师,要么是站点可靠性工程师(SRE),要么是首席信息安全官(CISO)。我们进一步假设你有兴趣进行实践,我们在理论上讨论威胁和防御的同时,也会尽最大努力演示它们,并向你介绍可以帮助你的工具。 在这一点上,我们还想确保你明白你正在读的书是针对高级主题的。我们假设你已经熟悉Kubernetes,特别是Kubernetes 安全主题,至少在表面上是这样。换句话说,我们不会详细讨论Kubernetes 是如何工作的,而是在每章的基础上总结或重述重要的概念或机制。 特别是,我们假设你了解容器的用途以及它们如何在Kubernetes 中运行。如果你还不熟悉这些主题,我们建议你做一些初步阅读。以下是我们建议参考的书籍: ? Kubernetes: Up and Running (https://oreil.ly/k9ydo) by Brendan Burns, Kelsey Hightower, and Joe Beda (O ’Reilly) ? Managing Kubernetes (https://oreil.ly/cli0J) by Brendan Burns and Craig Tracey (O’Reilly) ? Kubernetes Security (https://oreil.ly/S8jQf) by Liz Rice and Michael Hausenblas (O’Reilly) ? Container Security (https://oreil.ly/Yh8EM) by Liz Rice (O ’Reilly) ? Cloud Native Security by Chris Binnie and Rory McCune (Wiley) 既然我们已经清楚了这本书的目标是什么,以及在我们看来,谁将从中受益,那么让我们转向另一个话题:作者。 关于作者 在设计、运行、攻击和保护基于Kubernetes 的工作负载和集群方面,我们拥有超过10 年的实践经验,基于这些经验,我们希望为你(云原生安全从业者)提供所需的内容,从而帮助你在工作中获得成功。 以史为鉴,过去的错误常常会给安全工作带来启发,我们两个都已经学习(并且在犯错误!)Kubernetes 安全一段时间了。我们想确定我们对这个主题的理解是正确的,所以我们写了一本书,通过一个共同的视角来验证我们的猜疑。我们都在不同的公司担任过不同的角色,参加过培训课程,发布过各种资料,从工具到博客文章。我们还在各种公开演讲活动中分享了在这个主题上学到的经验。我们在这里的大部分动机和我们使用的例子都源于我们在日常工作中的经历和/ 或我们在客户公司观察到的事情。 如何使用这本书 这本书是一本基于威胁的Kubernetes 安全指南,使用普通的Kubernetes 安装方案及其内置的默认配置作为起点。我们将从运行任意工作负载的分布式系统的抽象威胁模型开始讨论,然后详细评估一个安全的Kubernetes 系统的每个组件。在每一章中,我们将研究组件的架构和潜在的默认设置,并回顾备受关注的攻击和历史上的通用漏洞披露(CVE)。我们还演示了攻击并分享了最佳实践配置,以便从可能的攻击角度演示加固集群。 为了帮助你浏览这本书,这里有一个章节级的快速纲要: ? 第1 章“概述”,我们设置了场景,介绍了我们的主要对手以及什么是威胁建模。 ? 第2 章“pod 资源详情”,重点关注pod 的配置、攻击以及防御。 ? 第3 章“容器运行时隔离”,深入沙箱和隔离技术。 ? 第4 章“应用程序和供应链”,将介绍供应链攻击,以及如何检测和缓解它们。 ? 第5 章“网络”,我们将审查网络默认设置以及如何保护你的集群和工作负载流量。 ? 第6 章“存储”,我们将重点转移到持久性,看一看文件系统、卷和静态敏感信息。 ? 第7 章“硬性多租户”,介绍了在集群中为多租户运行工作负载的主题,以及这可能会导致的问题。 ? 第8 章“策略”,我们将审查正在使用的各种策略,讨论访问控制,特别是基于角色的访问控制(RBAC),以及通用策略解决方案,如OpenPolicy Agent (OPA)。 ? 第9 章“入侵检测”,我们讨论了这样一个问题:尽管已经采取了控制措施,如果有人设法闯入,你该怎么办。 ? 第10 章“组织”,这一章有些特殊,因为它并不关注工具,而是关注在云和本地安装时,人这一个因素。 ? 在附录A“pod 级攻击”中,我们将带你亲身体验第2 章中讨论的pod 层面的攻击。最后,在附录B“资料”中,我们将每一章的进一步阅读材料以及与本书相关的注释简历集合在一起。 你不必按顺序阅读章节,我们尽最大努力保持各章节独立,并在适当的地方引用相关内容。 请注意,在编写本书时,Kubernetes 1.21 是最新的稳定版本。此处展示的大多数示例都适用于较早的版本。并且我们充分意识到,当你阅读本文时,当前版本可能比现在高很多。但这些概念在各版本间都保持不变。 这本快速定位的简短指南就此完成,让我们来看看书中使用的约定。 排版约定 本书使用了下述排版约定。 斜体(Italic) 表示新术语、URL、电子邮件地址、文件名和扩展名。 等宽字体(Constant Width) 表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。 使用代码示例 补充材料可从以下网址获得:http://hacking-kubernetes.info。 如果你有技术问题或使用代码示例的问题,请发送电子邮件至bookquestions@oreilly.com。 这本书是来帮助你完成工作的。一般来说,如果本书提供了示例代码,你可以在你的程序和文档中使用它。除非你要复制代码的重要部分,否则你不需要联系我们以获得许可。例如,编写的程序,仅使用本书中几段代码,那么就不需要许可。出售或分发O’Reilly 书籍中的例子需要得到许可。通过引用这本书和引用示例代码来回答问题不需要许可。将本书中的大量示例代码并入到你的产品文档中,那就需要许可。 我们很感激, 但一般不需要署名。署名通常包括标题、作者、出版商和ISBN。例如:“Hacking Kubernetes by Andrew Martin and Michael Hausenblas (O’Reilly).Copyright 2022 Andrew Martin and Michael Hausenblas,978-1-492-08173-9”。 如果你觉得你对代码示例的使用超出了合理使用或上述许可的范围,请随时联系我们permissions@oreilly.com。 O’Reilly 在线学习平台(O’Reilly Online Learning) 近40 年来,O’Reilly Media 致力于提供技术和商业培 训、知识和卓越见解,来帮助众多公司取得成功。 公司独有的专家和改革创新者网络通过O’Reilly 书籍、文章以及在线学习平台,分享他们的专业知识和实践经验。O’Reilly 在线学习平台按照您的需要提供实时培训课程、深入学习渠道、交互式编程环境以及来自O’Reilly 和其他200 多家出版商的大量书籍与视频资料。更多信息,请访问网站:https://www.oreilly.com/。 联系我们 任何有关本书的意见或疑问,请按照以下地址联系出版社。 美国: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 中国: 北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035) 奥莱利技术咨询(北京)有限公司 这本书有专属网页,在那里我们列出了勘误表、例子和任何附加信息。你可以通过以下网址访问:https://oreil.ly/HackingKubernetes。 如果你对本书有一些评论或技术上的建议,请发送电子邮件到errata@oreilly.com.cn。 要了解有关O’Reilly 书籍和课程的新闻和信息,请访问http://oreilly.com。 我们的Facebook:http://facebook.com/oreilly。 我们的Twitter:http://twitter.com/oreillymedia。 我们的Youtube:http://www.youtube.com/oreillymedia。 致谢 感谢我们的审校Roland Huss、Liz Rice、Katie Gamanji、Ihor Dvoret-skyi、Mark Manning 和Michael Gasch。你们的评论对本书绝对有重要影响,感谢你们的指导和建议。 Andy 要感谢他的家人和朋友对他不断地爱和鼓励,感谢鼓舞人心且精明干练的ControlPlane 团队孜孜不倦的深刻见解和指导,以及不断带来启发的cloud native security community,感谢他们持续的慷慨和才华。特别感谢Rowan Baker、Kevin Ward、Lewis Denham-Parry、Nick Simpson、Jack Kelly 和James Cleverley-Prance。 Michael 想表达他最深切的感谢,感谢支持他并且棒极了的家人:我们的孩子Saphira、Ranya 和Iannis,我聪明有趣的妻子Anneli-ese,以及我们最棒的狗狗Snoopy。 我们不能不提Hacking Kubernetes 的启发者和导师的Twitter 列表(https://oreil.ly/xr1is),以字母顺序排列的专家,如@antitree、@bradgeesaman、@brau_ner、@christianposta、@dinodaizovi、@erchiang、@garethr、@IanColdwater、@IanMLewis、@jessfraz、@jonpulsifer、@jpetazzo、@justincormack、@kelseyhightower、@krisnova、@kubernetesonarm、@liggitt、@lizrice、@lordscyphar、@lorenc_dan、@lumjjb、@mauilion、@MayaKaczorowski、@mikedanese、@monadic、@raesene、@swagitda_、@tabbysable、@tallclair、@torresariass、@WhyHiAnnabelle 和@and also our bestest of all dogs, Snoopy. We would be remiss not to mention the Hacking Kubernetes Twitter list (https://oreil.ly/xr1is) of our inspirations and mentors, featuring alphabetized luminaries such as @antitree, @bradgeesaman, @brau_ner, @christianposta, @dinodaizovi,@erchiang, @garethr, @IanColdwater, @IanMLewis, @jessfraz, @jonpulsifer, @jpetazzo,@justincormack, @kelseyhightower, @krisnova, @kubernetesonarm, @liggitt,@lizrice, @lordcyphar, @lorenc_dan, @lumjjb, @mauilion, @MayaKaczorowski,@mikedanese, @monadic, @raesene, @swagitda_, @tabbysable, @tallclair, @torresariass,@WhyHiAnnabelle, and @captainHλ$?????A¢k. Last but certainly not least, both authors thank the O’Reilly team, especially Angela Rufino, for shepherding us through the process of writing this book. 最后但同样重要的是,两位作者都感谢O’Reilly 团队,尤其是Angela Rufino,感谢他们带领我们完成了这本书的写作。
Andrew Martin是ControlPlane的CEO。 Machael Hausenblas是AWS的解决方案工程主管。
目录 前言 1 目录 第1 章 概述 9 1.1 场景介绍10 1.2 威胁模型12 1.2.1 威胁主体 .13 1.2.2 第一个威胁模型 16 1.3 关于攻击树 19 1.4 攻击树案例 20 1.5 现有的技术 23 1.6 小结 .24 第2 章 pod 资源详情 25 2.1 默认配置25 2.2 威胁模型27 2.3 对攻击的剖析 .28 2.3.1 远程代码执行 28 2.3.2 网络攻击面 29 2.4 Kubernetes 工作负载:pod 中的应用程序 31 2.5 什么是pod ? .33 2.6 了解容器37 2.6.1 共享网络和存储 39 2.6.2 最坏的情况可能会是什么? .40 2.6.3 容器逃逸 .44 2.7 pod 配置和威胁 .47 2.7.1 pod 头部 48 2.7.2 反向正常运行时间 .49 2.7.3 标签 50 2.7.4 托管字段 .50 2.7.5 pod 命名空间和所有者 .51 2.7.6 环境变量 .51 2.7.7 容器镜像 .52 2.7.8 pod 探针 55 2.7.9 CPU 和内存限制和请求 55 2.7.10 DNS .56 2.7.11 pod securityContext .59 2.7.12 pod Sevice Accounts 61 2.7.13 调度器和容忍度 61 2.7.14 pod 卷定义 62 2.7.15 pod 网络状态 63 2.8 正确使用securityContext .63 2.8.1 使用Kubesec 增强securityContext 65 2.8.2 强化的securityContext .66 2.9 进入风暴中心 .72 2.10 小结 72 第3 章 容器运行时隔离 .75 3.1 默认配置76 3.2 威胁模型76 3.3 容器,虚拟机和沙盒 79 3.3.1 虚拟机是如何工作的.81 3.3.2 虚拟化的好处 84 3.3.3 容器有哪些问题? .85 3.3.4 用户命名空间缺陷 .86 3.4 沙盒化(sandboxing) 91 3.4.1 gVisor 94 3.4.2 Firecracker 102 3.4.3 Kata Container 103 3.4.4 rust-vmm 105 3.5 沙盒化的风险 107 3.6 Kubernetes 运行时类 107 3.7 本章小结. 108 第4 章 应用程序和供应链 111 4.1 默认配置. 112 4.2 威胁模型. 112 4.3 供应链 . 113 4.3.1 软件 . 117 4.3.2 扫描CVE . 118 4.3.3 采用开源软件 . 119 4.3.4 我们应该相信哪些生产商? 120 4.4 CNCF 安全技术咨询组 122 4.4.1 架构容器化应用以提高弹性 122 4.4.2 检测木马 123 4.5 攻击供应链 124 4.5.1 攻击的持续性 . 126 4.5.2 系统面临的风险 127 4.6 容器镜像构建供应链 128 4.6.1 软件工厂 128 4.6.2 神圣的镜像工厂 129 4.6.3 基础镜像 130 4.7 容器供应链的状态 . 132 4.7.1 来自第三方代码的风险 . 133 4.7.2 软件材料清单 . 134 4.7.3 人类身份和GPG 136 4.8 对构建和元数据签名 137 4.8.1 Notary v1 137 4.8.2 sigstore 137 4.8.3 in-toto 和TUF 139 4.8.4 GCP 二进制授权 140 4.8.5 Grafeas 140 4.9 基础设施供应链 . 140 4.9.1 Operator 权限 .140 4.9.2 攻击上游供应链 141 4.10 供应链攻击的类型 142 4.10.1 摄取开源代码 144 4.10.2 贯穿SDLC 的应用程序漏洞 146 4.11 防御SUNBURST .147 4.12 小结 150 第5 章 网络 . 151 5.1 默认配置. 152 5.1.1 pod 内网络 154 5.1.2 pod 间通信 155 5.1.3 pod 与工作节点间的流量 . 155 5.1.4 集群外部流量 . 156 5.1.5 ARP 的状态 .157 5.1.6 无securityContext 158 5.1.7 无工作负载身份 159 5.1.8 无网络传输加密 159 5.2 威胁模型. 160 5.3 流量流向控制 161 5.3.1 安装 . 161 5.3.2 网络策略前来救援! 165 5.4 服务网格. 168 5.4.1 概念 . 168 5.4.2 选项和采用 . 168 5.4.3 案例研究:使用Linkerd 的mTLS 170 5.5 eBPF . 173 5.5.1 概念 . 173 5.5.2 选项和采用 . 174 5.5.3 案例研究:将探针附加到Go 程序 . 175 5.6 小结 177 第6 章 存储 . 179 6.1 默认配置. 180 6.2 威胁模型. 180 6.3 卷和数据存储 183 6.3.1 一切皆是字节流 183 6.3.2 何为文件系统? 184 6.3.3 容器中的卷和挂载 186 6.3.4 OverlayFS 186 6.3.5 tmpfs 188 6.3.6 挂载卷打破了容器隔离 . 190 6.3.7 基于/proc/self/exe 的漏洞 193 6.4 静态的敏感信息 . 195 6.4.1 Secret 挂载 195 6.4.2 攻击挂载的Secret 196 6.5 Kubernetes 存储 197 6.5.1 容器存储接口 . 197 6.5.2 投射卷 198 6.5.3 攻击卷 200 6.5.4 主机目录挂载的风险 202 6.5.5 从数据存储中泄露的其他Secret 203 6.6 小结 203 第7 章 硬性多租户 205 7.1 默认配置. 206 7.2 威胁模型. 206 7.3 命名空间资源 207 7.3.1 节点池 208 7.3.2 节点污点 210 7.4 软性多租户 212 7.5 硬性多租户 213 7.5.1 敌对租户 213 7.5.2 沙盒和策略 . 214 7.5.3 公有云多租户 . 215 7.6 控制平面. 216 7.6.1 API server 和etcd .218 7.6.2 调度器和控制器管理器 . 220 7.7 数据平面. 223 7.8 集群隔离架构 225 7.9 集群支持服务和工具环境 . 227 7.10 安全监控和可见性 227 7.11 小结 228 第8 章 策略 . 229 8.1 策略的类型 230 8.2 云服务提供商 230 8.2.1 网络流量 232 8.2.2 限制资源分配 . 232 8.2.3 资源配额 232 8.2.4 运行时策略 . 233 8.2.5 访问控制策略 . 234 8.3 威胁模型. 234 8.4 普遍预期. 235 8.4.1 碎玻璃场景 . 235 8.4.2 审计 . 236 8.5 认证和授权 236 8.5.1 人类用户 238 8.5.2 工作负载身份 . 238 8.6 基于角色的访问控制(RBAC) 242 8.6.1 RBAC 回顾 . 242 8.6.2 一个简单的RBAC 例子 243 8.6.3 创建RBAC . 245 8.6.4 分析和可视化RBAC 248 8.6.5 RBAC 相关的攻击 250 8.7 通用策略引擎 251 8.7.1 开放策略代理(OPA) .251 8.7.2 Kyverno . 258 8.7.3 其他策略方案 . 260 8.8 小结 261 第9 章 入侵检测 . 263 9.1 默认配置. 264 9.2 威胁模型. 264 9.3 传统的IDS 265 9.4 基于eBPF 的IDS 267 9.4.1 Kubernetes 和容器入侵检测 268 9.4.2 Falco 268 9.5 基于机器学习方法的IDS 271 9.6 容器取证. 271 9.7 蜜罐技术. 274 9.8 审计 276 9.9 检测规避. 277 9.10 安全运营中心 279 9.11 小结 279 第10 章 组织 281 10.1 最薄弱的连接点 282 10.2 云服务提供商 284 10.2.1 责任共担 285 10.2.2 账户卫生 286 10.2.3 对人员和资源进行分组 287 10.2.4 其他注意事项 289 10.3 本地环境 290 10.4 常见注意事项 292 10.4.1 威胁模型爆炸 292 10.4.2 SLO 如何给你带来额外的压力 295 10.4.3 社会工程 295 10.4.4 隐私和监管问题 . 298 10.5 小结 298 附录A pod 级攻击 . 299 附录B 资源 315
你还可能感兴趣
我要评论
|