一、背景
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...