Grafeas简介
Grafeas通过供应链的方式来管理软件,它的目的是通过元数据模式为软件资源提供统一的API规范,允许虚拟机镜像、容器镜像、JAR文件脚本文件以及其他软件构件描述自己的环境,并且管理它们的用户。
Grafeas为组织提供了一个真实的资源中心,以便在不断增长的软件开发团队及各种环境中对使用的软件进行审计,并对软件的变更进行审计,同时以一种一致且可靠的方式进行。
Grafeas提供了两种元数据的api:notes和occurrences。
notes
notes是特定类型的元数据的高级描述,包括软件架构描述,如何构建镜像的细节(构建版本等),以及部署历史等等。
occurrences
occurrences是notes的实例化描述,其中详细描述了镜像是如何构建的。
Grafeas的使用
Grafeas规范定义了一些类型的notes的基本模式。并且notes和occurrences都需要持久化存储,每个事件的记录都使用一个唯一的标识符来跟踪。
Grafeas的服务都由Swagger(Swagger是RESTFUL API的文档)提供,因此用起来比较方便。
Grafeas通过Kubernetes被广泛关注并使用,借助于Kubernetes的策略引擎Kritis,允许基于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为代表附加到该机构的备注上。