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, 低维护成本, 分布式系统, 可验证日志, 后端重构, 响应大小分析, 对象存储, 开源项目, 数据完整性, 日志审计, 漏洞探索, 签名透明度日志, 签名验证, 请求拦截, 软件供应链安全, 远程方法调用, 防篡改