manynames3/driftguard-ai

GitHub: manynames3/driftguard-ai

基于 LangGraph 的 AWS 基础设施漂移修复代理,将漂移事件自动转化为经过验证的 Terraform Pull Request。

Stars: 1 | Forks: 0

# DriftGuard AI DriftGuard AI 将 AWS 基础设施漂移转换为可审查的 Terraform pull request。 它会对漂移事件进行分诊,评估安全和成本影响,生成 Terraform 修复 HCL,使用真实的 Terraform CLI 验证该 HCL,拦截明显的不安全模式,然后打开一个 GitHub PR 或呈现一次预演 PR 预览。 在线落地页: 带有 S3、security group 和 RDS 漂移场景的在线演示界面: ## 适用人群 - 使用 AWS、Terraform 和 GitHub 的平台团队。 - 需要在不跳过审查的前提下实现更快修复的云安全团队。 - 希望将漂移修复作为常规基础设施 pull request 提交的 DevOps 团队。 ## 目前功能 1. 接受纯英文的漂移描述或 JSON AWS 事件。 2. 使用由 LLM 驱动的 LangGraph 工作流来进行分诊、分析影响、修复、验证和自我纠正。 3. 在临时沙箱中运行 `terraform init` 和 `terraform validate`。 4. 针对明显不安全的 Terraform 模式运行内置策略检查。 5. 打开一个 GitHub PR,或者在预演模式下渲染一个 PR 预览。 ## 环境要求 - Python 3.10+ - `PATH` 中包含 Terraform CLI - 当生成的 HCL 需要 provider 插件时,具备运行 `terraform init` 的网络访问权限 - 用于真实运行的 OpenAI 或 Anthropic API key - 用于实时创建 PR 的 GitHub token ## 快速演示 最快的产品演示使用确定性的本地 LLM 响应,并且不会写入 GitHub: ``` python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt python driftguard.py \ --event examples/s3_public_access_drift.json \ --dry-run \ --mock-llm ``` 预期结果:生成一份包含影响分析、Terraform 验证输出、策略检查输出和 GitHub PR body 预览的运行摘要。 CLI 在调用 agent 之前会运行预检。在进行任何实时 API 调用之前,缺失的 Terraform、LLM key、模型配置或 GitHub 设置都会被报告。 ## 真实 LLM 预演 ``` cp .env.example .env # 使用您的 model provider 和 API key 编辑 .env。 python driftguard.py \ --event examples/s3_public_access_drift.json \ --dry-run ``` ## 实时 GitHub PR 运行 ``` python driftguard.py \ --event examples/s3_public_access_drift.json ``` 实时创建 PR 需要: - `GITHUB_TOKEN` - `GITHUB_REPOSITORY` - `GITHUB_BASE_BRANCH` - `GITHUB_TERRAFORM_FILE_PATH` 在生产环境中,请使用最小权限的 GitHub App 安装 token,而不是宽泛的个人访问 token。 ## 环境变量 请参阅 [.env.example](.env.example)。 重要变量: - `DRIFTGUARD_LLM_PROVIDER`:`openai` 或 `anthropic` - `DRIFTGUARD_LLM_MODEL`:已批准的模型名称 - `OPENAI_API_KEY` 或 `ANTHROPIC_API_KEY` - `GITHUB_TOKEN`:具有 branch、contents 和 pull request 权限的 token - `GITHUB_REPOSITORY`:`owner/repo` - `GITHUB_BASE_BRANCH`:默认 branch,通常是 `main` - `GITHUB_TERRAFORM_FILE_PATH`:要在修复 PR 中创建或更新的文件路径 ## 安全模型 DriftGuard 不会自动应用基础设施更改。它生成的是可审查的 PR。 当前的安全控制: - 密钥和账户 ID 在输入给 LLM prompt 之前会被脱敏。 - Terraform 在临时的本地沙箱中进行验证。 - 明显不安全的 Terraform 模式会在创建 PR 之前被拦截。 - 验证和策略失败的结果会被反馈到修复循环中。 - 预演模式会渲染一个 PR 预览,而不会写入 GitHub。 有关安全边界和生产指导,请参阅 [SECURITY.md](SECURITY.md)。 在正式向客户收费之前,生产部署应添加 Checkov、tfsec 或 OPA 策略包。内置的检查是专为 MVP 设计的基本防护措施,并不是一个完整的云安全策略引擎。 ## CLI 用法 ``` python driftguard.py --help ``` 常用选项: - `--event path.json`:加载漂移事件 fixture 或生产环境的 event payload。 - `--issue "description"`:从纯英文的 issue 描述中运行。 - `--dry-run`:仅生成 PR 预览。 - `--mock-llm`:使用确定性的演示响应。 - `--json`:以 JSON 格式打印最终的 graph 状态。 ## 测试 ``` pip install -r requirements-dev.txt pytest ``` 如果未安装 Terraform CLI,依赖 Terraform 的测试将被自动跳过。 ## 演示讲解流程 在向用户或招聘经理展示 DriftGuard 时,请使用以下流程: 1. “这不是一个自动应用机器人。它将漂移转换为可审查的 Terraform PR。” 2. 展示 fixture:`cat examples/s3_public_access_drift.json`。 3. 运行: python driftguard.py \ --event examples/s3_public_access_drift.json \ --dry-run \ --mock-llm 4. 指出影响摘要、Terraform 验证、策略检查和 PR 预览。 5. 以生产环境边界结尾:真实部署应使用 GitHub App 认证、持久化审计日志和更强大的策略扫描器。 ## 销售落地页 静态落地页位于 [site/index.html](site/index.html)。它面向正在评估专注型漂移修复试点的平台和云安全团队。 基于浏览器的演示界面位于 [site/demo.html](site/demo.html)。它包含 S3 公共访问、security group 暴露和 RDS 实例类型漂移场景。默认情况下,它使用确定性的浏览器输出。当配置了 `window.DRIFTGUARD_DEMO_API_URL` 时,它会调用 AWS Lambda 演示后端以进行真实的 Terraform 验证。 可选的 AWS 演示后端位于 [infra/demo-backend](infra/demo-backend) 中。它通过使用 API Gateway HTTP API、Lambda、DynamoDB on-demand、短暂的日志保留、预留并发和可选的 `$5/month` AWS Budget 告警,将闲置成本保持在接近于零的水平。公开运行保持固定场景和 mock-LLM,但在 Lambda 内部的 Terraform 验证是真实的。 ## 前端部署 Cloudflare Pages 前端提供来自 `site/` 的静态文件。 ``` wrangler pages deploy site --project-name driftguard-ai --branch main ``` 部署 AWS 演示后端后,请在 [site/demo-config.js](site/demo-config.js) 中将 `window.DRIFTGUARD_DEMO_API_URL` 设置为 CloudFormation 的 `DemoApiUrl` 输出,然后重新部署前端。如果 API URL 为空或不可用,浏览器演示将回退到确定性的本地模拟。 ## 生产环境边界 该代码库对于技术买家来说是演示就绪的。它尚未成为完整的 SaaS 产品。在广泛收费之前,请添加托管的接入路径、GitHub App 认证、持久化运行历史记录、更强大的策略扫描、部署和监控。
标签:AWS, DPI, ECS, LangGraph, Terraform, 安全规则引擎, 模块化设计, 漏洞利用检测, 自动化修复, 运维, 逆向工具, 配置漂移