共计 3366 个字符,预计需要花费 9 分钟才能阅读完成。
一、背景
Kubernetes(k8s) 是一个基于容器技术的分布式架构当先计划,为容器化利用提供部署运行、资源调度、服务发现和动静伸缩等一系列残缺性能,进步了大规模容器集群治理的便捷性。近些年来,Kubernetes 迅速成为了容器编排的事实上的开源规范,可能实现应用程序部署流程的标准化和重用,进步了开发人员的生产力,并放慢了云原生应用程序的采纳。
当然,随着 Kubernetes 利用的复杂度越来越高,大家也须要新的工具来反对疾速牢靠的容器利用集群的配置、部署与管理工作。Helm 就是这样的工具,也是 CNCF 官网举荐的我的项目,它为开发人员提供了将应用程序打包为 Helm Chart 的能力。通过一个命令或单击几下鼠标,用户就能够基于 Helm Chart 为开发测试或生产环境装置 Kubernetes 应用程序。大多数风行的 CI/CD 工具集都能够通过 Helm Chart 取得。
在咱们之前的文章《重大福利,JFrog 公布面向社区的收费平安的 HelmChart 地方存储库 ChartCenter》中,咱们介绍了 JFrog 公布的 ChartCenter(https://chartcenter.io/),这是一个面向社区以及开发人员的收费的公共 Helm Charts 地方存储库。除了提供 Helm Charts 的公共服务之外,ChartCenter 还可能向使用者展现每个 Helm Chart 部署的容器镜像中存在哪些已知的安全漏洞,从而揭示这些公共 Chart 中暗藏的危险,并提供加重这些危险的倡议。
二、Kubernetes 利用中的安全漏洞
K8s 利用作为一个整体,对外提供对立的服务,而 Helm Chart 为容器化集群提供了一个整体的封装,蕴含了其所有的容器镜像、部署配置等等内容。通常,K8s 利用的 Helm Chart 都援用了多个 Docker 镜像,即包含利用自身,也能够是利用运行所需的 init 容器和 sidecar 容器。而每一个镜像,其蕴含的镜像层或依赖镜像,都可能引入平安危险。如下图所示:
在美国国家破绽数据库(NVD)中,通过公共常见破绽和裸露(CVE)列表展现了很多容器镜像中发现的安全漏洞。随着容器和 K8s 的宽泛援用,咱们发现,容器相干的破绽和危险岂但没有降落,在 NVD 上注册的 CVE 的数量和严重性反而急剧地减少,如下图所示:
(图片起源:美国国家标准技术研究院)
如何能力晓得你的 Kubernetes 利用及 Helm Chart 中蕴含了哪些镜像,以及这些镜像是否蕴含已知的安全漏洞?ChartCenter 为您提供了便捷的办法。
三、ChartCenter 展现 CVE
JFrog 的 ChartCenter 为社区提供了一个便当的路径,能够通过 UI 在泛滥公共存储库提供的数千个 Helm Chart 中进行搜寻。然而,ChartCenter 不仅仅是这些 Chart 的目录,而是由 Artifactory 提供反对,是一个蕴含了不可变版本的 Helm Chart 的存储库。用户的 Helm CLI 能够从这个收费的繁多可信源中获取所需的公共 Helm Chart。
除了提供不可变版本的 Helm Chart,ChartCenter 还基于 JFrog Xray 提供的深度递归平安扫描能力,对 Helm Chart 依赖的所有容器镜像进行破绽剖析,并在 UI 中显示了与这些镜像相干的 CVE。这样,用户在应用和部署任何 K8s 利用之前,都能够轻松理解并评估其平安危险。
ChartCenter 默认显示中、低和未知严重性的破绽详细信息,而由保护人员管制为社区提供的高危严重性破绽信息的具体水平。
四、加重危险阐明
尽管让用户晓得其 K8s 利用中存在安全漏洞是件坏事,但这还不是全副,大家还心愿可能理解如何加重这些危险。比方,能够通过援用另一个组件来加重某一依赖项的平安危险;能够通过倡议的配置来打消危险;也可能您的利用并没有应用到易受攻击的性能,因而发现的危险并不是一个真正的威逼。
咱们置信,在 ChartCenter 公开您的 Helm Chart,也意味着您也能够公开发表本人的认识。因而,JFrog 为 Helm Chart 的平安加重阐明提出了新标准,并邀请大家来提供内容。
为激励大家的参加,在 Helm Chart 的维护者将至多一个高危级别 CVE 的加重阐明提交给 ChartCenter 之前,ChartCenter 不会显示该 Chart 的高危级别的安全漏洞。
这使得 Helm Chart 的作者能够在 Chart 加上无关 CVE 的正文,从而使得用户晓得是否以及何时须要关注这些破绽,或者是否能够加重相干的危险。它能够帮忙维护者在剖析 CVE 时说“是,然而。。。”,并与 Chart 的用户进行相应的交换。
五、如何正文 Helm Charts
为了提供平安加重阐明,ChartCenter 里的 Helm Charts 蕴含了一个 security-mitigation.yaml 文件,该文件能够蕴含以下任何或所有信息:
· Chart 使用者的总体(摘要)加重信息
· 每个 CVE,每个受影响的组件和版本的加重信息
· 在 Wiki 或网页上内部托管的加重信息的网站 URL
· 内部托管的加重文件的 URL
例如,以下的 security-mitigation.yaml 文件为 Helm Chart rimusz/security-sample-chart 提供了摘要和独自的 CVE 加重信息:
schemaVersion: v1
summary: Security mitigation information for this application is tracked by the security-mitigation.yaml file that’s part of this Helm chart.
mitigations:
- cves:
- CVE-2019-1010022
affectedPackageUri: helm://rimusz/security-sample-chart
affectedVersions: <= 0.1.5
description: This security mitigation information for CVE-2019-10100 applies to the specified affectedVersions of charts.
- cves:
- CVE-2019-11888
affectedPackageUri: docker://docker.io/rimusz/security-sample-app
affectedVersions: <= 0.1.1
description: This CVE is applicable for applications running on Windows. This application currently doesn’t support Windows OS, hence this CVE does not impact our users.
当您向 ChartCenter 提供破绽加重正文文件时,至多要援用一个高危级别的 CVE。该文件将蕴含在 ChartCenter 中,并将高危级别 CVE 的信息提供给 Chart 的使用者。
该文件由 ChartCenter 解决,所关联的 CVE 将显示相应的加重阐明,如下图:
单击图标,能够显示全副的阐明,如下图:
六、总结
ChartCenter 岂但为宽广的 K8s 用户提供了集中的不可变版本 Helm Chart 的存储、查问和应用能力,还可能展现 Chart 中依赖的容器镜像所蕴含的已知安全漏洞。除此之外,ChartCenter 提供的危险加重阐明机制,也为 Helm Charts 的维护者和用户提供了很好的路径,来更好地形容和理解如何加重 Helm Charts 的平安危险。
目前,该加重阐明零碎还是一个提议,依据社区的反馈,仍会继续订正。无关更多技术细节,请参考咱们在 GitHub 上的标准(https://github.com/jfrog/chartcenter/blob/master/docs/securitymitigationspec.md)。
同时,咱们也邀请您尝试通过 security-mitigation.yaml 来保护您的公共 Helm Charts,并提出宝贵意见。欢迎您通过 chartcenter@jfrog.com 提供反馈。
欢送观看 JFrog 杰蛙每周二在线课堂,点击报名:
https://www.bagevent.com/even…