Grafeas-来自谷歌,IBM, 红帽和 JFrog 的元数据标准

Grafeas-来自谷歌,IBM, 红帽和 JFrog 的元数据标准

近日,谷歌联合 JFrog,IBM 和其他一些科技公司推出了 Grafeas,一个开源 API,用于存储、查询和检索所有类型软件组件的重要元数据。本文将帮助大家快速了解什么是 Grafeas。

Grafeas 的起源

Grafeas-来自谷歌,IBM, 红帽和 JFrog 的元数据标准

随着 DevOps,微服务,容器化的兴起,软件交付速度越来越快,交付的二进制包(包括 Docker 镜像)呈指数级增长,我们叫做‘二进制包爆炸’。

Grafeas-来自谷歌,IBM, 红帽和 JFrog 的元数据标准

从上图可以看到,由于软件开发中多种语言的数据规范存在较大的差异性,Groovy有自己定义的命名规范,Docker 使用 Sha256 来表示每一层 Docker Layer,Go 语言使用 URL 定义自己的组件地址。这些规范的差异性,导致即使是谷歌,红帽等厂商在容器镜像交付到生产环境之前,也很难判断容器镜像内包含的多种语言的二进制包的质量信息以及安全漏洞信息。于是就诞生了通用元数据规范的需求:

Grafeas-来自谷歌,IBM, 红帽和 JFrog 的元数据标准

软件开发的趋势是工具链的多元化,开源软件的普及化,服务的去中心化,持续交付,微服务架构。这就意味着,通用的元数据需要集中的“Source of Truth”,需要覆盖软件交付的整个生命周期,能够兼容公有/私有云环境,能够实现扩展性和可插拔性。

Grafeas 介绍

Grafeas的官方定义:“Grafeas (“scribe” in Greek) is an open-source artifact metadata API that provides a uniform way to audit and govern your software supply chain”. Grafeas 起源于容器的安全性质量控制,但从定义来看它并不局限于容器。它是提供统一方式来审计,监控软件组件的开源工件元数据 API。 这里的'Software'可以是 Docker 镜像,也可以是 War,Jar 和 Zip 包,'Supply Chain' 指的是构建这些发布包所包含的组件。从谷歌官方的图来看 Grafeas:

Grafeas-来自谷歌,IBM, 红帽和 JFrog 的元数据标准

上图是没有 Grafeas 之前的镜像交付的流程,不同的人员参与到编码,构建,测试,扫描,部署等流程,但这里有很大的问题在于步骤5,来自运维组的问题:‘即将部署的组件 X是否满足公司的安全策略?’。

Grafeas-来自谷歌,IBM, 红帽和 JFrog 的元数据标准

加入 Grafeas 之后,可以看到,在软件交付的每一步,都会通过 Grafeas API 将每个阶段的关键元数据进行收集。例如在步骤 C,漏洞扫描的工具会将各种类型的第三方依赖包进行扫描,并且将扫描结果通过 Grafeas API 和发布的 Docker 镜像做关联,这样的好处是在部署镜像到 Kubernetes 集群之前,能够知道这个镜像是符合公司的安全策略的。

Grafeas 的数据结构如何?

Grafeas-来自谷歌,IBM, 红帽和 JFrog 的元数据标准

截图来自 https://github.com/Grafeas/Grafeas

从上图可以进一步的感受 Grafeas,从漏洞定义的维度来了解 Grafeas API,它定义了一个漏洞扫描结果的数据结构,包含扫描对象的路径,引用范围(Occurrences),漏洞详情,影响范围,漏洞级别。有了通用的数据结构,任何平台都能够读懂漏洞信息,从而进行质量关卡的设立,漏洞信息的展示。

目前 Grafeas 已经支持以下8种语言的元数据规范:

Grafeas-来自谷歌,IBM, 红帽和 JFrog 的元数据标准

当然它是一个开源的项目,目的也是希望通过开源社区,让更多的组织共享其他语言的规范,形成一个良好的生态。

目前已经支持的元数据类型包含:包漏洞信息(JFrog 贡献),构建详情,镜像信息,包管理信息,部署信息,工件认证。

Grafeas-来自谷歌,IBM, 红帽和 JFrog 的元数据标准

Grafeas 项目现状和未来

目前 Grafeas 项目有谷歌主导,也融合了各大公司的贡献,形成了一个开源生态:

  • JFrog 正在基于JFrog Xray API 实现 Grafeas 的 API,将会支持混合云的工作流,将元数据存在唯一的系统(例如私有部署的 Xray),且能够被公有云访问,例如谷歌云平台。

    详情参考:https://www.jfrog.com/blog/google-and-jfrog-announce-grafeas-a-unified-language-for-artifact-metadata/.

  • 红帽(Red Hat )正在计划使用 Grafeas API 增强 Red Hat OpenShift 的安全功能。

    详情参考:https://www.redhat.com/en/blog/red-hat-google-cloud-and-other-industry-leaders-join-together-standardize-kubernetes-service-component-auditing-and-policy-enforcement.

  • IBM 计划将把 Grafeas 和 Kristis 作为漏洞扫描工具的一部分,融合到 IBM Container Service。

    详情参考:https://developer.ibm.com/dwblog/2017/grafeas/.

  • CoreOS 正在集成 Grafeas 和 Tectonic, 它的企业级 Kubernetes 平台, 扩展它的镜像安全扫描的能力。

未来,很多贡献者计划提供以下 Grafeas 的新功能:

  • Grafeas API 漏洞扫描部分 JFrog’s Xray 的实现

  • 谷歌提供的 Grafeas 二进制包元数据 API 实现,包含容器注册中心的漏洞扫描。

  • JFrog Xray 和 Google 二进制包元数据 API 的双向绑定

  • Black Duck 集成 Grafeas 和谷歌提供的 Grafeas 二进制包元数据 API 实现

参考资料

https://grafeas.io/about/

https://cloudplatform.googleblog.com/2017/10/introducing-grafeas-open-source-api-.html

https://www.youtube.com/watch?v=03Ha6d_1Evk

作者:王青

目前任职 JFrog 中国首席架构师,之前在 IBM,HPE,爱奇艺,新浪,VIPKID 等公司做过研发和架构,是有十多年开发经验的互联网老兵,专注于软件生命周期管理,微服务架构,云原生应用,容器化等领域。

欢迎转载,但转载请注明作者与出处。谢谢!