可信云原生软件供应链(Software Supply Chain) - Kritis项目调研

简介: 背景 上篇Grafeas项目调研讲到了如何把制品(Artifacts)的一系列相关的元数据信息,比如CVE这些通过一套标准的Metadata API记录下来。既然Grafeas充当了一个信息生产者(Producer)的角色,那么自然还需要有这些信息的消费者(Consumer),Kritis就是作为Grafeas的孪生项目,起了这样的作用。 Kritis(希腊语Judge),logo是一只抓着法

背景

上篇Grafeas项目调研讲到了如何把制品(Artifacts)的一系列相关的元数据信息,比如CVE这些通过一套标准的Metadata API记录下来。既然Grafeas充当了一个信息生产者(Producer)的角色,那么自然还需要有这些信息的消费者(Consumer),Kritis就是作为Grafeas的孪生项目,起了这样的作用。

Kritis(希腊语Judge),logo是一只抓着法槌的猫头鹰,这个项目根据存在Grafeas的制品信息,对制品的准入进行限制,比如说

  • 镜像只有在没有严重CVE的时候,才能上线
  • 只有通过了QA的测试才能上线

详细说明

上图是整套体系在GKE的展示,Kritis包括了Binary authorization + Policy的部分。而左边CI/CD pipeline则是产生了制品的元数据,保存在Image metadata(Grafeas)中。在制品上线时,Binary authorization结合Policy和Image metadata来决定是否允许部署镜像到线上。这个Check是利用了kubernetes Dynamic Admissioin Control的机制,通过webhook集成的。同时Kritis会跑一个定时Cron,来检查目前在线上运行的镜像是否符合Policy,如果不符合的话,则会添加kritis.grafeas.io/invalidImageSecPolicy的标签,代码片段

除了准入时所用的webhook外,Kritis目前核心的有3个CRD(Custom Resource Definition)

  • GenericAttestationPolicy
  • ImageSecurityPolicy
  • AttestationAuthority

其中GenericAttestationPolicy和AttestationAuthority对应的是Grafeas里的Attestation模型,用于CI Pipeline场景,比如说某个制品通过了Pipeline里的集成测试阶段,就会生成一个integration-test-passed的Attestation。Kritis的GenericAttestationPolicy可以定义说制品必须满足integration-test-passed条件,才能部署上线。还比如说通过签名验证的方式确保镜像没有被篡改,也是通过GenericAttestationPolicy来实现。

ImageSecurityPolicy对应的是Grafeas里的Vulnerability模型,用于CVE场景,比如说某个镜像必须没有高于中等严重程度的CVE,才能部署上线。

除了webhook以及CRD, Kritis本身是不保存任何状态的

未来展望

和Grafeas类似,Kritis项目也处在比较早的阶段,而且和Google的绑定更加明显,目前应该只是在Google自己的GKE上落地了。接下来的一些可能工作包括

  • 目前的准入判定是在Pod创建时,这个是兜底的卡点。但是许多Pod创建是异步操作,目前的方案会带来体验的问题,比如用户进行Pod创建,即使不符合Policy,无法立马获得反馈。这个就需要在异步创建时也引入判定能力,类似于提供dry-run机制。
  • 类似于Grafeas一样,需要集成到主流的CI/CD工具中去。
  • Kritis虽然是Grafeas的孪生项目,目前也只集成了Grafeas的API,但其实也可以扩展集成其它的Metadata API,当然这个可能违背了整体项目的初衷。

结语

+ 

可信云原生软件供应链Grafeas, Kritis的两篇小文到此收尾。回到介绍Grafeas里提到的,可信软件供应链会是一块越来受到关注的领域:

  • 随着持续集成以及微服务成为主流,我们发布软件的频率极速上升。
  • 随着应用越来越复杂,以及开源的趋势,一个应用依赖了越来越多的三方依赖。
  • 随着应用基本功能的日趋完善同质化,诸如安全/合规类的特性会成为竞争关键点。

Google发起的这两个项目定义了一套云原生时代标准的可信软件供应链接口,这里面其实也还包含了一个核心,就是Immutable,我们目前最常用的使用tag来引用镜像的方式很难保证这点,所以很有可能需要使用digest方式来引用镜像,这个对于整个镜像的使用习惯会产生不小的影响。

