本文翻译自 ContainerJournal 的 2022 年度文章之一 《Implementing Zero-Trust on Kubernetes》[1],作者 Deepak Goel 在文中分享了 Kubernetes 上实施零信任的三个最佳实践。
作为云原生社区的基石,Kubernetes 帮助企业在生产环境中更高效地部署和管理容器。尽管 Kubernetes 最初设计时提供了基本的 安全功能[2],但广泛且迅速的采用以及日益复杂的威胁形势使 Kubernetes 更容易受到攻击。开发人员和安全专家当下的任务是扩展 Kubernetes 的内置安全性,以有效防范更复杂、更多样和更频繁的网络攻击。
以往“信任但要验证”的方式已被证明对云计算复杂的分布式特性无效,因此 Kubernetes[3] 必须转向“从不信任,始终验证”的零信任模型思想,为业务提供更大的保护。
零信任模型的基本概念
基于“从不信任,始终验证”的原则,可以用三个基本概念来解释零信任模型:
安全网络:始终认为网络是敌对的和有威胁的。网络上的内部和外部数据和信息不断暴露在安全威胁之下。
安全资源:网络上存在的任何信息源,无论位于何处,对其都应持怀疑态度。
身份验证:默认情况下不应信任来自内部或外部网络的用户、设备和流量。零信任应该基于使用正确的身份验证和授权的访问控制。
零信任的三个最佳实践
Kubernetes 提供了灵活性,既是优势但也增加了复杂性,为了在不同的网络环境中运行,为服务和工作负载引入了许多配置选项。Kubernetes 部署考虑以下三个零信任模型的最佳实践,以提升安全保护和工作效率。
优化软件配置和访问权限
团队需要为服务和跨集群操作提供一致的配置。虽然 Kubernetes 提供了多种配置选项,但过多的选项会增加安全问题出现的几率。使用零信任框架,组织可以对服务进行持续验证并将其部署到多个集群,而不会危及任何安全性。通过在授予它们对应用程序和服务的任何安全权限之前仔细检查这些配置,组织可以加强分布式 Kubernetes 集群的安全性。
使用零信任模型提高 Kubernetes 安全性的另一种方法是只为软件提供运行所需的权限和功能。虽然确定软件所需的确切权限和功能并不是那么容易,但更好地了解这些元素可以降低安全风险。对于云端的容器编排环境,相比本地环境,赋予有限的权限和能力更为重要。
译者注:持续验证、最小权限原则
记录和监控数据
重要的是提供必要的安全数据,使开发人员和安全专家能够衡量、预测、避免和防御潜在的安全风险。例如,组织应该记录服务识别的用户 ID 或组 ID,尤其是在集群环境。这可确保组织使用所需的 ID 来帮助服务和软件团队更快地识别匿名攻击。日志记录也将是在云原生环境中提供安全可追溯性的信息的关键部分。
有了足够的安全数据,团队还可以重新思考和优化他们的安全实践和应用程序更新,以应对不断变化的技术环境,帮助确保持续抵御攻击。
译者注:提供数据支撑
专注于人员和流程管理
除了来自外部网络的用户和设备之外,合作伙伴、利益相关者或任何有权访问组织的数据库和容器化应用程序的人都是潜在的 Kubernetes 安全威胁。因此,培训内部人员以避免潜在的内部威胁至关重要。如上所述,组织可以从记录和监控平台数据开始,同时让所有利益相关者了解市场上普遍存在的各种攻击策略。
除了适当的培训之外,优化日常运营中的安全流程有助于支撑零信任模型,并最大限度地减少网络攻击对企业云上服务的影响。一些推荐的安全流程包括积极审查网络管理、防火墙清单以及定期检查容器和软件镜像。
由于 air-gapped 为云中的复杂部署模式提供了军事级安全级别,我建议组织将这些操作流程与 air-gapped 实现相结合,为 Kubernetes 项目提供额外的安全级别。
译者注:人员培训、流程约束必不可少
结论
在生产环境中部署和管理 Kubernetes 时,安全性不再是事后的想法。违规、中断和数据盗窃是严重的网络安全问题,可能对组织产生不利影响。数据和信息记录、员工安全培训和流程优化等零信任实践是保护 Kubernetes 项目和 IT 基础架构的有效且实用的方法。通过实施这些实践,组织可以更好地保护 Kubernetes 部署。遵循这种零信任模型将使开发人员和运维人员无需担心集群和基础设施安全问题,同时使安全团队能够专注于安全性,而不是迷失在 Kubernetes 配置中。
参考资料
[1] 《Implementing Zero-Trust on Kubernetes》: https://containerjournal.com/features/implementing-zero-trust-on-kubernetes/
[2] 安全功能: https://containerjournal.com/editorial-calendar/rsa/15-point-kubernetes-security-checklist/
[3] Kubernetes: https://d2iq.com/resources/cheat-sheet/kubernetes-security