什么是Kubernetes安全?

复制URL

库伯内特斯也称为K8s或“Kube”,是一个开源容器编配自动化容器化应用程序的部署、管理和扩展的平台。Kubernetes组织Linux集装箱并使用应用程序编程接口(API)连接容器化微服务。由于Kubernetes部署中涉及的任何层或服务都可能存在漏洞,因此保护Kubernetes集群的过程可能很复杂。 

当一些团队采取以集装箱为中心Kubernetes的安全方法,主要关注容器映像和容器运行时的安全,其他人则选择Kubernetes国家安全它采用了更广泛的方法,从Kubernetes中提取上下文,并使用内置的Kubernete控件在整个应用程序开发生命周期中实现基于风险的安全最佳实践。Kubernetes-native安全还解决了Kubernetes特有的风险和漏洞,例如错误配置的Kubernete RBAC策略、不安全的Kubernet控制飞机组件以及滥用的Kubernetes机密。

Kubernetes作为一项相对较新的技术,近年来得到了巨大的采用,但安全投资并没有一直保持增长。再加上缺乏安全意识和不断存在的技能差距,安全事件可能会产生毁灭性的后果。安全问题导致延迟或减缓应用程序开发和部署。当事故达到高潮时,Kubernetes和集装箱安全问题也会导致收入或客户损失、员工解雇以及对业务运营的额外影响。

Kubernetes和集装箱化有助于更快、更具可扩展性开发运营,但它们也带来了额外的安全风险。随着部署更多的容器,您的攻击面会扩大,查明哪些容器存在漏洞或配置错误的能力变得更加困难。

常见风险和挑战

Kubernetes pod-to-do网络

Kubernetes的一个主要优点是它有广泛的网络配置选项,可以控制集群内pods的通信方式。然而,Kubernetes默认情况下不会限制集群内pod之间的网络通信,因此每个pod都可以与其他pod通信,直到分配了相关的网络策略。这意味着一个被坏人破解的单个吊舱可以作为攻击该集群中其他吊舱的载体。Kubernetes网络策略是使用YAML文件编写的。这只是为什么操作Kubernetes网络策略可能具有挑战性的众多原因之一,这可能导致简单地放弃网络分割以提高速度。 

配置管理

错误配置通常是由人为错误和缺乏自动安全扫描造成的,这给Kubernetes环境带来了严重风险,并可能导致漏洞。由于容器的动态特性,识别错误配置并保持一致的安全态势可能是一项挑战。Kubernetes的开发旨在优先考虑速度和可操作性,因此默认配置通常是开放/无限制的。这使得组织容易受到攻击。

软件供应链问题

软件供应链中的安全问题,包括易受攻击的应用程序组件、访问控制不足、缺乏软件物料清单(SBOM)、CI/CD管道缺陷以及政策执行不一致,也是组织的主要关注点。代表云计算和Kubernetes环境的蔓延的软件供应链需要一套独特的控制。软件供应链安全必须从单个开发人员环境(IDE)开始,并一直扩展到运行时环境。它需要考虑所有内容(源代码、图像、工件)、工具(开发人员和安全)以及供应链中涉及的人员。源代码分析、访问控制、认证、SBOM只是软件供应链安全的众多安全考虑因素中的几个。 

向左移动安全

与软件供应链安全密切相关的是将安全转移到左边的挑战。将安全性向左转移是一个概念,它指出Kubernetes的安全工作应该转移到容器生命周期的早期阶段。这是一个挑战,因为左移安全要求开发人员成为安全用户,拥有在其工作流中做出安全决策的知识和工具。然而,将安全性转向左侧的商业利益是巨大的。这是实现Kubernetes和容器安全性的主要方式。在构建阶段解决的安全问题越多,可能出现的运行时问题就越少,从而减少项目延迟。

运行时检测和响应