相关文章
|
2月前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
针对软件供应链的攻击事件在以每年三位数的速度激增,其中三方或开源软件已经成为攻击者关注的重要目标,其攻击方式和技术也在不断演进。通过供应链的传播,一个底层软件包的漏洞的影响范围可以波及世界。企业亟需更加标准和完善的供应链风险洞察和防护机制。本文将结合最佳实践的形式,面向容器应用完整的生命周期展示如何基于容器服务ACK/ACR/ASM助力企业构建云原生软件供应链安全。
|
1月前
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始
|
2月前
|
Cloud Native API 持续交付
云原生技术:开启现代软件部署的新篇章
在数字化浪潮中,云计算已从简单的资源共享进化到支持复杂应用的平台。云原生技术作为这一演变的核心,不仅重塑了软件开发、部署的方式,还为业务敏捷性、可伸缩性和可靠性设定了新的标准。本文将探讨云原生的基本概念、核心技术及实践方法,揭示它如何引领企业走在数字化转型的前列。
|
3月前
|
运维 Cloud Native Devops
云原生之旅:探索现代软件部署的未来之路
在数字化时代的浪潮下,云计算已不再是新鲜词汇,而云原生技术作为其进阶形态,正引领着软件开发和运维的全新变革。本文将深入浅出地解析云原生的核心概念、优势以及实践路径,旨在为读者揭示这一技术趋势如何重塑我们的数字世界,同时分享个人从传统IT向云原生转型的真实体验和所思所感。
|
3月前
|
运维 Cloud Native 安全
云原生之旅:探索现代软件部署的未来
在数字化转型的浪潮中,企业正寻求更高效、灵活的方式来部署和管理他们的应用程序。云原生技术,作为一种新兴的架构模式,提供了一种解决方案。本文将介绍云原生的基本概念,探讨它如何改变软件开发和运维的方式,并分析其在企业中的应用实例,最后讨论云原生面临的挑战及未来发展趋势。
54 2
|
3月前
|
敏捷开发 Cloud Native 云计算
云原生技术:推动现代软件发展的新引擎
【8月更文挑战第23天】在数字化浪潮的推动下,云原生技术正成为企业数字化转型和软件创新的关键力量。本文将深入探讨云原生技术的核心概念、优势及其在现代软件开发中的应用,旨在为读者提供对云原生技术的全面理解和认识。
|
4月前
|
存储 Kubernetes Cloud Native
云原生周刊:Score 成为 CNCF 沙箱项目
以下是内容的摘要,格式为Markdown: 开源项目: - [Trident]:NetApp维护的开源存储解决方案,支持容器化应用的持久化存储,兼容CSI接口。 - [Monokle]:Kubernetes YAML编辑器,简化配置创建、分析和部署。 - [Platform Aware Scheduling]:模块化策略驱动的Kubernetes调度器扩展,考虑平台特性。 - [cdebug]):容器和Pod故障排查工具,提供端口转发、文件系统导出等功能。
|
3月前
|
运维 Cloud Native API
云原生之旅:探索现代软件部署的未来
在数字化浪潮中,云原生技术如同一股清流,为软件开发与部署带来了革命性的变革。本文将深入浅出地探讨云原生概念的核心,揭示它如何优化资源利用、提升开发效率,并确保系统的可伸缩性与韧性。通过实际案例,我们一同见证云原生如何在企业中落地生根,助推创新和业务成长。
|
3月前
|
Cloud Native 持续交付 云计算
云原生之旅:探索现代软件部署的变革之路
在数字化浪潮中,云原生技术如同一艘航船,带领企业驶向灵活、高效的未来。本文将深入浅出地探讨云原生的核心理念、关键技术以及实践案例,揭示它如何重塑软件开发与运维的模式,为企业数字化转型提供动力。
50 0
|
5月前
|
Cloud Native 持续交付 云计算
云原生技术:构建未来软件的基石
【6月更文挑战第8天】随着信息技术的飞速发展,云计算已从一项辅助技术转变为企业数字化转型的核心。本文将深入探讨云原生技术的概念、优势及其在现代软件开发中的应用,揭示它是如何成为推动创新和效率提升的关键因素。