使用ChartCenter保护您的Kubernetes之旅

更新:截至2021年5月1日- ChartCenter中央存储库已被淘汰,所有功能已弃用。有关中心日落的更多信息,请阅读中心弃用博客文章

采用云原生技术,比如Kubernetes而且意味着您公司的业务可以迅速跨越全球的海洋,到达团队和客户。但深海也有危险。

Kubernetes中有许多组件,确保每个维度的安全是相当具有挑战性的,需要一点学习曲线。让我们来确定一些重要的最佳实践,这些实践可以帮助您引导方向。

我们还将重点介绍JFrog的免费社区服务,ChartCenter,可以揭示你需要使用的公共应用程序中可能潜伏的风险,并帮助你减轻风险。

基本K8s安全最佳实践

首先,您应该确保Kubernetes集群资源的所有入口点在它们的入口点都是安全的。2022世界杯阿根廷预选赛赛程其中包括云项目、网络、集群、api服务器、命名空间等,需要通过设置IAM、VPC、NAT、RBAC (role-based access control)等进行保护。启用此功能后,您可以根据各个用户的角色设置允许或拒绝关键操作的策略。您应该通过使用受限制的名称空间来保持不同租户或用途之间的隔离来进一步确保这一点。

一旦Kubernetes集群是安全的,启用操作策略以确保由yaml表示的Kubernetes对象具有指定的关键限制是至关重要的:

  • 资源限制
  • 安全上下文
  • 网络策略

为进一步确保安全,容器应该仅使用适当的用户级权限集运行,并且永远不允许以root身份运行。

一旦您的K8s系统开始运行,操作团队应该有一个持续升级Kubernetes的流程。通过这种方式,任何安全问题都将在被识别后尽快被修补和关闭。

头盔图表:所见即所得

一旦确保了K8s操作环境的安全,就需要确信所部署的应用程序可以安全使用。虽然Helm图表提供了一种打包Kubernetes应用程序的有效方法,但了解它们的结构非常重要,这样你就可以保持警惕。

大多数云原生应用程序需要多个码头工人赫尔姆图引用的图像用于将它们部署到K8s吊舱。这些Docker映像可以是主应用程序,也可以是应用程序运行所需的init容器和sidecar容器。

当我们构建JFrog ChartCenter时,这是我们想要解决的问题之一,我们要将Helm图表的多语言依赖关系可见化。例如,Helm图表可以指向许多Docker图像和子图表。这些Docker映像还可以包含多个OS包、UI包、java、go和其他应用程序二进制文件。

在下面的例子中,为bitnami这样/ postgres图中显示了多语言依赖关系图:

这些都是黑客可利用的机会。Helm图表及其支持Docker图像的善意提供可以被替换或重定向到故意易受攻击或恶意代码。

为了防止这种情况,Helm图表作者可以包含来源文件这有助于确保正在部署的图表的完整性。在提供出处文件时,该文件包含图表包的SHA256签名,可以帮助检测任何篡改。整个包体使用OpenPGP算法进行签名,以进一步确保包是从已知源释放的。

JFrog ChartCenter为公开可用的K8s应用程序的Helm图表提供了可靠的来源。当在ChartCenter中包含Helm图表时,来源文件的可用性将在图表信息选项卡中注明。

提供了出处文件时,应将其与头盔安装—验证确保被破坏的图表不会被部署。

ChartCenter为图表版本的不变性提供了额外的保证。作为Helm图表的存储库,而不仅仅是一个目录,ChartCenter所持有的版本保证始终可用且不变。这甚至可以防止图表的作者对已发布的版本引入不适当的更改,确保本周用于部署的图表版本与上周、上个月或去年使用的版本相同。

防范关键cve

即使您自信地部署了您期望的K8s应用程序,应用程序本身也可能存在已知的漏洞,恶意用户可能会利用这些漏洞。ChartCenter可以帮助您识别这些风险。

除了通过Helm图了解Kubernetes集群上部署的内容外,我们还意识到,显示与Helm图引用的所有应用程序位相关的公共cve是非常重要的。根据NIST的说法,在国家漏洞数据库(NVD)上注册的cve的数量和严重程度正在快速增长。

来源:国家标准和技术研究所

与此同时,将NVD上的公共CVE数据与组件id(可以是Docker映像、Debian包、Maven或其他包)关联起来非常困难。我们意识到,遏制cve日益增长的影响的唯一方法是使赫尔姆图级别的安全数据易于访问。

ChartCenter在由30k+ Helm图表版本引用的12k+ Docker图像中连续扫描1.8M组件。这些有价值的信息显示在Chartcenter的安全每个公开舵图的标签。

随着cve的列表,可以通过单击图形图标来观察影响图。

一旦漏洞信息可以访问,那么它将有助于优先考虑安全补丁的使用,或限制占用空间(例如,通过使用薄的基础层,或在指定基础层时使用动态标记)。

安全缓解说明

一旦关键信息(如多语言依赖关系图、安全问题列表、来源可用性)可以访问,以确保用户的云原生旅程安全,另一个问题是缺少什么?

通常,一些检测到的cve无法被黑客利用。这可能是由于Helm图设置的安全或网络策略,或者CVE可能只适用于不同的操作系统。在云原生生态系统中,目前还没有让生产者与消费者共享安全缓解或咨询说明的标准。为了解决这个问题,我们已经提出了一个标准这使得生产者能够使用Helm图表提供安全缓解信息

一旦作者提供了安全缓解信息,它也会影响在ChartCenter上显示高cve的时间和程度安全选项卡。在没有得到作者同意的情况下,默认不显示高cve。一旦被ChartCenter处理,所引用的cve将表明缓解说明可用:

点击图标显示注释:

您还可以下载给定名称空间和图表名称的安全缓解说明。例如,下面的命令将获取样本图表的安全缓解文件:

curl https://repo.chartcenter.io/rimusz/security-sample-chart/security-mitigation.yaml

结论

遵循一些基本的最佳实践可以帮助您确保选择运行的云原生Kubernetes应用程序是安全的。

有了ChartCenter,您就有了额外的工具来查看这些应用程序,并确保您的关键业务操作不会面临不必要的风险。