efficjump/my-nexus

GitHub: efficjump/my-nexus

一个自托管的 Nexus Repository 启动模板,整合包清单、SBOM、下载历史与漏洞数据,通过 MCP 服务器让 AI 助手完成资产盘点、漏洞影响分析和库审批。

Stars: 0 | Forks: 0

# my-nexus `my-nexus` 是一个开源启动模板,用于将 Nexus Repository 作为内部包中心运行,并通过 AI 工具查询包的使用情况。 它包括: - 通过 `nexusctl` 实现的 Nexus Repository 基础设施即代码配置。 - 一个集成的 Web 服务器,用于提供 dashboard、审批、API、scheduler 和 MCP HTTP 服务。 - 一个面向本地 AI 客户端的只读 stdio MCP 服务器。 - 用于 Nexus `request.log` 和 CycloneDX/SPDX SBOM 文件的收集器。 - 用于 Nexus、PostgreSQL 和集成服务器的 Docker Compose 示例。 ## 为什么会有这个项目 Nexus 可以告诉你什么被存储和下载了。但它本身无法证明当前哪个生产系统正在运行存在漏洞的依赖项。本项目通过结合以下内容,补齐了缺失的资产盘点层: - Nexus REST API 组件元数据。 - Nexus `request.log` 下载历史。 - 来自 CI/CD 的 SBOM。 - 来自 Kubernetes、VM 或发布 pipeline 的运行时部署清单。 - OSV/NVD 漏洞数据。 然后,MCP 服务器会公开安全、只读的工具,以便 AI 助手能够回答以下问题: ## 快速开始 安装依赖项: ``` pnpm install ``` 构建: ``` pnpm build ``` 验证示例配置: ``` pnpm dev:validate ``` 创建初始资产清单文件: ``` node dist/nexusctl/main.js --config config/my-nexus.example.yaml init-data ``` 运行集成 Web 服务器: ``` node dist/server/main.js --config config/my-nexus.example.yaml ``` 打开 `http://127.0.0.1:8787`。 使用 stdio 从 MCP 客户端运行 MCP 服务器: ``` node dist/nexus-mcp/main.js --config config/my-nexus.example.yaml ``` ## 主要命令 ``` nexusctl validate --config config/my-nexus.example.yaml nexusctl plan --config config/my-nexus.example.yaml nexusctl apply --config config/my-nexus.example.yaml --dry-run nexusctl sync-components --config config/my-nexus.example.yaml my-nexus-log-collector --config config/my-nexus.example.yaml --file /path/to/request.log my-nexus-sbom-ingestor --config config/my-nexus.example.yaml --file sbom.json --system billing-api --as-deployment ``` ## MCP 工具 - `lookup_cve`:通过配置的漏洞源解析 CVE 或安全公告。 - `find_affected_components`:将 CVE 与索引的组件、SBOM、部署和下载记录进行匹配。 - `find_download_history`:搜索源自 Nexus request-log 的下载事件。 - `find_running_systems`:根据 purl 或 CVE 查找已部署的系统。 - `resolve_owner`:根据所有者引用或系统解析所有者元数据。 - `generate_impact_report`:生成 Markdown 格式的事件影响报告。 - `inventory_summary`:总结已索引的资产清单。 - `request_library_approval`:创建库审批请求。 - `decide_library_approval`:批准、拒绝或取消请求。 - `list_library_approvals`:列出请求及其当前状态。 - `get_library_history`:展示包的审批、下载、SBOM、部署和组件历史记录。 - `summarize_library_risk`:查询包已知的 OSV 漏洞。 ## 配置 复制 `.env.example` 和 `config/my-nexus.example.yaml`,然后根据您的环境修改相应的值。密钥通过环境变量名引用,而不是直接存储在 YAML 中。 仓库名称、上游 URL、blob store 名称、端口和所有者默认设置均由配置驱动。 ## 数据模型 该启动模板在 `dataDir` 下使用仅可追加的 JSONL 文件。这对于本地和小型团队部署是有意为之,因为它易于审计和检查。对于更大规模的部署,请保留 MCP 工具契约,并将 `FileInventoryStore` 替换为 PostgreSQL 或 OpenSearch。 主要记录类型: - `component` - `download` - `sbom` - `deployment` - `owner` - `library-approval-request` - `library-approval-decision` - `library-history-event` 包标识尽可能使用 Package URL (`purl`)。 ## 安全态势 - MCP 工具默认是只读的。 - 可变操作(例如创建工单或隔离)应作为单独的工具添加,并需具有明确的授权。 - AI 助手应总结和关联证据,而不是捏造漏洞匹配。 - 所有包匹配均基于标准化的资产清单和 OSV/NVD 数据。 - 请将 MCP 访问限制在受信任的网络内,或置于经过身份验证的网关之后。 ## 文档 - [架构](docs/architecture.md) - [运维](docs/operations.md) - [原生安装](docs/native-install.md) - [Windows 安装](docs/windows-install.md) - [MCP 客户端示例](examples/mcp-client.json)
标签:AI助手, DevSecOps, GPT, MITM代理, 上游代理, 制品仓库, 占用监测, 测试用例, 漏洞管理, 版权保护, 自动化攻击, 自动化集成, 资产管理, 软件物料清单(SBOM)