Notary 项目维护人员宣布了一项重大发布,包括 Notary 项目规范 v1.0.0、notation v1.0.0、notation-go v1.0.0 和notation-core-go v1.0.0,已经可以用于生产环境!
Notation 是 Notary 项目的一个子项目,包括 notation CLI 和两个实现最新Notary 项目规范的 Golang 库。Notation 项目始于2019 年 12 月,经过几年的小版本和 RC 版本的发布,代码已经成熟;CLI 和库的第一个版本 v0.7.0-alpha.1 在 2021 年 10 月发布。经过几个 alpha、beta 和 RC 版本的发布,二进制文件最终在 2023 年 5 月发布了最终版本 v1.0.0-RC.7。
以下是此版本中包含的一些主要功能和特性:
规范
Notary 项目规范达到了重大发布。所有规范、要求、场景、威胁模型和安全审计报告都可在此发布中获取。希望与 Notary 项目签名和工具进行互操作的独立软件供应商和工具开发人员应使用规范确保兼容性。
- Notary Project OCI signature specification
- Notary Project OCI COSE signature envelope
- Notary Project OCI JWS signature envelope
- Notary Project OCI signing and verification workflow
- Notary Project signing scheme
- Notary Project Trust Store and Trust Policy
- Notation Plugin specification
签名和验证功能
从软件生产者的角度来看,对软件制品进行签名可以帮助消费者检测篡改,并确保制品的真实性。签名软件还可以增加在向消费者分发软件制品时的信任度。Notary 项目为签名体验提供以下核心功能:
-
使用安全地存储在密钥管理系统(key management system,KMS)或签名服务中的签名密钥对制品进行签名。请参阅“可扩展性”部分中的可用插件,以了解对 Notation 的插件支持情况。
-
对符合 OCI 规范的注册表中存储的制品进行签名、列出和检查签名
- 符合
image-spec v1.0.2
- 符合
distribution-spec v1.0.1
- 符合
image-spec v1.1.0-rc4
- 符合
distribution-spec v1.1.0-rc3
(仅限 referrers tag schema)
- 符合
-
支持两种签名封包格式
-
COSE:COSE 是一种高效的二进制封包格式,可用于签名传统软件到低功耗设备上运行的物联网工作负载等各种场景。
-
JWS:JWS 是一种广泛使用的基于 JSON 的封包格式,可用于与现有应用程序和各种身份验证方案(包括 OIDC)进行互操作。
-
从软件消费者的角度来看,验证已签名制品的签名可以确保其完整性和真实性。Notary 项目为验证体验提供以下核心功能:
-
使用信任存储和信任策略进行签名验证。这还包括针对 OCI 仓库的细粒度信任策略和支持各种执行级别(例如强制执行 enforce、宽松执行 permissive、审计 audit)以支持各种场景。
-
可以使用 notation policy 命令来简化导入和检查信任策略的体验。
实验性功能
实验性功能仅用于测试和评估目的,不应在生产环境中使用。用户可以通过设置环境变量 NOTATION_EXPERIMENTAL 为 1 来在 Notation CLI 中启用实验性功能,示例如下:
export NOTATION_EXPERIMENTAL=1
有两个主要功能被标记为实验性功能。
-
在将制品推送到注册表之前,使用 OCI 镜像布局(layout)对制品进行签名、列出和验证。这使用户可以对存储在本地文件系统上的制品进行签名和验证。
-
OCI 分发引用 API。这允许 Notation CLI 以高效和清晰的方式获取签名列表。
可扩展性:对 Notation 的插件支持
Notation基于插件框架具有可扩展的设计。该框架为用户和供应商提供了插件接口,以实现与密钥/证书管理解决方案或签名服务的集成。目前,Notation 提供以下插件。
-
Notation 的 AWS Signer 插件
-
Notation 的 Azure Key Vault 插件
用于 Kubernetes 的准入控制器的集成
为了使用户能够在 Kubernetes 上验证和保护镜像部署,Notary 项目维护人员与Ratify和Kyverno团队合作,为在部署到 Kubernetes 之前验证 Notation 签名的镜像提供解决方案。用户有两种不同的选择来构建完整的端到端镜像完整性工作流程。详细信息请参阅:
-
使用 Notation、Ratify 和 OPA Gatekeeper 进行镜像签名和验证
-
使用 Kyverno 验证 CNCF Notary 项目签名
内置安全性
作为对安全性的承诺的一部分,Notary 项目维护人员与 CNCF 合作,建立了源代码的持续模糊测试,并于 2023 年完成了安全审计。在测试和审计过程中发现的所有漏洞都已在库和 CLI 的发布之前修复。以下是安全报告的链接:
- Notation Security Audit Report 2023
- Notary Project fuzzing audit report 22-23
接下来的计划
Notary 项目维护人员正在考虑未来里程碑的以下功能。
- 对任意的二进制大块进行签名和验证
- 用于签名和验证的 GitHub Actions 和其他 CI/CD 集成
- HashiCorp Vault 插件(实验性)
- 插件生命周期管理
- 时间戳支持
- 通过 CLI 命令管理信任策略
详情可查看官方公告。