Mehrdoost/devsecops-radar
GitHub: Mehrdoost/devsecops-radar
一款面向 DevSecOps 场景的多扫描器安全聚合看板,将 Trivy、Semgrep、Poutine、Zizmor 的扫描结果统一展示,并提供本地 LLM 智能分析和历史趋势追踪。
Stars: 0 | Forks: 0
# 🛡️ Pipeline Sentinel
**统一的 CI/CD 安全可观测性 — 支持离线、AI 增强且可扩展**
将来自 **Trivy、Semgrep、Poutine 和 Zizmor** 的扫描结果聚合到一个美观的暗黑模式仪表板中。通过 **LLM 驱动的分析引擎**关联风险,随时间追踪安全趋势,并执行安全护栏 — 集成于 CLI + Web UI 之中。
[](https://github.com/Mehrdoost/devsecops-radar/stargazers)
[](LICENSE)
[](https://pypi.org/project/devsecops-radar/)
[](https://github.com/Mehrdoost/devsecops-radar/releases)
[](https://github.com/Mehrdoost/devsecops-radar/actions/workflows/test-action.yml)
[](https://hub.docker.com/r/Mehrdoost/devsecops-radar)
## 📸 仪表板预览

*(严重程度环形图、趋势折线图、搜索与过滤 — 均完全支持离线使用。)*
## 🚀 快速入门
### 方式 1 – 从 PyPI 安装(推荐)
```
pip install devsecops-radar
# 输入 scanner JSON(repo 中包含样本数据)
devsecops-radar --trivy sample_trivy.json --semgrep sample_semgrep.json
# 启动 dashboard
devsecops-radar-web
```
打开 http://localhost:8080 — 您的统一仪表板已上线。
### 方式 2 – 从源码安装
```
git clone [https://github.com/Mehrdoost/devsecops-radar.git](https://github.com/Mehrdoost/devsecops-radar.git)
cd devsecops-radar
pip install -e .
devsecops-radar --trivy sample_trivy.json --semgrep sample_semgrep.json
devsecops-radar-web
```
### 方式 3 – 使用 Docker 运行
```
docker pull ghcr.io/mehrdoost/devsecops-radar:latest
docker run -p 8080:8080 ghcr.io/mehrdoost/devsecops-radar:latest
```
**挂载您自己的扫描结果文件:**
```
docker run -p 8080:8080 -v $(pwd)/findings.json:/data/findings.json ghcr.io/mehrdoost/devsecops-radar:latest
```
**或使用 Docker Compose:**
```
docker compose up
```
## ✨ 主要特性
| 功能 | 描述 |
| :--- | :--- |
| 🔌 **多扫描器集成** | 原生解析 Trivy、Semgrep、Poutine 和 Zizmor。通过插件架构添加您自己的扫描器。 |
| 🧩 **混合规则引擎** | 从本地目录加载自定义规则(离线)或从 GitHub 拉取社区策划的规则(`--update-rules`)。 |
| 🧠 **LLM 驱动分析** | 可选的 AI 关联、误报减少和攻击路径识别(基于 Ollama,完全离线)。 |
| 📈 **扫描历史与趋势** | 基于 SQLite 的历史存储。可视化趋势图展示风险随时间的演变。 |
| 🤖 **GitHub Action** | 一步集成到您的 CI/CD 中。汇总扫描结果并可选地在 PR 上评论。 |
| 🎨 **精美的暗黑模式仪表板** | 严重程度环形图、趋势折线图、搜索与过滤 — 完全离线工作(所有资源已打包)。 |
| 🐳 **Docker 原生支持** | GitHub Container Registry 上的官方镜像。只需一个 `docker run` 即可运行。 |
## 🔧 支持的扫描器(内置)
| 扫描器 | 扫描内容 | 使用示例 |
| :--- | :--- | :--- |
| **Trivy** | 容器镜像与依赖项 | `trivy image nginx:latest` |
| **Semgrep** | SAST(静态代码分析) | `.semgrep.yml` 规则 |
| **Poutine** | GitLab CI/CD 配置安全 | `.gitlab-ci.yml` 错误配置 |
| **Zizmor** | GitHub Actions 工作流安全 | 工作流注入风险 |
*没有找到您需要的工具?您可以自行添加 — 请参阅下方的规则引擎部分。*
## 🧩 自定义规则引擎 — 添加您自己的规则
Pipeline Sentinel 内置混合规则引擎,允许您将任何 JSON 数据提供给仪表板。无需编写 Python 代码。
### 分步指南(适用于所有三种安装方式)
**1. 创建您的规则 JSON 文件。**
任何包含扫描结果列表的 JSON 文件均可被接受。以下是一个最小化示例(`my-findings.json`):
```
[
{
"tool": "My Scanner",
"target": "production/nginx.conf",
"id": "CUSTOM-2026-001",
"severity": "HIGH",
"title": "TLS 1.0 enabled",
"description": "TLS 1.0 is deprecated and vulnerable. Disable it and enable TLS 1.2+ only.",
"line": 25
}
]
```
**2. 将您的 JSON 文件放置在一个目录中。**
创建一个文件夹(例如 `~/my-security-rules/`)并将您的 `.json` 文件复制到其中。
**3. 使用 `--rules` 参数运行 Pipeline Sentinel。**
```
# PyPI / 源码安装
devsecops-radar --trivy sample_trivy.json --rules ~/my-security-rules/
# Docker(挂载你的 rules 文件夹)
docker run -p 8080:8080 -v ~/my-security-rules:/rules ghcr.io/mehrdoost/devsecops-radar:latest
```
您的自定义扫描结果将与内置扫描器的结果一起显示在仪表板中。
### 自动检测格式
引擎会自动识别以下 JSON 结构:
* **Trivy** (`Results` → `Vulnerabilities`)
* **Semgrep** (`results` → `check_id`)
* **Poutine / Zizmor / Generic** (`findings` → `rule_id`)
* **简单的扫描结果列表**(任何包含 `severity`、`id`、`title` 的 JSON 数组)
*如果您想永久添加一个新的扫描器,请扩展 `BaseScanner` 类。请参阅插件开发者指南。*
## 📊 扫描历史与趋势
每次运行 CLI 都会自动将扫描结果保存在本地的 `scan_history.db` 中。
仪表板会渲染一个**随时间变化的趋势**折线图,以便您监控安全态势是否正在改善。
```
# 包含多次扫描的构建历史
devsecops-radar --trivy sample_trivy.json --semgrep sample_semgrep.json
devsecops-radar --trivy sample_trivy.json --poutine sample_poutine.json
devsecops-radar-web
# 在 http://localhost:8080 查看趋势图
```
## 🧠 AI 驱动分析(可选)
使用 `--analyze` 启用 LLM 分析(需要本地运行 Ollama 实例):
```
ollama pull llama3.2:latest # one‑time setup
devsecops-radar --trivy sample_trivy.json --semgrep sample_semgrep.json --analyze
```
*生成包含执行摘要、攻击路径和修复建议的 `findings_ai_summary.md` 文件。*
## 🤖 GitHub Action
只需一步即可将安全分析添加到您的工作流中:
```
- name: Pipeline Sentinel
uses: Mehrdoost/devsecops-radar/action@main
with:
trivy_report: trivy-results.json
semgrep_report: semgrep-results.json
poutine_report: poutine-results.json
zizmor_report: zizmor-results.json
```
*该 action 会合并扫描结果,创建一个作业摘要,并输出 CRITICAL/HIGH 级别的数量。*
## 🏗️ 架构
```
devsecops_radar/
├── cli/ # CLI entry point (scanner.py)
├── core/ # Rule engine, DB, LLM analyzer
├── scanners/ # Pluggable scanner classes (Trivy, Semgrep, ...)
└── web/ # Flask dashboard (HTML/JS/CSS embedded)
```
添加新的扫描器只需继承 `BaseScanner` 子类并实现 `parse()` 方法即可。
## 🤝 参与贡献
非常欢迎提交 Pull requests 和 Issues!
如果您想集成一个新的扫描器,请附带其 JSON 输出示例提交一个 Issue。
## 🗺️ 路线图
- [x] 多扫描器插件引擎
- [x] LLM 关联与分析
- [x] 扫描历史 + 趋势图
- [x] GitHub Action (复合)
- [x] Docker 镜像
- [ ] 安全护栏策略 (`policy.yml`)
- [ ] AI 修复顾问(详细的修复指导)
- [ ] 分支间的扫描结果差异/对比
- [ ] Jira / Slack 集成
## 👨💻 作者
**Mehrdoost**
[](https://github.com/Mehrdoost)
## 📜 许可证
MIT — 详见 [许可证](LICENSE)。
⭐ **如果这个项目帮助您的团队交付了更安全的软件,请留下一个 Star — 这对我们意义重大。**
标签:AI安全分析, AI风险缓解, CI/CD安全, CISA项目, DevSecOps, Docker, GPT, Llama, Poutine, Python, Semgrep, TCP SYN 扫描, Web UI, Web截图, WordPress安全扫描, Zizmor, 上游代理, 互联网扫描, 仪表盘, 可视化仪表盘, 多包管理, 大语言模型(LLM), 安全合规, 安全态势感知, 安全策略执行, 安全趋势追踪, 安全防御评估, 容器安全, 开发运维安全, 无后门, 暗黑模式, 漏洞管理, 漏洞聚合, 离线可用, 网络代理, 请求拦截, 软件成分分析(SCA), 逆向工具, 静态应用安全测试(SAST)