2019年1月,世界上最流行的容器编排系统Kubernetes发现了第一个严重的安全漏洞,该漏洞袭击了该项目的生态系统。漏洞CVE-2018-1002105允许攻击者通过Kubernetes API服务器破坏群集,该服务器允许执行恶意代码以安装恶意软件等。那年早些时候,Kubernetes控制面板的错误配置导致在Tesla资源上安装了加密货币挖掘软件。然后,攻击者利用了Kubernetes面板之一不受密码保护的事实,这使他们可以使用一个帐户访问其中一个Pod来访问AWS中更大的Tesla基础架构。
加快容器及其编排的实施速度的组织还需要采取强制性步骤来保护其基础结构的这一关键部分。以下是基于客户数据的九种Kubernetes最佳安全做法。跟随他们以更好地保护您的基础架构。
1.更新到最新版本
[Kubernetes]的每个季度发行版中不仅有错误修复,而且还提供新的安全功能。要利用它们,我们建议使用最新的稳定版本。
更新和支持可能比发行版中提供的新功能困难,因此,至少每季度计划一次更新。可以使用托管的Kubernetes-solutions提供程序显着简化更新。
2.启用基于角色的访问控制
使用RBAC来控制谁可以访问Kubernetes API以及他们具有哪些权限。通常,在Kubernetes 1.6版及更高版本中,默认情况下会启用RBAC,但是如果此后已更新且未更改配置,则应仔细检查设置。
但是,启用RBAC是不够的-仍然需要有效地使用它。在一般情况下,应避免对整个群集的权限,而应优先考虑某些命名空间中的权限。即使在调试时,也要避免给集群管理员特权-仅在必要时不时授予权限更为安全。
如果应用程序需要访问Kubernetes API,请创建单独的服务帐户。并为他们提供每个用例所需的最小权限集。这种方法比给名称空间中的默认帐户过多的特权要好得多。
3.使用名称空间设置安全边界
创建单独的名称空间对于组件隔离的第一级很重要。当不同类型的工作负载部署在单独的命名空间中时,调整安全设置要容易得多。
4.分离敏感的工作负载
限制危害潜在后果的一种好习惯是在一组专用的计算机上运行带有敏感数据的工作负载。这种方法降低了安全性较低的应用程序访问敏感应用程序在同一容器可执行环境或同一主机上运行的数据的风险。例如,受感染节点的kubelet通常仅在将秘密内容安装在计划在同一节点上执行的Pod上时才可以访问秘密内容。如果可以在多个群集节点上找到重要机密,则攻击者将有更多机会来获取这些机密。
可以使用节点池,在云中或本地以及Kubernetes控制机制来完成分离。
5.保护对云服务元数据的访问
敏感的元数据可能被盗用或出于恶意目的在集群中升级特权。例如,Shopify的漏洞赏金计划中的一项最新发现详细显示了用户如何通过使用专门为一种微服务生成的数据从云提供商接收元数据来超越权限。
GKE元数据隐藏功能以避免此类问题的方式更改了部署群集的机制。我们建议在实施永久解决方案之前使用它。
6.创建和定义群集网络策略
网络策略-允许您控制进出容器化应用程序对网络的访问。要使用它们,您必须具有支持此类资源的网络提供商。
一旦一切准备就绪,就从简单的默认网络策略开始-例如,默认情况下阻止来自其他名称空间的流量。
7.设置集群的Pod安全策略
Pod安全策略设置用于启动集群中工作负载的默认值。考虑定义策略并启用Pod Security Policy准入控制器:这些步骤的说明会根据所使用的云提供商或部署模型而有所不同。
开始时,您可能希望禁用容器中的NET_RAW功能,以保护自己免受某些类型的欺骗攻击。
8.开展节点安全性工作
要提高主机安全性,您可以按照以下步骤操作:
· 确保安全且正确地配置了主机。一种方法是CIS基准测试;许多产品都有自动检查器,可以自动检查系统是否符合这些标准。
· 监视重要端口的网络可用性。确保网络禁止访问kubelet使用的端口,包括10250和10255。考虑限制对Kubernetes API服务器的访问-受信任的网络除外。在不需要在kubelet API中进行身份验证和授权的集群中,攻击者通常会访问此类端口以启动加密货币矿工。
· 最小化对Kubernetes主机的管理访问原则上应限制对群集节点的访问:通常,对于调试和解决其他问题,您可以在不直接访问节点的情况下进行。
9.启用审核日志记录
确保启用了审核日志,并且正在监视其中的异常或不需要的API调用的发生,尤其是在任何授权失败的情况下-此类条目将带有“禁止”状态的消息。授权失败可能意味着攻击者试图利用获得的凭据。
托管解决方案提供商可以在其界面中访问此数据,并可以帮助您在授权失败的情况下设置通知。
展望未来
请遵循以下准则以获得更安全的Kubernetes集群。请记住,即使在安全地配置了集群之后,也需要确保容器配置和操作的其他方面的安全性。为了提高技术堆栈的安全性,请研究工具,这些工具提供了用于管理已部署容器,不断监视和保护容器以及云原生应用程序的中央系统。想了解更多关于网络安全的信息,请继续关注。