sigstore/rekor-tiles
GitHub: sigstore/rekor-tiles
Rekor v2 是 Sigstore 生态中重新设计的签名透明度日志系统,采用基于分片的新架构以降低运维成本并简化部署。
Stars: 32 | Forks: 17
# Rekor v2
Rekor v2,也称为 rekor-tiles 或 Rekor on Tiles,是一个经过重新设计和现代化的 [Rekor](https://github.com/sigstore/rekor),它是 Sigstore 的签名透明度日志,其后端正过渡到一个现代的、[基于分片的透明度日志](https://transparency.dev/articles/tile-based-logs/)实现,以简化维护并降低运营成本。
更多信息(**文档与 [sigstore-dev](https://groups.google.com/g/sigstore-dev) 共享,请加入该群组以获取访问权限,请勿请求访问权限**):
* [提案](https://docs.google.com/document/d/1Mi9OhzrucIyt-UCLk_FxO2_xSQZW9ow9U3Lv0ZB_PpM/edit?resourcekey=0-4rPbZPyCS7QDj26Hk0UyvA&tab=t.0#heading=h.bjitqo6lwsmn)
* [设计文档](https://docs.google.com/document/d/1ZYlt_VFB-lxbZCcTZHN-6KVDox3h7-ePp85pNpOUF1U/edit?resourcekey=0-V3WqDB22nOJfI4lTs59RVQ&tab=t.0#heading=h.xzptrog8pyxf)
## 存储后端
Rekor v2 支持多种存储后端。为每个后端提供了独立的二进制文件:
* `rekor-server-gcp`:GCP 专用二进制文件(仅包含 Google Cloud 依赖项)
* `rekor-server-aws`:AWS 专用二进制文件(仅包含 AWS 依赖项)
* `rekor-server-posix`:基于 POSIX 的存储(轻量级,无云依赖项)
* `rekor-server-gcpcloudsql`:GCP 二进制文件的替代方案,使用 CloudSQL 而不是 Spanner
### Google Cloud Platform (GCP)
* 二进制文件:`rekor-server-gcp`
* 容器:`rekor-tiles/gcp`
* 条目排序:Cloud Spanner
* 分片存储:Google Cloud Storage (GCS)
* 用例:GCP 的首选部署架构,高度可扩展
### Amazon Web Services (AWS)
* 二进制文件:`rekor-server-aws`
* 容器:`rekor-tiles/aws`
* 排序:Aurora MySQL 或 RDS MySQL
* 分片存储:Amazon S3
* 用例:AWS 的部署架构
### POSIX
* 二进制文件:`rekor-server-posix`
* 容器:`rekor-tiles/posix`
* 排序:原子 POSIX 操作
* 分片存储:兼容 POSIX 的文件系统
* 用例:成本更低,易于服务
### GCP CloudSQL + Cloud Storage
* 二进制文件:`rekor-server-gcpcloudsql`
* 容器:`rekor-tiles/gcpcloudsql`
* 排序:CloudSQL
* 分片存储:Google Cloud Storage (GCS)
* 用例:Spanner 排序的替代方案,建议仅在无法使用 Spanner 时使用
要向 GCS 进行身份验证,您必须创建 [HMAC 访问密钥](https://docs.cloud.google.com/storage/docs/authentication/hmackeys) 并设置以下环境变量:
* `GCS_HMAC_ACCESS_KEY_ID`
* `GCS_HMAC_SECRET`
* `GCS_REGION`,存储桶所在的区域
* `GCS_ENDPOINT_URL`,应等于 `https://storage.googleapis.com`
## 公共实例
Sigstore 社区托管了一个具有 99.5% 可用性 SLO 的 Rekor v2 生产级实例。
有关运行时间指标,请参阅 [状态页面](https://status.sigstore.dev/)。
使用公共实例的 TUF 仓库来确定活动实例的 URL。
请注意,社区实例的 URL 大约每 6 个月会更改一次,当我们“分片”日志时,会创建一个新的日志实例以保持日志大小可维护。
Sigstore 客户端将从 TUF 分发的 [SigningConfig](https://github.com/sigstore/root-signing/blob/main/targets/signing_config.v0.2.json) 中提取最新的日志分片 URL,并将从 [TrustedRoot](https://github.com/sigstore/root-signing/blob/main/targets/trusted_root.json) 中获取活动和非活动分片的公钥。
截至 2025 年 10 月,我们尚未在 SigningConfig 中分发当前的 Rekor v2 URL,以便为用户提供充足的时间更新其客户端以支持验证来自 Rekor v2 的条目。我们计划在 2025 年底/2026 年初分发最新的 Rekor v2 URL。
如果您想开始使用 Rekor v2,请构建一个签名配置,以 [TUF 分发的签名配置](https://github.com/sigstore/root-signing/blob/main/targets/signing_config.v0.2.json) 为基础,并将以下实例添加为 `rekorTlogUrls` 列表中的第一个条目:
```
{
"url": "https://log2025-1.rekor.sigstore.dev",
"majorApiVersion": 2,
"validFor": {
"start": "2025-10-06T00:00:00Z"
},
"operator": "sigstore.dev"
},
```
**注意**:当我们部署 2026 年实例时,我们最终将关闭 2025 年的 Rekor v2 实例。我们强烈建议不要将此 URL 硬编码到任何难以更新的流水线中。
## 安装
我们为私有部署提供预构建的二进制文件和容器。
* 从 [Releases](https://github.com/sigstore/rekor-tiles/releases) 下载最新的二进制文件
* 从 [GHCR](https://github.com/sigstore/rekor-tiles/pkgs/container/rekor-tiles) 拉取最新的容器
* 通过 [Helm](https://github.com/sigstore/helm-charts/tree/main/charts/rekor-tiles) 安装 Rekor v2
## 安全报告
如果您发现任何问题,请遵循 Sigstore 的 [安全策略](https://github.com/sigstore/rekor-tiles/security/policy) 进行报告。
## 本地开发
### 部署
运行 `docker compose up --build --wait` 以启动服务以及模拟的 Google Cloud Storage 和 Spanner 实例。
运行 `docker compose down` 以关闭服务,或运行 `docker compose down --volumes` 以关闭服务并删除持久化的分片。
### 发起请求
按照 [客户端文档](https://github.com/sigstore/rekor-tiles/blob/main/CLIENTS.md#rekor-v2-the-bash-way) 构造请求并解析响应。
### 测试
使用 `go test ./...` 运行单元测试。
按照 [端到端测试文档](https://github.com/sigstore/rekor-tiles/blob/main/tests/README.md) 了解如何针对本地实例运行集成测试。
## 添加存储后端
Tessera 支持针对不同云提供商和基础设施的多种 [存储后端](https://github.com/transparency-dev/tessera/tree/main/storage)。我们将根据用户需求在 Rekor 中添加对不同存储后端的支持。
Rekor 将为每个存储后端生成不同的二进制文件和容器。二进制文件将被命名为 `rekor-server-`,容器将被命名为 `github.com/sigstore/rekor-tiles/pkgs/container/rekor-tiles/`。
要添加对新后端的支持,请参考以下示例,该示例展示了来自 [PR #630](https://github.com/sigstore/rekor-tiles/pull/630) 的 `gcp` 后端:
* 创建一个 [特定后端的驱动程序](https://github.com/sigstore/rekor-tiles/blob/d596e236da3ce44024986f24c34005714430dda5/internal/tessera/gcp/gcp.go)
* 如有必要,创建一个 [特定后端的签名者/验证者](https://github.com/sigstore/rekor-tiles/blob/682236adf5e63118853b00c5bfa33ba36a381fce/internal/tessera/gcp/signerverifier/signerverifier.go)。
您至少应该支持基于文件的签名者/验证者。要支持 KMS 支持的密钥,请导入云提供商特定的驱动程序([示例](https://github.com/sigstore/rekor-tiles/blob/682236adf5e63118853b00c5bfa33ba36a381fce/internal/tessera/gcp/signerverifier/signerverifier.go#L33))。
* 创建一个 [特定后端的主包](https://github.com/sigstore/rekor-tiles/tree/d596e236da3ce44024986f24c34005714430dda5/cmd/rekor-server/gcp)
* 创建一个 Docker compose 文件,并设置 [`STORAGE_BACKEND`](https://github.com/sigstore/rekor-tiles/blob/d596e236da3ce44024986f24c34005714430dda5/compose.yml#L52-L53) 参数以构建容器化二进制文件
* 添加 [端到端测试配置](https://github.com/sigstore/rekor-tiles/blob/d596e236da3ce44024986f24c34005714430dda5/tests/e2e_test.go#L77-L93)
* 将二进制文件添加到 [goreleaser](https://github.com/sigstore/rekor-tiles/blob/d596e236da3ce44024986f24c34005714430dda5/.goreleaser.yaml#L30-L46)
* 将存储后端添加到 [容器构建矩阵](https://github.com/sigstore/rekor-tiles/blob/d596e236da3ce44024986f24c34005714430dda5/.github/workflows/build_container.yml#L51)
* 更新 [构建测试矩阵](https://github.com/sigstore/rekor-tiles/blob/69bc24a7269a3a0b6d8df3f4938f6eb77c2194b9/.github/workflows/test.yml#L50)
* 更新 [端到端测试矩阵](https://github.com/sigstore/rekor-tiles/blob/69bc24a7269a3a0b6d8df3f4938f6eb77c2194b9/.github/workflows/test.yml#L115)
* 添加 [Makefile 目标](https://github.com/sigstore/rekor-tiles/blob/d596e236da3ce44024986f24c34005714430dda5/Makefile#L76-L77) 并更新 [`make all`](https://github.com/sigstore/rekor-tiles/blob/d596e236da3ce44024986f24c34005714430dda5/Makefile#L18)
* 合并后,更新 [必需测试](https://github.com/sigstore/community/blob/ff0761c37ab63c55f50609ed32c27e2bc9497572/github-sync/github-data/sigstore/repositories.yaml#L1513) 列表
标签:AWS, Bing搜索, DNS解析, DPI, EVTX分析, EVTX分析, GCP, Go 语言, Merkle Tree, POSIX, RDS, Rekor, S3, Sigstore, Spanner, Tiles 架构, Zenmap, 低维护成本, 分布式系统, 可验证日志, 后端重构, 响应大小分析, 对象存储, 开源项目, 数据完整性, 日志审计, 漏洞探索, 签名透明度日志, 签名验证, 请求拦截, 软件供应链安全, 远程方法调用, 防篡改