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服务时,安全责任由服务提供商和您(客户)共同承担。这又增加了一个挑战。