WillIsback/caviarder

GitHub: WillIsback/caviarder

一款基于 Rust 的命令行机密脱敏工具,利用 gitleaks 规则集在分享文本前自动识别并替换 API 密钥、token 等敏感信息。

Stars: 0 | Forks: 0

# caviarder [![Crates.io](https://img.shields.io/crates/v/caviarder)](https://crates.io/crates/caviarder) **使用 gitleaks 检测规则从文本中脱敏机密信息。** `caviarder`(法语意为“脱敏”)是一个快速的 Rust CLI,它从文件或 stdin 读取文本,并将检测到的机密信息(API 密钥、token、密码)替换为占位符。它使用在编译时嵌入的 [gitleaks](https://github.com/gitleaks/gitleaks) 社区维护的规则集 —— 超过 220 种模式。 ## 为什么使用 分享配置文件、日志或调试输出时,往往会在你不知不觉中泄露机密信息。`gitleaks` 可以在 CI 期间捕获它们,但并不适合用于临时清理。`caviarder` 填补了这一空白: - **管道传输任何内容**:`cat file | cav` —— 作用类似 `cat` 但更加安全。 - **提交前检查**:`cav --check file` —— 如果发现机密信息则以退出状态码 1 退出。 - **零配置**:内置 220 多条规则。无需设置,无需服务器,无额外依赖。 ## 安装说明 ### 从源码安装 ``` git clone https://github.com/WillIsback/caviarder.git cd scrub cargo build --release cp target/release/cav ~/.local/bin/ ``` 需要 Rust 1.70+。 ### 从 crates.io 安装 ``` cargo install caviarder ``` ## 用法 ### 脱敏文件 ``` cav config.yml # → 打印脱敏版本到 stdout ``` ### 从任意命令通过管道传入 ``` cat config.yml | cav echo "$API_KEY" | cav env | cav ``` ### 保存脱敏后的输出 ``` cav config.yml -o safe.yml # 或 cat config.yml | cav > safe.yml ``` ### 检查机密信息(如果发现则以状态码 1 退出) ``` cav --check deploy.sh echo $? # 1 if secrets were found ``` ### 扫描并显示详细统计信息 ``` cav --stats entrypoint.sh # → stderr:按规则统计的脱敏数量 ``` ### 列出所有检测规则 ``` cav --list-rules ``` ### 添加自定义规则 创建一个包含你自定义模式的 TOML 文件: ``` [[rules]] id = "my-app-token" regex = '''myapp-[A-Za-z0-9]{32}''' entropy = 3.0 ``` 然后将其与内置规则结合使用: ``` cav --rules my-rules.toml config.yml ``` ## 工作原理 | 层级 | 文件 | 作用 | |-------|------|------| | 规则 | `config/gitleaks.toml` | 来自 gitleaks 的 220 多个正则表达式模式(编译时嵌入) | | 引擎 | `lib.rs` | 按顺序应用规则,可选的 Shannon 熵过滤,捕获组保留 | | CLI | `main.rs` | clap 参数解析,stdin/文件 I/O,退出代码 | 处理流水线为:**文本 → 正则表达式扫描 → 熵检查 → 替换**。 如果规则具有熵阈值,则仅对 Shannon 熵满足阈值的匹配项进行脱敏 —— 这减少了在短字符串或重复字符串上的误报。 如果规则定义了捕获组 `( )`,则仅对捕获的部分进行脱敏,匹配的其余部分将作为上下文保留: ``` --api-key "sk-abc123DEF456ghi789jkl012mnopqrXYZ" → --api-key "[CAVIARDER]" ``` ## 与 gitleaks 的区别 | | `gitleaks` | `caviarder` | |---|-----------|------------| | 目的 | CI/CD 扫描 | 临时脱敏 | | 输出 | JSON/CSV 报告 | 输出至 stdout 的脱敏文本 | | 安装 | Go 二进制文件 + 配置 | 单个 Rust 二进制文件,无依赖 | | 规则更新 | 手动拉取配置 | 重新编译以刷新 | ## 许可证 MIT
标签:DevSecOps, Python安全, Redis利用, Rust, StruQ, 上游代理, 可视化界面, 安全合规, 敏感信息脱敏, 文本处理, 网络代理, 网络流量审计, 通知系统