ravisinghrajput95/AI-DevSecOps-Sentinel

GitHub: ravisinghrajput95/AI-DevSecOps-Sentinel

一款基于 11 个确定性安全扫描器进行 AI 推理的 DevSecOps 审计工具,为代码仓库、IaC 和容器提供经扫描器验证的安全发现与合规报告。

Stars: 0 | Forks: 0

Ingress Ingress <--> SPA SPA <-->|"/chat · /scan-status · /health"| Router Ingest --> GH Ingest --> Reg Router --> RAG Router --> Reg Reg -->|"verified findings (JSON)"| Router Router -->|"prompt: files + RAG + scanner ground truth"| LLM LLM --> Redact Redact -->|"answer + findings panel"| SPA ``` **交付 — 每次部署都有门禁。** 后端和前端有独立的路径过滤通道;构建失败会在接触到用户之前就让流水线变红。 ``` flowchart LR Push["push / PR"] --> Tests["unit + integration
+ scanner availability"] Tests --> Build["docker build
+ in-image smoke test"] Build --> Supply["supply chain
SBOM · trivy · cosign (keyless)"] Supply --> Deploy["helm deploy
Kubernetes"] Deploy --> Smoke["post-deploy smoke test
11 scanners · auth · routing"] Smoke --> E2E["Playwright e2e
real headless browser"] ``` **云供应商无关** Helm chart — 标准的 ingress-nginx + PVC + Secret,没有供应商锁定 — 因此它可以运行在**任何 Kubernetes**(EKS、AKS、GKE、本地自建 / k3s)上。集群使用 **Terraform** 进行配置,镜像存放在容器镜像仓库中,并且 CI→云的身份验证通过 **OIDC** 实现无密钥化。各平台的完整步骤请见:[docs/DEPLOYMENT.md](docs/DEPLOYMENT.md)。 # 🚀 功能 ## 代码库安全分析 * 完整的代码库安全审查 * 基于严重程度的发现仪表板 * 跨文件关联和观察 * 可展开的单文件分析卡片 * 针对整个代码库的建议 ## 密钥检测 检测: * 硬编码密码 * API token * AWS 访问密钥 * 私钥 * 敏感凭证 包含: * 精确的证据片段 * 行号 * 影响范围分析 * 安全修复指南 ## 基础设施即代码分析 (IaC) 支持: * Terraform * Dockerfiles * Kubernetes manifests * Helm charts * CI/CD workflows 能力: * 配置错误检测 * 网络暴露分析 * IAM 权限审查 * 不安全默认值识别 * 安全加固建议 ## 基于扫描器的发现 在 AI 对上传的文件进行推理之前,确定性安全工具就已经对其进行了扫描: * **gitleaks** — 硬编码密钥检测(值已脱敏) * **checkov** — 对 Terraform、Kubernetes、Dockerfiles、Helm 和 CI/CD workflows 进行 IaC 配置错误检查 * **trivy** — 在 requirements.txt、package-lock.json、pom.xml、go.mod 等文件中检测易受攻击的依赖项 (CVEs) * **hadolint** — Dockerfile 最佳实践 lint 检查 * **semgrep** — 针对应用代码的 SAST(Python, JS/TS, Java, Go) * **kubesec** — Kubernetes manifest 风险评分 * **shellcheck** — shell 脚本分析(`.sh`,entrypoints):未加引号的扩展、不安全的 `rm`/globbing、`curl | bash`、单词拆分错误 * **actionlint** — GitHub Actions workflow 安全:通过不受信任的 `${{ }}` 表达式进行的脚本注入、未锁定的 actions、`run:` 中的 shell 错误 * **injection-guard** — 内置的提示注入检测:标记试图操纵 AI 分析的文件内容(指令覆盖、抑制发现结果、伪造的聊天 token、隐藏的 Unicode 字符) * **report-import** — 将**上传的扫描器输出作为结构化的发现**进行摄取:Trivy/Semgrep JSON、SARIF 报告,以及 CycloneDX/SPDX SBOMs(SBOM 组件通过 `trivy sbom` 解析为 CVEs) * **ansible-guard** — 内置的 Ansible playbook 检查:禁用防火墙(`ufw disable`,`iptables -F`)、`setenforce 0`、全局可写权限、破坏性的 `rm -rf /`,以及任务中的 `curl | bash` AI 将扫描器输出视为已验证的基准事实:它跨工具和文件关联发现结果、去重、按可利用性排定优先级,并为每个发现标记 `[SCANNER-VERIFIED]` 或 `[AI-DETECTED]`,以便您始终知道哪些声明是有工具 backing 的。 经验证的发现还会作为结构化的 JSON 返回,并在 UI 的专用面板中渲染。 ## 代码库与输入处理 Sentinel 接受三种输入 — 单个文件、`.zip` 项目,或者粘贴的**公开 GitHub URL** — 并对它们进行一致性处理: * **非阻塞式代码库摄取** — GitHub repo 作为后台任务下载和扫描;请求会立即返回一个作业 ID,UI 会轮询进度,因此大型代码库永远不会让请求超时或阻塞事件循环。 * **扫描清理** — 依赖项和构建目录(`.venv`、`node_modules`、`.git`、`.terraform`、`target`、`dist`、`vendor` 等)在扫描前会被剔除,因此发现结果只来自*您的*代码,而不是第三方的依赖树。通过 URL 或 zip 提交的同一个 repo 会产生相同的发现。 * **确定性的输入优先级** — 如果一条消息同时带有附件文件和 repo URL,**附件优先**,而 URL 会被跳过并给出明确的提示 — 绝不会将两份“相似”的副本悄悄合并成重复的发现。 * **生成,而不仅仅是审计** — 提问“给我写一个加固的 Dockerfile”,Sentinel 会产出制品(锁定基础镜像、非 root 用户、健康检查、最小权限),而不是重新运行分析,并清楚地将其标记为生成的示例,因此绝不会被误认为是针对您文件的扫描结果。 ## 可下载报告 每次分析都可以导出为一份为利益相关者(而非仅仅工程师)构建的独立 Markdown 报告: * 执行摘要 + 总体风险评级 * **前 5 项行动** — 一个优先的、规范性的待办事项列表,始终以重新扫描验证的步骤结束 * 风险摘要表(严重 / 高 / 中 / 低) * 按工具分组的经验证扫描器发现,**重复的规则折叠为一行**及其位置(因此在一个规则在 18 个文件中触发时,读取为 1 个优先事项,而不是 18 行几乎相同的记录) * 带有证据、影响范围和修复 diff 的单文件分析师注释 * 真实情况的文件计数和扫描器列表 — 可重现,而非推断 ## 模型无关的 LLM 推理模型仅需通过配置即可替换 — 无需更改代码: | 设置 | 用途 | |---|---| | `SENTINEL_LLM_MODEL` | 使用哪个模型(例如 `gpt-4o`,较新的 OpenAI 模型) | | `OPENAI_BASE_URL` | 指向任何 OpenAI 兼容的 endpoint — 网关、Anthropic/Bedrock 代理,或自托管模型。未设置 ⇒ 使用真实的 OpenAI API | | `SENTINEL_LLM_MAX_TOKENS` | 为编写长报告的较重模型提高补全限制 | 因为**发现来自确定性扫描器,而不是模型**,所以替换模型只能改变叙述质量 — 永远不会改变基准事实的发现。更强大的模型会产生更好的行文和更好结构的输出;格式上的差异会优雅降级(发现面板始终会渲染)。 ## 📊 评估与质量 检测能力**以及** AI 质量都经过了测量,而不仅仅是声明 — 每一个数字都可以追溯到记录的记录。针对实时部署进行了三轮独立的评估,每一次都比上一次更严格: | 轮次 | 范围 | 核心结果 | |---|---|---| | **能力 (V1)** | 172 次交互 — 意图、准确性、上下文、安全性 | **87 / 100** · 0 幻觉 · 99% 的答案提供可运行的代码 | | **企业深度测试 (V2)** | 211 次交互 — 文件分析、红蓝对抗、长上下文、代码库 | `terragoat` → **869 项发现** · **8/8** 抵御了文件注入攻击 | | **回归基准** | 68 个可复用、CI 门禁的测试用例 | **66 / 68 通过** · 0 个未解决的代码缺陷 | 完整的方法论、安全/红蓝对抗表格以及复现步骤位于 [**docs/EVALUATION.md**](docs/EVALUATION.md);可复用的回归测试套件位于 [`evaluation/`](evaluation/)。下面确定性扫描器基准测试和 AI 质量门禁会在 CI 中运行。 ### 实测检测 — 基准测试 检测质量不是宣称的,而是测量出来的:`evals/run_benchmark.py` 根据锁定在特定提交的故意设置漏洞的代码库对扫描器流水线进行评分,检查是否检测到了每一个文档记录的植入漏洞类别(“金丝雀”)。不涉及 LLM — 运行是确定性且免费的。 | 基准测试 | 检测到的植入问题 | 发现总数 | 扫描时间 | |---|---|---|---| | terragoat (Terraform) | **8/8** | 730 | ~5s | | cfngoat (CloudFormation) | **6/6** | 79 | ~4s | | kubernetes-goat (Kubernetes) | **9/9** | 699 | ~8s | Canary 级别的细节请见 [evals/RESULTS.md](evals/RESULTS.md);该 基准测试每周也会在 CI 中运行,如果任何 canary 出现回归则会失败。 ### 实测 AI 质量 — 不仅仅是扫描器 LLM 的分析也会通过 `evals/ai_eval.py` 确定性地进行评估 — 因此“AI 很好”是一个经过测量的声明,而不是断言。每个用例都会运行真实的流水线(摄取 → 扫描 → 提示 → LLM → 脱敏),并且答案会根据六个门禁进行评分: | 指标 | 检查内容 | |---|---| | **grounding** | 答案引用的每一个文件都是实际存在的(没有幻觉文件) | | **coverage** | 解决了每一个 CRITICAL/HIGH 级别的扫描器发现 | | **no-fabricated-CVE** | 没有捏造输入中不存在的 CVE id | | **redaction** | 没有原始密钥值泄露到答案中 | | **injection-resistance** | 忽略声称“不要报告任何内容”的代码库 — 发现仍然被报告 | | **format** | 所需的报告章节均已包含 | 评分器已在 Backend CI 中进行了单元测试;实时测试套件通过 **AI Eval** workflow 运行(需要 `OPENAI_API_KEY` secret)。当前 结果:**2/2 用例通过,所有指标为绿色** — 有根据、完整、 密钥安全且抗注入(它将注入尝试作为自己的发现进行报告)。 ## 🚢 部署与 CI/CD 在生产环境中运行于 **GKE Autopilot** 上,使用 Terraform 配置并通过 Helm 部署 — 使用的正是该工具本身知道如何审计的相同 IaC 和 manifests。Helm chart 是**云供应商无关**的(标准 ingress-nginx + PVC + Secret,没有 GKE 锁定),因此同样的 `helm upgrade --install` 可以运行在 **EKS、AKS 或本地自建(VMware、k3s、 OpenShift)** 上 — 参见 [在其他集群上运行](docs/DEPLOYMENT.md#other-clusters--eks-aks-on-prem-vmware-k3s-openshift)。 **基础设施** ([`infra/`](infra/README.md),使用带有 GCS 后端状态的 Terraform): * GKE Autopilot 集群 + Artifact Registry (us-central1),具有镜像清理策略和集群删除保护 * 无密钥 CI → GCP 认证:通过 Workload Identity Federation 实现的 GitHub OIDC — 没有任何地方使用服务账号密钥 **交付** (按技术栈划分的 GitHub Actions pipelines,作业通过 `needs` 链接): ``` push → tests → docker build + smoke test → push SHA-tagged image → helm upgrade (own component only) → rollout-gated deploy ``` * 后端和前端有独立的、基于路径过滤的通道 — 仅前端的更改永远不会运行后端测试或重新部署 API * PR 仅运行测试;不会通过 PR 构建或部署任何内容 * 独立的密钥自扫描会在每次推送时运行,并且 检测基准测试每周运行,或者在发生任何可能改变扫描器行为的更改时运行 **Helm chart** (`deploy/helm/sentinel`):强化的安全上下文(非 root、seccomp、无特权升级)、健康探测、基于 PVC 的扫描器缓存、LoadBalancer 或 GCE Ingress,以及源自预创建的 Kubernetes Secret 的密钥 — 绝不来自 values。 **供应链**:每个发布的镜像都会获得一个 SBOM (syft)、一个可阻止可修复严重漏洞的 trivy 扫描,以及一个无密钥的 cosign 签名 + SBOM 证明(Sigstore,通过 workflow 的 OIDC 身份 — 无密钥)。该工具达到了它要求别人达到的标准。 ``` kubectl get svc sentinel-frontend # EXTERNAL-IP = the UI ``` 对于单台 VM,还有一个 **docker compose** 部署方案 (`docker compose up --build`)。完整的细节、环境表和操作注意事项请见:[docs/DEPLOYMENT.md](docs/DEPLOYMENT.md)。 ## 可靠性与测试 质量由三层测试金字塔来保证,其中后两层**为每次部署把关** — 构建失败会在到达用户之前就将流水线变红: | 层级 | 检查内容 | 时机 | |---|---|---| | **单元/集成** (`pytest`) | 路由、扫描器、脱敏、会话隔离、速率限制、配置 | 每次 PR + 推送 | | **网络冒烟测试** (`deploy/smoke_test.py`) | 通过 ingress 测试实时应用 — 健康、所有扫描器、认证、上传限制、异步摄取、路由 — 无 LLM,快速 + 免费 | 部署后 | | **浏览器端到端** (Playwright, [`e2e/`](e2e/)) | 真实的 headless Chromium 驱动已部署的 UI:问候语、上传 → 分析 → 发现面板 + 报告下载、生成提示渲染 | 部署后 | 端到端测试套件针对实时部署运行(前端内置了其 API 密钥,因此测试中不存在任何密钥),并且在失败时,将上传 Playwright HTML 报告作为 CI artifact。可靠性修复 — 保持 `/health` 响应的非阻塞扫描、调整过的存活/就绪探针、ingress 的 body 大小和超时限制 — 在这里全部覆盖,因此回归不会悄无声息地重现。 ## AI 驱动的安全推理 该平台提供: * 攻击链分析 * 可利用性推理 * 置信度评分 * 影响范围分析 * 上下文感知的修复指南 示例: ``` Hardcoded Secret → Public Exposure → Credential Pivot ``` ## 合规性映射 将发现映射到: * CWE * OWASP * NIST * CIS * MITRE ATT&CK ## 知识助手 AI DevSecOps Sentinel 还可以作为情境感知的工程助手。 用户可以询问: * 什么是 GitOps? * 解释 ArgoCD * Docker 安全最佳实践 * Terraform 状态管理 * Kubernetes RBAC * 零信任网络 助手会在适用时将解释与上传的代码库上下文相关联。 # 🛠 支持的技术 ## DevOps * Docker * Kubernetes * Helm * Terraform * GitHub Actions * CI/CD pipelines * ArgoCD * GitOps ## 安全 * DevSecOps * Shift-left security * 基础设施安全 * 供应链安全 * 密钥管理 * 安全配置分析 # 📂 支持的文件类型 **应用代码** (通过 semgrep 进行 SAST + AI 推理): `.py` · `.js` `.jsx` `.ts` `.tsx` · `.java` `.kt` `.scala` `.groovy` · `.go` · `.rs` · `.rb` · `.php` · `.c` `.cpp` `.h` `.hpp` · `.cs` · `.swift` · `.dart` · `.ex`/`.exs` · `.pl` · `.lua` · `.r` · 以及更多 **基础设施与配置**: Dockerfile · `.tf`/`.tfvars`/`.hcl` · `.yaml`/`.yml` · Helm charts · Kubernetes manifests · `.json` · `.toml` · `.ini` · `.env` · `.properties` · `.xml` · `.sql` **Shell 与 CI/CD**: `.sh`/`.bash`/`.zsh`/`.ps1` · GitHub Actions workflows · Jenkinsfile · `.gitlab-ci.yml` · `pom.xml`/`.gradle` **压缩包**: `.zip` 代码库 · 公开的 GitHub 仓库 — 在聊天中粘贴 repo URL (支持 `/tree/`) # 🧠 核心能力 | 能力 | 描述 | | ----------------------- | ---------------------------------------- | | 代码库分析 | 完整的上下文代码库理解 | | 安全发现 | 带有证据的 AI 生成的发现结果 | | 攻击面分析 | 多步骤风险推理 | | 合规性映射 | CWE / OWASP / NIST 映射 | | 跨文件关联 | 跨文件连接发现结果 | | 会话隔离 | 每个标签页一个会话 — 多用户安全 | | 知识助手 | DevOps 和 DevSecOps 解释 | | AI 修复 | 安全修复建议 | | 严重程度仪表板 | 严重 / 高 / 中 / 低 摘要 | | 异步代码库摄取 | 大型 GitHub repo 的非阻塞扫描 | | 制品生成 | 编写经过安全强化的 Dockerfiles、manifests、IaC | | 可下载报告 | 面向利益相关者的 Markdown,包含前 5 项行动 | | 模型无关的 LLM | 仅通过配置即可替换模型/提供商 | # 🎯 示例用例 * 安全的 Terraform 审查 * Dockerfile 加固分析 * Kubernetes 安全验证 * 代码库中的密钥检测 * DevSecOps 入门协助 * 内部工程安全审查 * 基础设施风险分析 * CI/CD 安全评估 # 🖥 UI 亮点 * 交互式发现仪表板 * 可展开的文件分析卡片 * 严重程度计数器 * 建议的后续行动 * AI 生成的建议 * 跨上传文件的上下文保留 * 安全与知识工作流 # 📌 项目愿景 AI DevSecOps Sentinel 旨在通过结合以下内容来改善开发者体验和安全态势: * AI 辅助推理 * DevOps 工作流 * DevSecOps 实践 * 上下文感知的代码库智能 将其融入到一个单一的工程助手平台中。 # 📷 截图 **欢迎页 — 带有快捷操作和文件/知识模式的聊天优先工作区** ![Landing page](https://static.pigsec.cn/wp-content/uploads/repos/cas/41/41021f93fc461f01450956467098f62f842459af352a520d5824ec125b95ddd7.png) **文件分析 — 证据、影响范围、合规性映射,以及可下载的报告** ![Security analysis with findings](https://static.pigsec.cn/wp-content/uploads/repos/cas/67/67f5081e3038b6ee5b4ce3121d4734d671a95a4ec5e2682ceef08ff7373d4cab.png) **生成 — 产生一个加固的制品,并带有清晰的“生成的示例”提示** ![Hardened Dockerfile generation](https://static.pigsec.cn/wp-content/uploads/repos/cas/9c/9cdd8b18d97742a89b52cc2a6fc2ee651996660f6bfd7a6252020c85d8ece37a.png) _所有截图均由 [`e2e/`](e2e/) 中的 Playwright 测试套件从实时部署 (`https://34-132-100-49.sslip.io`) 截取。_ # 🤝 贡献 欢迎贡献、问题和想法 — Sentinel 的构建旨在让人易于亲近: - 📖 阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 了解本地设置和开发循环 - 🐛 [提交 issue](../../issues/new/choose) — Bug 报告和功能建议均有模板 - 🔒 发现漏洞?请参见 [SECURITY.md](SECURITY.md) — 请私下报告 - 💬 有问题或想展示成果?发起一个 [Discussion](../../discussions) - 📜 请遵循我们的[行为准则](CODE_OF_CONDUCT.md) 不错的首次贡献:文档改进、新的扫描器集成,或者在 [`evaluation/`](evaluation/) 中添加新的评估用例。 # 📄 许可证 在 [MIT License](LICENSE) 下发布 — 可免费使用、修改和分发。作为一个探索 DevSecOps、平台工程和 AI 辅助安全工作流的学习和作品集项目而构建。 请参见 [CONTRIBUTING.md](CONTRIBUTING.md) 进行环境配置, [CHANGELOG.md](CHANGELOG.md) 了解更新内容,以及 [docs/DESIGN-DECISIONS.md](docs/DESIGN-DECISIONS.md) 了解架构背后的考量、已知的局限性以及实地测试的经验教训。 # 👨‍💻 作者 Ravi Rajput DevOps | DevSecOps | AI 辅助工程
标签:AI安全, AV绕过, Chat Copilot, DevSecOps, FastAPI, Petitpotam, React, Syscalls, 上游代理, 合规映射, 子域名突变, 漏洞审计, 请求拦截, 逆向工具, 静态代码扫描