零信任是一种网络安全新范式,被一些世界上最大和技术先进的组织所采用,包括谷歌、微软。该技术几乎适用于所有技术平台和基础架构,Kubernetes 也不例外。
在各行各业中,无处不在的压力是交付能够更快、更高效且规模更大的软件。考虑到强大的可移植性和灵活性,许多 IT 组织已转向 Kubernetes 以帮助他们有效地满足不断变化的市场需求。
多年来,Kubernetes 社区一直在积极讨论零信任作为端到端加密策略的重要组成部分。服务网格提供商正在推广基本实践(例如 mTLS 和证书密钥轮换),以便更轻松地实施零信任架构。因此,当今的组织正在努力大规模实施可靠的零信任应用程序。
尽管使用Kubernetes对于希望更有效地移动并大规模提供现代应用程序的企业来说是一个很好的选择,但如果不采取适当的措施,它的相对新颖性和动态操作范式使其成为安全漏洞的潜在目标。此外,随着恶意方不断寻找安全漏洞,即使是拥有丰富 Kubernetes 技能的公司也面临数据泄露。
这也给需要了解 Kubernetes 网络和安全性与传统 IT 和基础设施系统有何不同的团队带来了重大的安全挑战。
Kubernetes 中的安全挑战
虽然 Kubernetes 是 IT 组织高效和大规模交付软件的强大解决方案,但它并非没有安全挑战和漏洞。
首先,Kubernetes 是一个相对较新的系统,这使其成为网络攻击者的诱人猎物。其运营模式的动态特性使情况更加复杂,如果不采取适当的安全措施,很容易为不良行为者留下渗透空间。
根据Shadowserver基金会最近的一份报告https://www.shadowserver.org/news/over-380-000-open-kubernetes-api-servers/
,仅今年一年,就有 38 万个开放的 Kubernetes API 服务器暴露在互联网上。虽然这些服务器仅被确定为暴露且未受到攻击,但这些数字表明了漏洞的严重性及其对 API 服务器的潜在危险。
Salt Security 的2022 年 API 安全状况显示,尽管 95% 的企业在过去 12 个月内其 API 安全性受到威胁,但 34% 的受调查企业没有实施 API 安全策略。
随着越来越多的团队依赖 Kubernetes 来管理和部署他们的应用程序,不安全的访问控制和分段的风险就会持续增加。
攻击者可以关闭整个服务和应用程序,或者在最坏的情况下,使用他们的特权访问来提升自己的权限并访问 Kubernetes 工作负载的敏感数据。
从管理界面的访问方式、服务到服务通信中发生身份验证和授权的位置,到必须为环境中的东西向流量实施的默认拒绝控制,在保护 Kubernetes 部署应用程序过程中,零信任至关重要。
零信任与 Kubernetes 结合的本质
基于容器的云部署最近显示出在生产环境中的快速增长和采用。根据Markets and Markets 的一份报告https://www.marketsandmarkets.com/Market-Reports/application-container-market-182079587.html
,全球应用容器市场预计将从 2018 年的 12 亿美元增长到 2023 年的 49.8 亿美元,预测期内的复合年增长率为 32.9%。
这种增长是由于它们在部署简化和安全的基础架构方面易于使用,这可能是由于全球企业中部署的容器编排和容器安全服务数量不断增加而推动的。Kubernetes 是领先的基础设施管理系统之一,这要归功于它的灵活性、可扩展性和自动化。
2020 年 8 月,美国国家标准技术研究院 (NIST) 发布了一份白皮书,定义了零信任架构(零信任)并探索了“零信任可以改善企业整体信息技术安全态势的部署模型和用例”。从那时起,包括网络安全和基础设施安全局 (CISA) 在内的多个政府机构发布了几份文件来指导零信任的实施,其中包括一个成熟度模型,以帮助开发人员了解完全零信任部署的过程。
在零信任模型中,没有任何人是值得信任的。相反,每一层的每个元素都是需要单独测试和验证的。当技术资产、应用程序或服务连接和交换数据时,连接通过特定代理路由,该代理对所有各方进行身份验证并通过基于策略的权限授予他们访问权限。
零信任系统通过遵守最小特权规则在每个级别运行:拒绝所有各方的访问,除了那些明确授权使用特定资源的人。这样的系统对于云原生应用程序和基础设施尤为重要,因为不断验证特权和身份不仅有帮助,而且是安全必需的。
美国政府支持零信任安全
零信任安全模型的重要性已经增长到连美国联邦政府都注意到的地步。白宫最近发布了一份备忘录https://www.whitehouse.gov/wp-content/uploads/2022/01/M-22-09.pdf
,概述了一项国家零信任战略,要求所有美国联邦机构在 2024 财年结束前达到特定的零信任安全标准。国防部建立了一个零信任参考架构https://dodcio.defense.gov/Portals/0/Documents/Library/(U)ZT_RA_v1.1(U)_Mar21.pdf
。美国国家安全局还发布了一份强化指南,描述了 Kubernetes 的最佳实践。
零信任通过对控制访问 pod 的用户、进程请求提来满足要求,可以帮助加强 Kubernetes 的安全态势并防止来自内部和外部威胁的攻击。
Gartner 副总裁分析师 Arun Chandrasekaran 表示,使用容器安全工具增强 Kubernetes 发行版和公共云 Kubernetes 服务的原生安全机制对于当今的工作流程至关重要。
Kubernetes 固有的复杂性通常会导致组织的版本过时和配置错误,从而使集群容易受到损害,因此,包含许多方面的零信任架构对于使用至关重要,例如对分发和托管供应商的唯一性进行调整、持续交付考虑因素、集群控制和第三方工具(如镜像扫描和工作负载保护)的增强。
服务网格的力量
服务网格是解决 Kubernetes 中零信任网络的最直接方法之一。服务网格利用 Kubernetes 强大的 sidecar 设计模式,其中平台容器可以在部署时与应用程序容器一起动态部署,作为操作功能的后期绑定。
服务网格使用这种 sidecar 策略在运行时将代理注入应用程序 pod 并连接这些代理以处理所有传入和传出流量。这使服务网格能够提供独立于应用程序代码的功能。
实施服务网格(例如 Istio)是实现 Kubernetes 零信任的关键。
服务网格现在可以在应用程序之外交付功能,这种解耦允许安全人员独立于开发人员工作。这种分离是一种最佳做法,因为两个团队仍将朝着一个安全但功能丰富的应用程序的共同目标努力。
要在零信任环境中利用 Kubernetes,您还可以考虑使用适用于所有人的安全生产身份框架 ( SPIFFE )https://spiffe.io/
,它为工作负载提供身份验证功能。Kubernetes 还提供本地工具,让您可以监控网络并自动创建规则和策略。
其他最佳实践和关键支柱
对 Kubernetes 架构使用零信任的另一个优势是,所有微服务都针对静态和动态安全性分别进行了验证,并利用零信任原则来保护自己和彼此。
当在 Kubernetes 中实现零信任时,零信任可以帮助控制用户和外部应用程序对微服务的访问。
这种访问的结构是一组应用程序编程接口 (API) 和用户网关,它们采用围绕身份和持续授权的零信任原则,以确保 Kubernetes 集群内微服务的长期安全。
坚持基本的零信任原则应该是在 Kubernetes 中建立和维护端到端零信任的关键实践。零信任链从每个微服务开始,延伸到个人用户或外部应用程序的 API 边界。
关键实践要素应包括以下内容:
- 为微服务通信构建安全的服务网格,同时阻止微服务的所有其他通信。这可确保所有网络流量都受到监控,并通过代理和访问网关管理对服务的访问。
- 利用可以根据行为分析验证和持续授权的用户、API 和应用程序分配的身份来控制访问。
- 通过云安全态势管理和编排等工具实施策略检查控制,以确保在应用程序生命周期内添加、修改或删除微服务时,适用于集群内的所有微服务。
未来的挑战和机遇
Arctic Wolf Labs 负责人 Daniel Thanos 表示,所有容器都需要宣传和执行安全态势证明策略,该策略可以在授予任何访问权限之前通过适当的工具进行验证。
与所有面向云的系统一样,关键的挑战是使这些实践/工具自动化并将它们向左移动,同时使它们成为开发人员如何创建软件/系统的首要工作。
目前实施此类架构的最大挑战是没有简单的现成解决方案。还缺乏允许该领域不同系统互操作的标准,零信任在很大程度上仍然是专有领域,并且只倾向于在封闭的生态系统中实际工作,这违背了在互联网上构建松散耦合的分布式系统/基于 Web 服务的应用程序的目的。
Alert Logic 工程研究员 Ryan Berg 表示:组织通常倾向于忽视监控和警报系统的使用,这些系统能够理解允许发生的事情和实际发生的事情之间的区别。
挑战通常不在于平台——Kubernetes、无服务器、软件即服务 SaaS 等——而是在于组织分析需求的能力,而不管平台如何。如果你能正确理解零信任本质上需要什么,那么在 Kubernetes 上实现零信任就是一个现实的目标。
基于零信任的 Kubernetes 架构的未来挑战包括建立适用于超大规模云和高度分布式边缘计算等成熟环境的控制,在这些环境中,额外基础设施的成本和可能不太可靠的网络可能会造成差距,这需要通过新的解决方案来解决。
随着实时服务和物联网需要更多的边缘计算,Kubernetes 在高度分布式环境中的能力将不得不扩展以满足合作服务的需求,如今 Kubernetes 中基于零信任的服务,对于未来的应用程序环境来说将是必不可少的。