使用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对象具有指定的关键限制:
- 资源限制
- 安全上下文
- 网络策略
为进一步确保安全,容器应该只在一组适当的用户级权限下运行,绝不允许作为根用户运行。

一旦您的K8s系统开始运行,运营团队应该有一个持续升级Kubernetes的流程。这样,一旦发现任何安全问题,就会尽快修补和关闭。
掌舵图表:所见即所得
一旦您保护了K8s操作环境,您将需要确信您部署的应用程序可以安全使用。虽然Helm图表提供了一种有效的方式来打包Kubernetes应用程序,但了解它们的结构很重要,这样你就可以保持警惕。
大多数云原生应用需要多个码头工人用于将它们部署到k8吊舱的掌舵图所引用的图像。这些Docker镜像可以是主应用程序,也可以是应用程序运行所需的init容器和sidecar容器。

当我们构建JFrog ChartCenter时,这是我们想要通过对Helm图表的多语言依赖性进行可见性来解决的问题之一。例如,一个Helm图可以指向许多Docker映像和子图。这些Docker镜像还可以包含多个操作系统包、UI包、java、go和其他应用程序二进制文件。
在下面的示例中,为bitnami这样/ postgres图中,多语言依赖关系图如下:

这些都是黑客可利用的机会。Helm图表及其支持的Docker映像可能会被替换或重定向到故意易受攻击或恶意的代码。
为了防止这种情况,Helm图表作者可以包含一个来源文件这有助于确保所部署图表的完整性。当提供时,来源文件包含图表包的SHA256签名,可以帮助检测任何篡改。整个包体使用OpenPGP算法签名,以进一步确保包是从已知源发布的。
JFrog ChartCenter为公开可用的k8应用程序的Helm图表提供了可靠的来源。当一个Helm图表包含在ChartCenter中时,出处文件的可用性会在chart Info选项卡中注明。

当提供了一个来源文件时,它应该与舵机安装——验证确保被破坏的图表不会被部署。
ChartCenter为图表版本的不变性提供了额外的保证。作为Helm图表的存储库,而不仅仅是一个目录,ChartCenter持有的版本保证始终可用且不变。这甚至可以防止图表的作者对已发布版本引入不适当的更改,从而确保本周用于部署的图表版本与上周、上个月或去年使用的版本相同。
防范严重cve
即使当你自信地部署你期望的K8s应用程序时,应用程序本身也可能存在被恶意用户利用的已知漏洞。ChartCenter可以帮助您识别这些风险。
除了通过Helm图表显示部署在Kubernetes集群上的内容外,我们还意识到,显示与Helm图表所引用的所有应用程序位相关的公共cve非常重要。根据NIST的数据,在国家漏洞数据库(NVD)上注册的cve的数量和严重程度正在快速增长。
同时,将NVD上的公共CVE数据与组件id(可以是Docker映像、Debian包、Maven或其他包)关联起来是非常困难的。我们意识到,遏制cve日益增长的影响的唯一方法是使Helm图表级别的安全数据易于访问。
ChartCenter在12k+ Docker映像中运行1.8M组件的连续扫描,这些映像由30k+ Helm图表版本引用。这些有价值的信息显示在图表中心的安全选项卡显示每个公共舵图。

除了cve列表之外,还可以通过单击图形图标来观察影响图。

一旦漏洞信息是可访问的,那么它将有助于确定安全补丁的优先级,或限制占用(例如,通过使用薄基础层,或在指定基础层时使用动态标记)。
安全缓解说明
一旦可以访问诸如多语言依赖关系图、安全问题列表、来源可用性等关键信息以保护用户的云原生旅程,那么要问的另一个问题是缺少什么?
通常,一些检测到的cve无法被黑客利用。这可能是由于Helm图设置的安全性或网络策略,或者CVE可能只适用于不同的操作系统。在云原生生态系统中,目前还没有标准让生产者与消费者分享安全缓解措施或咨询说明。为了解决这个问题,我们有提出一个标准这使得生产者能够使用Helm图提供安全缓解信息。
一旦作者提供了安全缓解信息,它还会影响何时以及在ChartCenter上显示何种高cve安全选项卡。未经作者同意,默认不显示高cve。一旦被ChartCenter处理,引用的cve将指示可用的缓解说明:

点击图标显示笔记:

您还可以下载给定名称空间和图表名称的安全缓解说明。例如,以下命令将获取示例图表的安全缓解文件:
curl https://repo.chartcenter.io/rimusz/security-sample-chart/security-mitigation.yaml
结论
遵循一些基本的最佳实践可以帮助您确保选择运行的云原生Kubernetes应用程序是安全的。
有了ChartCenter,你就有了更多的工具来了解这些应用程序,并确保你的关键业务操作不会面临不必要的风险。