BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

使用“Grafeas”元数据API和“Kritis”部署授权管理软件供应链

| 作者 Daniel Bryant 关注 586 他的粉丝 ,译者 姚佳灵 关注 0 他的粉丝 发布于 2018年5月17日. 估计阅读时间: 7 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

在最近谷歌云平台(Google Cloud Platform,简称GCP)博客探讨容器安全的系列文章中,GCP团队已经提供了现有和拟议的开源软件供应链项目的更多细节。首先,Grafeas是通用API和语言,用于存储、查询和检索跟软件组件有关的元数据,诸如构建细节、测试状态和已知的安全问题。其次,Kritis是一个拟议的软件供应链管理框架,它允许使用存储于Grafeas中的元数据与Kubernetes构建和实施实时部署策略,这可以避免发布存在已知问题的容器镜像。

GCP的博客文章指出,容器技术已经使快速创建、修改以及共享打包在容器镜像工件中的应用程序变得轻松容易。然而,随着部署速度的这种潜在增长,可能要对安全性进行权衡,比如需要验证容器化的应用程序是否已经通过质量保证,以及应用程序和镜像是否包含任何已知安全漏洞。回答这些问题的一种方式是追踪跟容器有关的元数据,例如,谁在使用它、功能和非功能测试运行的结果,以及它是否有任何已知漏洞。

去年10月,谷歌和几个合作伙伴发布了Grafeas,Grafeas是一个开源项目,为容器镜像提供结构化的元数据API。Grafeas简化了元数据的处理,包括像软件包漏洞扫描结果的安全问题,并保持对这些信息的追踪:

  • “构建”元数据能被用于验证容器镜像是根据构造策略使用具有签入源代码、受信任的构建器构建的。
  • “程序包漏洞”元数据包含来自漏洞扫描服务的信息,并允许组织创建部署易受攻击的容器的策略。
  • “镜像基础”元数据包含有关来自被检索容器的基础镜像的信息,以及用于构建容器镜像的附加层。
  • “包管理器”元数据指明在容器镜像中所安装的软件包。
  • “部署历史”元数据允许追踪哪些资源在何时被部署。

Grafeas使用两个API概念,分别是备注和事件。该文档指明,该部门允许第三方元数据供应商代表很多客户创建和管理元数据。

  • 备注是能够通过分析找到的或在过程中多次使用的项目和条件。例如,CVE可能是Linux软件包漏洞分析的结果。在构建过程中,关于构建器的信息会被存储于备注中。
  • 事件可以被认为是备注的实例,并描述了在具体的云资源或项目(如:位置、具体的补救步骤等等)中如何找到该备注,或者具体的备注结果是什么(比如:由构建产生的容器镜像)。例如,事件可能会报告在容器镜像的具体软件包中找到最致命的OpenSSL错误(一个可能的备注),并包含如何根据客户的软件包补救最致命错误的有关信息。

为了正确地把存储在Grafeas中的元数据聚合起来,存储的每种信息都有严格的模式。这些模式允许规范化来自多个供应商的数据、使用户能够随着时间的推移看到其组件中有意义的见解。当前支持的模式类型如下图所示:



需要支持新的元数据时,能够添加新类型,每种类型都有自己的模式。

追踪Grafeas的元数据能让团队了解哪些容器存储于他们的环境中,并在哪些容器得到部署上实施限制。在部署前,工程师可以审查Grafeas元数据,确认其是否符合策略。另一种类型的元数据是“认证(Attestation)”,它是对一个事实的确认或认证,被用于这个目的(在商业上,认证是一个由会计师或审计师实施的过程,是对公诸于众的公司、公共机构或其他组织的财务或其他业务信息提供独立意见)。如果从Grafeas中提取的元数据与组织策略一致,就可以写一个证明以确认镜像符合部署要求的规定。下图来自GCP introduction to Grafeas,总结了该工具如何适用典型的持续交付管道:



在最近发布的白皮书中,GCP团队已经提出了“Kritis”,这是Kubernets的一个部署授权框架。Kritis框架的核心部分是Kubernetes准入控制器(Kubernetes Admission Controller),用于检查预期的认证,如果它们不存在时,就会阻止部署。该白皮书指出,除了基本准入控制外,Kritis还提供对“工作流实施、多机构签署、紧急部署等”的支持。一个叫做二进制授权(Binary Authorization,简写为BinAuthz)的托管Kritis alpha实现,目前可以在谷歌容器引擎(Google Container Engine,简写为GKE)上使用,不久之后的开源代码版也已列入计划。

BinAuthz的关键概念是“认证机构(Attestation Authority)”和“策略(Policy)”,这是通过REST API管理REST资源实现的。认证机构是一个有权创建认证的命名实体。作为REST资源,它囊括了其认证的位置(在哪里存储和从哪里检索),以及验证标准(什么可证明有效)。然后,策略将认证机构命名为需要向某个目标部署工件的认证机构。认证机构命名(类型为“ATTESTATION”的)Grafeas Note,用来作为这个机构认证的锚点,并且如果认证必须签字,可以有选择地指定公钥。然后,该机构的认证可以以Occurrences为代表附加到该机构的备注上。

Spotify最近讨论了他们如何把Grafeas和Kritis作为每天超过6000个容器构建的元数据以及在他们主容器注册的33万个镜像的真实性的核心来源。这使安全团队能够交付给用户实施适当的审计和生命周期策略。在持续的集成过程中,对容器(包括名为kubeaudit的本土安全审计工具的使用)实施了一系列审计,并且利用PGP以加密方式生成认证并签名,以确保其构建器和其他认证机构的身份。这些证明构成了在Kubernetes上使用Kritis实施的策略。

关于Grafeas的更多信息可以在该项目的文档GitHub repository上查看。Grafeas能用于实施多种安全策略,Kelsey Hightower已经提供了一个关于如何使用Grafeas以只允许容器镜像由特定私钥签名的教程

阅读英文原文Managing the Software Supply Chain with the "Grafeas" Metadata API and "Kritis" Deploy Authorization


感谢冬雨对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT