scanoss/sbom-workbench

GitHub: scanoss/sbom-workbench

基于 Electron 的桌面应用,通过图形界面扫描源码识别开源组件,审计许可证合规性并生成 SBOM。

Stars: 60 | Forks: 13

# [SBOM Workbench](https://scanoss.com/product)
![GitHub release (latest by date)](https://img.shields.io/github/v/release/scanoss/sbom-workbench) ![License](https://img.shields.io/badge/license-GPL--2.0--only-brightgreen) [![REUSE status](https://api.reuse.software/badge/github.com/scanoss/sbom-workbench)](https://api.reuse.software/info/github.com/scanoss/sbom-workbench) ![test_workflow](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/8ccf8f851d095545.svg)
SBOM Workbench 是一个图形用户界面,用于通过 SCANOSS API 扫描和审计源代码。 审计源代码的许可证合规性从未如此简单。只需扫描您的源代码目录即可查找和识别开源组件。只需按下一个按钮,即可生成 SPDX-Lite 软件物料清单 (SBOM)。 _请前往 [Software Transparency Foundation](https://www.softwaretransparency.org/download) 获取适用于所有平台的预构建二进制文件_
## 前置条件 - Node.js >=v22.12.0 - NPM (Node Packages Manager) 我们强烈建议使用 [nvm](https://github.com/nvm-sh/nvm) 来管理您的 Node 版本 ## 安装 ``` npm install --legacy-peer-deps ``` 请注意,您应该在安装命令中包含 `--legacy-peer-deps` 参数。这是因为 `@mui/styles` 与 React 18 不兼容。您可以在 [https://mui.com/system/styles/basics/](https://mui.com/system/styles/basics/) 找到有关此内容的更多信息。 ### 故障排除 SBOM Workbench 使用 [node-gyp](https://www.npmjs.com/package/node-gyp) 来编译 SQLite3 原生模块。 该模块使用 "node-pre-gyp" 为您的平台下载预构建的二进制文件,否则您需要从源代码进行构建。 如果您的平台不存在预构建的二进制文件,node-gyp 将进行构建。 根据您的操作系统,您需要准备正确的环境来运行 node-gyp:请参阅 [https://github.com/nodejs/node-gyp#installation](https://github.com/nodejs/node-gyp#installation) ## 开始开发 在 `dev` 环境中启动应用程序: ``` npm start ``` 对于实时重载,您可以使用 `npm run start --watch` 来运行使用 [Electronmon](https://github.com/catdad/electronmon#readme) 的应用程序。警告:此工具具有较高的内存消耗。 ## 生产环境打包 为本地平台打包应用程序: ``` npm run package ``` ## 多语言 (i18n) SBOM Workbench 支持多语言。要贡献一种新语言,请参阅我们的[国际化文档](assets/i18n/README.md)。 ## 工作台配置 SBOM Workbench 支持高级设置。所有配置都需要包含在全局配置文件 `~/.scanoss/sbom-workbench-settings.json` 中 ### 扫描器参数 `"SCANNER_CONCURRENCY_LIMIT": ""` 扫描时使用的线程数(可选 - 默认为 5) `"SCANNER_POST_SIZE": ""` 扫描时限制 post 请求的千字节数(可选 - 默认为 16) `"SCANNER_TIMEOUT": ""` API 通信的超时时间(以秒为单位)(可选 - 默认为 300) ### 代理设置 您可能需要根据网络的配置方式指定代理设置 `"PROXY": ":"` 如果您的网络使用具有 SSL 拦截功能的代理,您可以在配置中包含您的证书 `"CA_CERT": ""` 您可以禁用任何 SSL 错误,为此您可以将此选项更改为 true `"IGNORE_CERT_ERRORS": true` # SBOM-Workbench 中的本地密码学检测 ## 概述 配置 API 密钥后,SBOM-Workbench 可以检测本地密码学。此功能支持检测代码库中的密码学算法和库。 ## 默认和自定义检测规则 系统提供了用于检测密码学算法和库的默认规则。但是,可以在要扫描的项目根目录中定义自定义规则。 ### 自定义规则文件 可以通过项目根目录中的以下 JSON 文件来定义自定义规则: - **算法检测规则**:`scanoss-crypto-algorithm-rules.json`。请参阅:[Algorithm Rules Sample](./assets/data/scanoss-crypto-algorithm-rules.json) - **库检测规则**:`scanoss-crypto-library-rules.json` ## 规则文件结构 ### 算法规则结构 `scanoss-crypto-algorithm-rules.json` 的结构应按以下格式编写: ``` [ { "algorithmId": "md5", "algorithm": "MD5 Message-Digest Algorithm", "strength": "128", "keywords": [ "md5_file", "md5", "md5crypt", "aprcrypt", "md5_encrypt", "md5_block_data_order", "ossl_md5_sha1_", "MD5_Init" ] } ] ``` ### 库规则结构 `scanoss-crypto-library-rules.json` 的结构应按以下格式编写: ``` [ { "id": "library/webcrypto", "name": "Web Cryptography API", "description": "A JavaScript API for performing basic cryptographic operations in web applications.", "keywords": [ "window.crypto.subtle", "crypto.subtle.", "crypto.getRandomValues", "NodeWebCrypto", "WebCryptoAPI" ], "url": "https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API", "category": "library", "purl": "pkg:generic/webcrypto", "tags": [ "JavaScript" ] } ] ``` # SCANOSS 设置文件 SCANOSS 提供了一个设置文件来自定义扫描过程。该设置文件是一个 JSON 文件,包含项目信息和 BOM(物料清单)规则。它允许您在扫描前后包含、移除或替换 BOM 中的组件。 ### 设置 ``scanoss.json`` 对象允许您配置扫描过程的各个方面。目前,它通过 ``skip`` 属性控制哪些文件应在扫描期间被跳过。 ### BOM 规则 ``bom`` 部分定义了在扫描前后修改 BOM 的规则。它包含三个主要操作: ### 1. Include(包含)规则 用于在扫描时添加上下文的规则。这些规则将被发送到 SCANOSS API,这意味着它们更有可能被视为结果扫描的一部分。 ``` { "bom": { "include": [ { "path": "/path/to/file", "purl": "pkg:npm/vue@2.6.12", "comment": "Optional comment" } ] } } ``` ### 2. Remove(移除)规则 用于在扫描后从结果中移除文件的规则。这些规则将在扫描后应用于结果文件。后处理发生在客户端。 ``` { "bom": { "remove": [ { "path": "/path/to/file", "purl": "pkg:npm/vue@2.6.12", "comment": "Optional comment" } ] } } ``` ### 3. Replace(替换)规则 用于在扫描后替换组件的规则。这些规则将在扫描后应用于结果文件。后处理发生在客户端。 ``` { "bom": { "replace": [ { "path": "/path/to/file", "purl": "pkg:npm/vue@2.6.12", "replace_with": "pkg:npm/vue@2.6.14", "license": "MIT", "comment": "Optional comment" } ] } } ``` # 匹配规则 1. **完全匹配**:要求 PATH 和 PURL 都匹配。这意味着该规则将仅应用于具有匹配的 PURL 和 PATH 的特定文件。 2. **部分匹配**:基于以下条件进行匹配: - 仅 PURL(PATH 为可选)。这意味着该规则将应用于具有匹配 PURL 的所有文件。 ## 配置示例 以下是一个展示所有部分的完整示例: ``` { "bom": { "include": [ { "path": "src/lib/component.js", "purl": "pkg:npm/lodash@4.17.21", "comment": "Include lodash dependency" } ], "remove": [ { "purl": "pkg:npm/deprecated-pkg@1.0.0", "comment": "Remove deprecated package" } ], "replace": [ { "path": "src/utils/helper.js", "purl": "pkg:npm/old-lib@1.0.0", "replace_with": "pkg:npm/new-lib@2.0.0", "license": "MIT", "comment": "Upgrade to newer version" } ] } } ``` ## 使用 您可以在项目根目录中添加您的 'scanoss.json' # 命令行界面 (CLI) SBOM Workbench 包含一个 CLI,用于在不启动图形界面的情况下管理配置。这对于自动化、脚本编写和无头环境非常有用。 ## 获取帮助 ``` # 显示所有可用命令 ./sbom-workbench-1.27.0-linux-x86_64-app.AppImage --help ``` ## 平台注意事项 ### Windows 在 Windows 上,Electron 应用程序默认作为 GUI 进程运行,不会附加控制台。这意味着: - **修改配置的命令可以正常工作**(`config init`、`config api add`、`config api rm`、`config api default`) - **显示输出的命令将不会显示结果**(`--help`、`--version`、`config api list`) - 在 cmd.exe 或 PowerShell 中没有可见输出 **Windows 示例:** ``` :: Initialize configuration sbom-workbench-1.27.0-win-x64-app.exe config init :: Add an API sbom-workbench-1.27.0-win-x64-app.exe config api add --url=https://api.scanoss.com --key=YOUR_API_KEY --default :: Remove an API by index sbom-workbench-1.27.0-win-x64-app.exe config api rm --index=1 :: Set default API sbom-workbench-1.27.0-win-x64-app.exe config api default --index=0 ``` ### Linux / macOS 在 Linux 和 macOS 上,CLI 输出会在终端中正常显示。两种参数语法均有效: ``` # Space 语法 ./sbom-workbench-1.27.0-linux-x86_64-app.AppImage config api add --url https://api.scanoss.com --key YOUR_API_KEY # Equals 语法(同样有效) ./sbom-workbench-1.27.0-linux-x86_64-app.AppImage config api add --url=https://api.scanoss.com --key=YOUR_API_KEY ``` #### Ubuntu 24.04+ 在 Ubuntu 24.04 及更新版本上,AppImage 沙箱可能由于内核限制而无法工作。如果您遇到沙箱错误,请通过设置环境变量来禁用它: ``` export ELECTRON_DISABLE_SANDBOX=1 ./sbom-workbench-1.27.0-linux-x86_64-app.AppImage config init ``` ## 配置命令 ### 初始化配置 在 `~/.scanoss/sbom-workbench-settings.json` 创建默认配置文件: ``` ./sbom-workbench-1.27.0-linux-x86_64-app.AppImage config init ``` ### API 管理 CLI 允许您管理多个 API 配置,以便连接到不同的 SCANOSS 服务器。 #### 列出已配置的 API 显示所有已配置的 API 及其索引: ``` ./sbom-workbench-1.27.0-linux-x86_64-app.AppImage config api list ``` **示例输出:** ``` Configured APIs: [0] https://api.scanoss.com [key set] (default) [1] https://custom.scanoss-server.com ``` #### 添加 API 添加一个新的 API 配置: ``` # 仅使用 URL 添加 API(公共 SCANOSS API) ./sbom-workbench-1.27.0-linux-x86_64-app.AppImage config api add --url https://api.scanoss.com # 使用 URL 和 API 密钥添加 API ./sbom-workbench-1.27.0-linux-x86_64-app.AppImage config api add --url https://api.scanoss.com --key YOUR_API_KEY # 添加 API 并将其设置为默认值 ./sbom-workbench-1.27.0-linux-x86_64-app.AppImage config api add --url https://custom.server.com --key YOUR_KEY --default ``` #### 移除 API 通过其索引移除 API 配置: ``` ./sbom-workbench-1.27.0-linux-x86_64-app.AppImage config api rm --index 1 ``` #### 设置默认 API 更改默认使用的 API: ``` ./sbom-workbench-1.27.0-linux-x86_64-app.AppImage config api default --index 0 ``` ## [协作工作区](COLLAB_WORKSPACE.md) SBOM Workbench 包含对协作工作区的支持,这是一项旨在增强团队协作的功能。在[此处](COLLAB_WORKSPACE.md)查看更多详细信息。 ## 代码查看器键盘快捷键 代码查看器支持以下用于缩放的键盘快捷键: | 操作 | macOS | Windows/Linux | |--------|-------|---------------| | 放大 | `Cmd + +` | `Ctrl + +` | | 缩小 | `Cmd + -` | `Ctrl + -` | | 重置缩放 | `Cmd + 0` | `Ctrl + 0` | 您也可以使用 `Ctrl/Cmd + 鼠标滚轮` 进行缩放。按 `F1` 打开命令面板并查看所有可用命令。 ## 贡献 SBOM Workbench 是一个开源项目,我们非常乐意接受来自社区的贡献。贡献的方式有很多。有关更多信息,请参阅[贡献指南](CONTRIBUTING.md)和[行为准则](CODE_OF_CONDUCT.md)。 ## 文档 本项目使用 Electron React Boilerplate 制作 请参阅[此处的文档和指南](https://electron-react-boilerplate.js.org/docs/installation)
标签:Electron, GNU通用公共许可证, IPv6支持, MITM代理, MUI, Node.js, npm, nvm, React, Redis利用, SBOM, SBOM Workbench, SBOM生成, SCANOSS, SPDx, SQLite3, Syscalls, 图形用户界面, 开源合规, 开源组件识别, 源码扫描, 硬件无关, 组件分析, 网络安全, 自动化攻击, 许可证审计, 跌倒检测, 软件物料清单, 软件透明度, 隐私保护