
SurrealDB 引入新依赖后如何通过 cargo-vet 信任、豁免并 prune 审计清单【免费下载链接】surrealdbA scalable, distributed, collaborative, document-graph database, for the realtime web项目地址: https://gitcode.com/GitHub_Trending/su/surrealdb当你在 SurrealDB 仓库的 PR 中引入一个新的第三方 crate 后CI 的依赖检查可能因cargo-vet失败该新依赖还没有被信任trust、审计audit或豁免exempt。SurrealDB 使用 cargo-vet 基础配置 做供应链安全检查该工具在 CI 流程中执行见 SECURITY.md配置文件归surrealdb/security组所有。本文按仓库文档给出的流程说明如何为这样的新依赖走信任或豁免路径并 prune 审计清单让依赖检查重新通过。准备本地安装依赖检查工具在本地操作cargo-vet前需要安装文档要求的两个工具cargo install --locked cargo-deny cargo install --locked cargo-vet这两条命令会下载并编译对应的 cargo 子命令、安装到本地 cargo 的 bin 目录前提是环境中已有可用的 Rust 工具链cargo。cargo-deny服务于漏洞检查路径cargo-vet是本文信任、豁免、prune 操作所用的工具。cargo-vet的配置文件是 supply-chain/config.toml其中声明version 0.10并 import 了多个第三方组织的审计清单已有的豁免条目就写在该文件的[[exemptions.*]]段中审计与信任记录位于 supply-chain/audits.toml 的[[audits.*]]和[[trusted.*]]段。判断新依赖走哪条路径文档对cargo-vet检查失败的定义是该依赖“has not yet been trusted, audited nor exempted”。处理的第一步是判断这个依赖是否真的需要引入 SurrealDB若不需要就不要引入。确需引入时按发布者身份二选一该依赖由 SurrealDB 员工发布且所有发布者都是 SurrealDB 员工——可以信任为safe-to-deploy否则——当前阶段的做法是从 vetting 流程中豁免。信任由 SurrealDB 员工发布的依赖执行前必须确认该依赖的全部发布者都是 SurrealDB 员工这是文档给出的前置条件。确认后用以下命令信任PACKAGE替换为新依赖的 crate 名例如my-new-cratecargo vet trust PACKAGE信任后依赖会以safe-to-deploy标准记入supply-chain/audits.toml的[[trusted.*]]条目格式可对照仓库现有条目含criteria、user-id、start/end字段如[[trusted.anyhow]]。豁免其他新依赖对不由 SurrealDB 员工发布的依赖文档给出的处理是暂时豁免cargo vet add-exemption PACKAGE豁免条目写入 supply-chain/config.toml格式为version加criteria。仓库现有条目的实际形态如下文档示例取自该文件[[exemptions.ahash]] version 0.8.12 criteria safe-to-deploy现有条目中出现的 criteria 值有safe-to-deploy和safe-to-run两种。用 prune 清理过期的审计条目完成信任或豁免后文档要求执行cargo vet prune其用途是 prune 审计清单移除过期的条目使 supply-chain/audits.toml 与当前依赖树保持一致。提交变更与审批文档明确了合入路径上述对supply-chain/配置文件的变更由surrealdb/security组审批。本地执行完trust/add-exemption/prune后把改动提交到 PR 等待该组批准cargo-vet作为 CI 动作随流程重新执行PR 上的依赖检查通过即流程完成。文档没有给出本地命令的固定成功日志不要把特定输出文本当作成功判据。边界与限制cargo-vet在当前实现中只是 informational 工具SurrealDB 不会对第三方依赖做实质性安全评审见 supply-chain/README.md。当前阶段的默认妥协由 SurrealDB 员工发布且是唯一发布者的依赖默认被信任被信任组织直接而非传递审计过的依赖默认被信任尚未审计的依赖被豁免。工作区 cratesurrealdb、surrealdb-core、surrealdb-server、surrealism、surrealml-core等均设置了audit-as-crates-io false按第一方可信代码处理版本 bump 时无需维护逐版本豁免下游消费者使用各自的cargo-vet配置。若 CI 是cargo-deny因已知漏洞而失败走的是另一条路径在独立分支执行cargo update PACKAGE更新依赖若无法更新则在 deny.toml 中添加带理由和移除条件的例外。不要把它与本文的cargo-vet信任/豁免流程混用。【免费下载链接】surrealdbA scalable, distributed, collaborative, document-graph database, for the realtime web项目地址: https://gitcode.com/GitHub_Trending/su/surrealdb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考