在Kubernetes环境中运行的容器化应用程序中,运行时威胁向量的数量给负责检测和响应此类问题的团队带来了挑战。坏参与者有很多方法可以获得对Kubernetes环境的初始访问权、执行恶意代码、提升权限、实现持久性、逃避检测和横向移动,从而导致数据删除或溢出、拒绝服务或资源劫持。您可以在我们的博客上阅读更多有关此主题的详细信息,网址为Kubernetes的MITRE ATT&CK®框架

Kubernetes基础设施安全

Kubernetes的许多层(从API服务器、kube-scheduler、kube-controller-manager等控制平面组件到运行容器化工作负载的工作节点组件)都提出了自己的安全挑战。这些服务中的每一项都必须进行安全配置,以便为应用程序提供一个稳定的集群环境。除此之外,无论您是将Kubernetes作为自我管理服务运行还是使用完全管理的云服务,都将改变您必须保护Kubernete各个组件的方式。例如,在自我管理的环境中,除了节点组件之外,控制平面组件的全部通常都是您的责任。使用托管Kubernetes服务时,安全责任由服务提供商和您(客户)共同承担。这又增加了一个挑战。

集装箱化和Kubernetes有几个内置的安全优势,可以帮助团队解决与集装箱安全问题相关的风险。例如:

  • 包含运行时发现的安全问题的容器将在构建阶段修复并重新部署,而不是在运行时更新或修补。该特性被称为不变性,可以更好地预测容器行为和异常行为检测。 
  • 网络策略可以分割pods或pods组,而准入控制器可以应用策略以实现更好的管理。 
  • 基于角色的访问控制(RBAC)可以为用户和服务帐户分配特定的权限。
  • Kubernetes机密可以更好地保护加密密钥等敏感数据。

然而,Kubernetes不是一个安全平台,因此团队必须在Kubernete环境的每一层以及整个容器和应用程序生命周期的每个阶段实施风险评估并针对漏洞。为了有效地处理Kubernetes安全性,您必须利用Kubernetes-native安全控制(如果可用),同时在构建、部署和运行时阶段实现最佳实践。

作为开源容器技术的领导者,Red Hat可以帮助您增加您对Kubernetes安全的了解最佳实践并使容器的实现更加安全。为了帮助团队更有效地识别和解决K8的安全问题,Red Hat提供了Kubernetes-native解决方案,将安全嵌入到容器生命周期中,并使DevOps团队能够构建和部署生产就绪应用程序。

库贝林特由StackRox和2021年被Red Hat收购是一个开源静态分析工具,用于识别Kubernetes部署中的错误配置和编程错误。KubeInter运行一系列测试来分析Kubernetes配置,识别错误,并为任何不符合安全最佳实践的内容生成警告。 

Red Hat服务互连具有内置安全性,默认情况下可跨集群和云进行扩展,同时在服务之间提供可信的通信链接。服务互连还允许跨遗留平台、容器平台或Kubernetes平台进行灵活的开发,为开发人员构建、现代化和部署下一代业务应用程序提供了更多选项。

Kubernetes的Red Hat®高级群集安全(ACS)使组织能够安全地构建、部署和运行云计算应用程序。ACS作为一个自我管理或完全管理的SaaS解决方案提供,可保护所有主要云和混合环境中的容器化工作负载,并使DevOps和InfoSec团队能够操作安全性,降低运营成本,提高开发人员生产力。

继续阅读

第条

有状态与无状态

某个东西是有状态的还是无状态的取决于记录与它的交互状态的时间以及该信息需要如何存储。

第条

什么是Quarkus?

Quarkus是一个Kubernetes-native Java堆栈,用于Java虚拟机(JVM)和本地编译,专门为容器优化Java。

第条

什么是无服务器?

Serverless是一种云计算开发模型,允许开发人员构建和运行应用程序,而无需管理服务器。

有关云应用程序的更多信息

产品

一个企业应用程序平台,具有一套统一的测试服务,可根据您选择的基础设施将应用程序推向市场。

资源

电子书

云原生与混合云:战略指南

播客

《命令行英雄》第九季第八集:
“所有人现在都在一起”

电子图书

云计算应用程序的路径

培训

免费培训

使用微服务架构开发云计算应用程序