
Bagel 推出跨平台 CLI,可检查开发者工作站配置与密钥元数据
来源标题:Bagel is a cross‑platform CLI that inspects developer workstations
Bagel 是一款跨平台命令行工具,可扫描 macOS、Linux 和 Windows 开发者工作站,生成工具、配置及密钥元数据的结构化 JSON 报告。该工具仅采集元数据(路径、权限、时间戳、密钥类型等),不输出或写入密钥值,且为只读操作、无网络扫描。其目标是帮助组织提升供应链安全可见性,而不外泄敏感负载。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
Bagel 是一个跨平台 CLI,用于检查开发者工作站(macOS、Linux、Windows),并生成一份结构化报告,涵盖开发者机器上真正重要的内容——工具、配置,以及关于密钥的元数据——帮助提升组织的供应链安全,同时不窃取任何实际数据。
关于每个探测器和检测器的详细文档,请参阅 Bagel 文档站点。
想要更多?如果你需要更强大的企业级版本,能够大规模部署并收集整个开发者笔记本机群的态势信息,可以看看 BoostSecurity Developer Endpoint Protection(DEP)产品。
绝不收集任何实际数据。 Bagel 只记录元数据(路径、所有者、权限、时间戳、配置标志、密钥类型/长度/过期时间)。密钥值绝不会出现在输出中,也不会写入磁盘。
本地优先。 报告默认以 JSON 格式输出到 stdout。
最小侵入。 只读操作;不注入进程;不进行网络扫描。
透明。 每个探测器都有文档说明,并可通过配置开关控制。
为什么要运行它?
现代供应链风险往往落在开发者终端上(恶意软件包、配置不当的凭据、薄弱的密钥管理习惯)。Bagel 将可见性标准化,让安全团队能够:
Git: credential.helper=store、http.sslVerify=false、使用非标准二进制文件的自定义 core.sshCommand、危险协议、禁用 fsck。
npm: .npmrc 中的 token、strict-ssl=false、HTTP(非 HTTPS)仓库。
SSH: 无密码短语的密钥、ForwardAgent yes、StrictHostKeyChecking=no、过于宽松的文件权限。
环境与历史记录: 嵌入在环境变量、.env 文件或 shell 命令历史中的密钥。
云服务: 配置文件中的 AWS 凭据、GCP API 密钥、Azure 存储密钥。
安装
预编译二进制文件
从 GitHub Releases 下载最新版本。
Intel Mac
curl -sL https://github.com/boostsecurityio/bagel/releases/latest/download/bagel_Darwin_x86_64.tar.gz | tar xz sudo mv bagel /usr/local/bin/
Apple Silicon
curl -sL https://github.com/boostsecurityio/bagel/releases/latest/download/bagel_Darwin_arm64.tar.gz | tar xz sudo mv bagel /usr/local/bin/
Homebrew:
x86_64
curl -sL https://github.com/boostsecurityio/bagel/releases/latest/download/bagel_Linux_x86_64.tar.gz | tar xz sudo mv bagel /usr/local/bin/
ARM64
curl -sL https://github.com/boostsecurityio/bagel/releases/latest/download/bagel_Linux_arm64.tar.gz | tar xz sudo mv bagel /usr/local/bin/
Windows:
从 releases 页面下载 bagel_Windows_x86_64.zip,解压后添加到 PATH。
Invoke-WebRequest -Uri "https://github.com/boostsecurityio/bagel/releases/latest/download/bagel_Windows_x86_64.zip" -OutFile "bagel.zip" Expand-Archive -Path "bagel.zip" -DestinationPath "."
从源码构建
需要 Go 1.25 或更高版本。
git clone https://github.com/boostsecurityio/bagel.git cd bagel go build -o bagel ./cmd/bagel
验证安装
bagel version
用法
bagel scan
该命令扫描你的工作站,并以 JSON 格式将结果输出到 stdout。
标志 说明 --format, -f 输出格式:json(默认)、table --output, -o 将输出写入文件而非 stdout --strict 如果检测到任何问题,以退出码 2 退出 --no-cache 绕过文件索引缓存并强制重建 --no-progress 禁用进度条 --verbose, -v 启用详细(调试)日志 --config 配置文件路径 --disable-version-check 禁用每日一次的新版本检查(环境变量:BAGEL_DISABLE_VERSION_CHECK,配置项:disable_version_check)
示例
将报告保存到文件
bagel scan -o report.json
表格输出,便于快速查看
bagel scan -f table
CI 门禁:如果发现问题则使构建失败
bagel scan --strict
调试特定扫描
bagel scan --verbose --no-progress
配置
Bagel 使用 YAML 配置文件。它会按以下顺序查找 bagel.yaml:
version: 1 probes: git: enabled: true ssh: enabled: true npm: enabled: true env: enabled: true shell_history: enabled: true cloud: enabled: true jetbrains: enabled: true gh: enabled: true ai_credentials: enabled: true ai_chats: enabled: true privacy: redact_paths: [] exclude_env_prefixes: [] output: include_file_hashes: false include_file_content: false
所有探测器默认启用。要禁用某个探测器,将 enabled 设为 false。
默认情况下,bagel 最多每 24 小时请求一次,检查是否有新版本可用。该请求会上报当前 bagel 版本、一个持久化在平台配置目录下的匿名实例标识符(Unix 上为 ~/.config/bagel/version-check.yaml,Windows 上为 %APPDATA%\bagel\version-check.yaml),以及自上次检查以来 CLI 的调用次数。不会发送任何扫描数据、主机数据或发现结果数据。如需禁用,可使用以下任一方式:
"metadata": { "version": "0.1.0
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。