前言欢迎阅读本书,这是为希望安全可靠地运行工作负载的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 NorthSebastopol, 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,感谢他们带领我们完成了这本书的写作。