millsks/django-python-generate-sbom

GitHub: millsks/django-python-generate-sbom

面向 Python 项目的自托管 Django 服务,解析依赖清单生成标准化 SBOM 并提供漏洞、许可证、依赖图与版本时效性分析报告。

Stars: 0 | Forks: 0

# django-python-generate-sbom 一个自托管的开源 Django Web 服务,它接收 Python 依赖清单并生成生产级的软件物料清单 (SBOM),支持标准格式(CycloneDX、SPDX),并提供四份分析报告:漏洞发现、许可证义务、依赖图和版本时效性——可通过 Web UI 和 REST API 获取。 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/millsks/django-python-generate-sbom/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/millsks/django-python-generate-sbom/branch/main/graph/badge.svg)](https://codecov.io/gh/millsks/django-python-generate-sbom) [![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=millsks_django-python-generate-sbom&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=millsks_django-python-generate-sbom) [![Release](https://img.shields.io/github/v/release/millsks/django-python-generate-sbom)](https://github.com/millsks/django-python-generate-sbom/releases) [![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13%20%7C%203.14-blue)](https://www.python.org/) [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) [![Docs](https://img.shields.io/badge/docs-mkdocs--material-526cfe)](https://millsks.github.io/django-python-generate-sbom/) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![Typed: mypy](https://img.shields.io/badge/typed-mypy-blue)](https://mypy-lang.org/) [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) ## 概述 将该服务指向一个 Python 依赖清单,它会解析完整的依赖树,生成已签署的 SBOM,并为其丰富四项分析,你可以通过 UI 浏览、导出为 Excel 或通过 REST API 获取。一切皆为多租户模式,并以你的组织为范围。 **功能:** - **多格式 SBOM** — 支持从 `requirements.txt`(及其带前缀的变体)、`pyproject.toml`、`pixi.toml` / `pixi.lock` 和 conda `environment.yml` 生成 CycloneDX 和 SPDX,并解析传递依赖。 - **漏洞报告** — 包含已知安全通告(CVE/GHSA)及其严重性和 CVSS。 - **许可证合规** — 按法律风险等级分组的各包许可证。 - **依赖图** — 可视化展示直接与传递依赖关系。 - **版本时效性** — 已安装版本与最新版本对比、LTS 跟踪,并标记 conda-forge 最新版本(通过 prefix.dev)与 PyPI 不一致的情况。 - **应用内 SBOM 查看器** 和每份报告的 **Excel 导出**。 - **账户与组织** — 注册、组织切换、成员管理和 API 密钥;支持会话和 API 密钥认证。 - **异步流水线** — 包含 Celery 工作流、实时进度、MinIO 构件存储以及计划内保留/清理任务。 - **Web UI**(React 19 + MUI)和 **REST API**,从同一源提供服务。 ## 文档 完整文档由 MkDocs Material 发布在 ****: - **[用户指南](https://millsks.github.io/django-python-generate-sbom/user-guide/)** — 账户、上传清单以及阅读每份报告。 - **[操作指南](https://millsks.github.io/django-python-generate-sbom/how-to/)** — 面向任务的实践方案。 - **[开发者文档](https://millsks.github.io/django-python-generate-sbom/developer/)** — 架构、本地设置、SBOM 流水线和测试。 - **[API 参考](https://millsks.github.io/django-python-generate-sbom/api/)** — REST 端点。 ## 截图 _Web UI 的截图将随 UI/视觉设计工作一同发布。_ ## 架构 一个模块化的 Django 单体应用 (`backend/`),配备了 Celery 异步流水线,并由 React SPA (`frontend/`) 作为前端。**Pixi 是整个项目的统一工具链**:一个单一的根目录 `pixi.toml` 即可安装 Python 环境和 Node 运行时,并编排所有任务。 ``` django-python-generate-sbom/ ← project root (pixi umbrella) pixi.toml # Python env + Node runtime + all tasks backend/ # Django + Celery frontend/ # React + Vite SPA Dockerfile # umbrella image (Python + Node); SPA baked in docker-compose.yml # full local stack (web, workers, postgres, redis, minio) ``` ## 快速开始 需要 [pixi](https://pixi.sh)。Node.js 和 Python 由 pixi 安装——无需单独设置工具链。 ``` pixi install # installs Python + Node environments pixi run bootstrap # installs the pre-commit git hooks pixi run ci # full validation gate (build · type-check · lint · coverage · docs) ``` Docker 栈是运行整个应用程序最简单的方式——SPA 被构建到镜像中并由 Django 提供服务,因此无需启动单独的前端服务器: ``` cp .env.example .env # then edit SECRET_KEY (and any passwords) in .env docker compose up --build # web, both Celery workers, beat, postgres, redis, minio ``` 等待 `web` 服务状态正常后,打开: | URL | 描述 | |---|---| | | Web UI (React SPA) | | | Django 管理站点 | | | 健康检查 (JSON) | | | MinIO 控制台(使用 `.env` 中的 `MINIO_ROOT_USER` / `MINIO_ROOT_PASSWORD` 登录) | 然后 **注册** 于 `/register`(这将创建你的账户和个人组织),**登录** 于 `/login`,并 **上传** 清单于 `/upload`。所有 SBOM 数据都限定于你当前的活动组织。请参阅 [用户指南](https://millsks.github.io/django-python-generate-sbom/user-guide/) 获取完整操作流程。 要通过 `/admin/` 进入 Django 管理后台,请在正在运行的 `web` 容器中创建一个超级用户: ``` docker compose exec web pixi run python backend/manage.py createsuperuser ``` ## 开发 所有任务均通过 `pixi run ` 从项目根目录运行: | 任务 | 用途 | |---|---| | `fmt` · `lint` · `check` | 格式化、Lint 和类型检查后端 (ruff, mypy) | | `test` · `test-integration` | 后端单元 / 集成测试 | | `cov` | 包含 90% 覆盖率门槛的完整测试套件 | | `fe-lint` · `fe-typecheck` · `fe-test` · `fe-build` | 前端 lint / 类型 / 测试 / 构建 | | `docs-serve` · `docs-build` | 预览 / 构建文档站点 | | `build` | 构建后端包发行版 | | `ci` | 完整验证序列(合并门槛) | 在认为任何更改完成之前,`pixi run ci` 必须退出代码 0。请参阅 [开发者文档](https://millsks.github.io/django-python-generate-sbom/developer/) 和 [CONTRIBUTING.md](CONTRIBUTING.md) 了解完整工作流。 ## 许可证 基于 [Apache License 2.0](LICENSE) 授权。
标签:CycloneDX, Django, Python, SBOM生成, SPDX, WebSocket, 依赖分析, 搜索引擎查询, 无后门, 测试用例, 网络测绘, 请求拦截, 逆向工具