dsakthiprasad/aws-security-auditor

GitHub: dsakthiprasad/aws-security-auditor

一款 AI 驱动的 AWS 安全审计平台,自动检测云资源配置错误并生成 Terraform 修复代码与可视化安全评分报告。

Stars: 0 | Forks: 0

# AI 驱动的 AWS 安全审计器与智能 Terraform 修复 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python 3.12](https://img.shields.io/badge/python-3.12-blue.svg)](https://www.python.org/downloads/) [![React](https://img.shields.io/badge/react-%5E19.0.0-blue)](https://reactjs.org/) [![Docker](https://img.shields.io/badge/docker-%20%20%20%20%20-blue)](https://www.docker.com/) [![GitHub Actions CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/15290a59a5000210.svg)](https://github.com/dsakthiprasad/aws-security-auditor/actions) ## 🚀 在线演示 - **前端:** https://aws-security-auditor.vercel.app/ - **后端 API:** https://aws-security-auditor.onrender.com - **Swagger 文档:** https://aws-security-auditor.onrender.com/docs ## 概述 本项目展示了云安全自动化、基础设施即代码生成、AI 辅助修复以及使用 AWS、FastAPI、React、Docker、Render 和 Vercel 的现代全栈部署。 AI 驱动的 AWS 安全审计器是一款安全扫描和修复工具,用于评估 AWS 账户的常见配置错误,并提供可操作的指导以改善安全态势。该平台会对 S3 存储桶的公共访问、不安全的 security group 规则以及 IAM 安全问题执行自动化检查,然后生成清晰的解释(使用 Google Gemini LLM)、手动修复步骤以及 Terraform 代码,尽可能修复发现的问题。 该审计器采用现代全栈架构构建,结合了 FastAPI(后端)和 React(前端),通过交互式仪表板提供结果,该仪表板具有安全评分、可视化图表和 PDF 导出功能。 ## 功能 ### 核心扫描功能 - **AWS 安全扫描**:对 AWS 账户进行自动化评估,检查内容包括: - 可公开访问的 S3 存储桶 - 不安全的 security group 规则(SSH/RDP 对 0.0.0.0/0 开放,所有流量开放) - IAM 问题(没有 MFA 的用户,过旧的 access key,过度授权的权限) - **AI 驱动的解释**:利用 Google Gemini LLM 为每个发现的问题生成清晰、结合上下文的解释(带有后备的硬编码解释)。 - **Terraform 修复生成**:为受支持的发现类型(S3 公共存储桶、SSH/RDP 开放的 security group、过旧的 IAM access key)创建可直接应用的 Terraform 代码。 - **手动修复指导**:对于无法通过 Terraform 自动化的发现,提供分步的控制台/CLI 说明。 - **安全评分仪表板**:根据发现问题的严重程度计算合规分数(0-100)和风险等级,并通过图表和摘要卡片进行可视化展示。 - **PDF 报告生成**:将仪表板视图导出为 PDF 报告,以便共享和归档。 - **演示模式**:使用模拟数据运行(无需 AWS 凭据),方便进行探索和演示。 - **Docker 支持**:支持容器化的后端和前端,确保部署的一致性。 - **CI/CD 流水线**:GitHub Actions 工作流,负责构建、测试(前端)以及创建 Docker 镜像。 ### 技术特性 - **后端**:FastAPI、SQLAlchemy (SQLite)、Google Gemini API、boto3 - **前端**:React 19、Vite、Tailwind CSS、Axios、Recharts(用于图表)、html2pdf.js(用于 PDF 导出) - **API**:带有 JSON 响应的 RESTful endpoint - **数据库**:用于存储扫描历史记录和结果的 SQLite - **身份验证**:无(适用于受信任的环境;在生产环境中可根据需要添加身份验证) ## 架构 该应用程序采用客户端-服务器架构: ### 后端 (FastAPI) - **API 层**:使用 FastAPI 构建的 RESTful endpoint,旨在实现高性能并自动生成 OpenAPI 文档。 - **服务层**:为每个扫描器(S3、Security Groups、IAM)、AI 解释、Terraform 修复生成和评分提供独立的服务。 - **数据层**:使用 SQLAlchemy ORM 和 SQLite 数据库,用于持久化保存扫描结果和历史记录。 - **AWS 集成**:使用 Boto3 SDK 与 AWS API 进行安全交互(使用默认凭据链)。 - **AI 服务**:集成 Google Gemini(通过 `google-generativeai`)以生成修复说明。 ### 前端 (React) - **UI 框架**:React 19,使用 hooks 进行状态管理。 - **样式**:使用 Tailwind CSS 实现响应式的实用优先设计。 - **数据可视化**:使用 Recharts 构建交互式安全仪表板;使用 html2pdf.js 进行 PDF 导出。 - **状态管理**:使用 React Context 和 hooks(或本地状态)来管理扫描数据和 UI 状态。 - **HTTP 客户端**:使用 Axios 与后端进行高效的 API 通信。 - **构建工具**:使用 Vite 实现快速开发和生产环境构建。 ## 截图 - 仪表板截图(即将推出) - 安全发现截图(即将推出) - AI 修复截图(即将推出) - PDF 报告截图(即将推出) ## 安装说明 ### 前置条件 - Python 3.12 或更高版本 - Node.js 22 或更高版本 - Docker(可选,用于容器化部署) - AWS 账户(用于实时扫描;演示模式使用模拟数据) ### 后端设置 ``` # 克隆仓库 git clone https://github.com/dsakthiprasad/aws-security-auditor.git cd aws-security-auditor # 创建并激活虚拟环境(可选但推荐) python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # 安装依赖 pip install -r requirements.txt # 设置环境变量(参见 Environment Variables 部分) cp .env.example .env # If .env.example exists; otherwise create .env manually # 使用你的配置编辑 .env # 启动开发服务器 uvicorn app.main:app --reload ``` ### 前端设置 ``` # 导航到前端目录 cd frontend # 安装依赖 npm ci # 设置环境变量 cp .env.example .env.local # If .env.example exists; otherwise create .env.local manually # 使用你的配置编辑 .env.local(参见 Environment Variables 部分) # 启动开发服务器 npm run dev ``` ### Docker 部署 ``` # 构建并启动所有服务 docker-compose up --build # 应用程序将可通过以下地址访问: # - Frontend: http://localhost:5173 # - Backend API: http://localhost:8000 # - API Documentation: http://localhost:8000/docs ``` ## 环境变量 ### 后端 (`.env`) ``` # Application Mode DEMO_MODE=false # Set to "true" to enable demo mode (uses simulated data) # AI Service (Google Gemini) GEMINI_API_KEY=your_gemini_api_key_here # Required for AI explanations; omitted falls back to hardcoded text # AWS Credentials(用于实时扫描) # 这些遵循标准 AWS SDK credential chain(环境变量、~/.aws/credentials、IAM role 等) AWS_ACCESS_KEY_ID=your_access_key_here AWS_SECRET_ACCESS_KEY=your_secret_key_here AWS_SESSION_TOKEN=your_session_token_if_applicable # Optional AWS_DEFAULT_REGION=us-east-1 # Default AWS region for scanning ``` ### 前端 (`.env.local`) ``` # API 配置 VITE_API_BASE_URL=http://localhost:8000 # Base URL for backend API (adjust for production) ``` ## 演示模式 该应用程序包含一个功能齐全的演示模式,该模式会模拟 AWS 扫描结果,而无需实际的 AWS 凭据。这非常适合用于探索、展示和测试。 要启用演示模式: 1. 在后端 `.env` 文件中设置 `DEMO_MODE=true` 2. (可选)取消设置或使用虚拟的 AWS 凭据;当演示模式处于活动状态时,扫描器将跳过实时的 AWS 调用 3. 应用程序将为所有扫描器类型生成逼真的样本数据 4. AI 解释和 Terraform 生成功能可作用于这些样本数据 演示模式包括: - 预先填充的所有扫描器类型(S3、Security Groups、IAM)的发现结果 - 逼真的资源命名约定(存储桶名称、security group ID、用户名) - 不同的严重程度级别(严重、高、中、低) - 样本 Terraform 修复代码(如适用) - 为每个发现生成的 AI 解释 ## 文件夹结构 ``` aws-security-auditor/ ├── app/ # FastAPI backend application │ ├── api/ # API route definitions │ │ └── v1/ # Version 1 API endpoints │ │ ├── endpoints/ # Individual endpoint modules │ │ │ ├── health.py # GET /health │ │ │ ├── history.py # GET /history/scans, GET /history/scans/{scan_id} │ │ │ ├── remediation.py # GET /remediate/{scan_id} │ │ │ └── scan.py # POST /scan │ │ ├── core/ # Core configuration (if any) │ │ ├── crud/ # Database CRUD operations │ │ ├── db/ # Database session and model setup │ │ ├── demo/ # Demo data generators (scan, remediation) │ │ ├── models/ # SQLAlchemy database models │ │ ├── prompts/ # Prompt templates for AI explanations │ │ ├── services/ # Business logic (scanners, AI, Terraform, scoring) │ │ │ ├── explanation.py # AI explanations using Google Gemini │ │ │ ├── iam_scanner.py # IAM vulnerability scanner │ │ │ ├── orchestrator.py # Combines results from all scanners │ │ │ ├── remediation.py # Terraform remediation generation │ │ │ ├── scanner.py # S3 public bucket scanner │ │ │ ├── security_group_scanner.py # Security group vulnerability scanner │ │ │ ├── scoring.py # Score calculation │ │ └── templates/ # Jinja2 Terraform templates │ │ └── terraform/ # .j2 files for Terraform generation │ ├── constants.py # Centralized constants for vulnerability types │ └── main.py # FastAPI application entry point ├── frontend/ # React frontend application │ ├── public/ # Static assets (index.html, etc.) │ ├── src/ # Source code │ │ ├── assets/ # Images, icons, logos │ │ ├── components/ # Reusable UI components (ScoreCard, ScannerPanel, etc.) │ │ ├── hooks/ # Custom React hooks (if any) │ │ ├── pages/ # Page components (DashboardPage, etc.) │ │ ├── services/ # API service clients (api.js) │ │ └── App.jsx # Root application component │ ├── package.json # Node.js dependencies and scripts │ ├── tailwind.config.js # Tailwind CSS configuration │ └── vite.config.js # Vite build configuration (with API proxy) ├── docs/ # Documentation (architecture, etc.) ├── docker-compose.yml # Multi-container Docker setup ├── .github/ # GitHub Actions workflows │ └── workflows/ │ └── ci.yml # Continuous Integration workflow ├── requirements.txt # Python dependencies └── README.md # This file ``` ## API Endpoint 所有 API endpoint 都带有 `app/main.py` 中定义的前缀。基础 URL 为 `http://:8000`。 ### 健康检查 - `GET /health` 返回服务状态、模式(演示/实时)和版本。 ### 扫描 - `POST /scan` 启动完整的 AWS 安全扫描(S3、Security Groups、IAM)。 接受与 `ScanRequest` 模型匹配的 JSON body(目前未使用;保留是为了兼容性)。 返回包含扫描 ID、状态、发现数量、安全分数、风险等级、严重程度细分和详细发现的 `ScanResponse`。 ### 历史记录 - `GET /history/scans` 检索分页的历史扫描列表(基本信息)。 查询参数:`skip`(默认为 0),`limit`(默认为 50)。 返回包含 `scan_id`、`status`、`timestamp`、`findings_count`、`security_score`、`risk_level` 的扫描对象数组。 - `GET /history/scans/{scan_id}` 通过扫描 ID 检索特定的扫描,包括所有的发现和严重程度细分。 返回包含发现数组(每个发现包含 `scanner`、`issue_type`、`finding_data` 等)的详细扫描对象。 ### 修复 - `GET /remediate/{scan_id}` 为指定的扫描生成 Terraform 修复、手动指导和 AI 解释。 返回一个包含以下内容的对象: - `remediation.terraform`:渲染后的 Terraform 块数组(文件名、服务、内容) - `remediation.manual_guidance`:手动指导对象数组(finding_id、issue_type、guidance、priority) - `remediation.ai_explanations`:针对每种唯一问题类型的解释数组 - 元数据(总计、generated_at、警告) *在后端运行时,可以在 `/docs` 访问完整的交互式 API 文档。* ## 技术栈 ### 后端 - **语言**:Python 3.12+ - **框架**:FastAPI 0.136.0+ - **数据库**:SQLAlchemy 1.4+ 与 SQLite(开发/生产环境) - **AWS**:Boto3 1.26+(使用默认凭据链) - **AI**:Google Generative AI (`google-generativeai`) 用于解释 - **验证**:通过 Pydantic 模型隐式进行(包含在 FastAPI 中) - **API 文档**:Swagger UI(由 FastAPI 自动生成) - **测试**:(占位符;在 CI 中暂时跳过后端测试) - **容器**:Docker、Docker Compose ### 前端 - **语言**:JavaScript (ES6+) 与 React 19 - **框架**:React 19(使用 hooks 进行状态管理) - **构建工具**:Vite 8+ - **样式**:Tailwind CSS 3.4+ - **状态管理**:React Context 和本地状态(通过 hooks) - **数据获取**:Axios 1.18+ - **数据可视化**: - Recharts 3.8+(用于安全分数和严重程度细分的饼图) - html2pdf.js 0.14+(客户端 PDF 导出) - **图标**:Lucide React - **路由**:React Router DOM 7.18+ - **代码检查**:ESLint - **容器**:Docker、Docker Compose ### DevOps 与基础设施 - **CI/CD**:GitHub Actions (`.github/workflows/ci.yml`) - 后端:安装依赖项,跳过测试(暂时),构建 Docker 镜像 - 前端:安装依赖项,运行 lint,构建生产环境 bundle - Docker:构建后端镜像(不推送到 registry) - **部署**: - 后端:部署在 Render 上 - 前端:部署在 Vercel 上 - **监控**:内置的健康检查 endpoint - **安全**:带有可配置源的 CORS 中间件 ## CI/CD 该项目使用 GitHub Actions 工作流(`.github/workflows/ci.yml`),该工作流在向 `main` 分支执行 push 和 pull request 时运行。该工作流执行以下步骤: 1. 检出代码库 2. 设置 Python 3.12 3. 安装后端依赖项 4. 跳过后端测试(暂时) 5. 设置 Node.js 22 6. 安装前端依赖项(`npm ci`) 7. 构建前端(`npm run build`) 8. 构建后端 Docker 镜像(不进行推送) *注意:目前已特意跳过后端测试。* ## 项目亮点 - FastAPI 后端 - React + Vite 前端 - AWS SDK (boto3) - SQLAlchemy - Google Gemini AI - Terraform 修复生成 - Docker - GitHub Actions CI - Docker Compose - PDF 报告生成(使用 html2pdf.js) ## 未来改进 未来开发可以考虑以下增强功能(目前尚未计划或实施): - **多账户支持**:从单个仪表板扫描和管理多个 AWS 账户。 - **合规框架**:内置对 CIS AWS Foundations、PCI DSS、HIPAA、GDPR 的检查。 - **持续监控**:定期扫描、漂移检测和警报。 - **集成中心**:与 SIEM 工具(Splunk、Elastic)、工单系统(Jira、ServiceNow)和通信平台(Slack、Microsoft Teams)连接。 - **策略即代码**:与 AWS Config Rules 和 GuardDuty 发现结果集成,以实现集中的合规性。 - **自动修复**:通过 CI/CD 流水线(带有审批工作流)一键应用 Terraform 更改。 - **基于角色的访问控制 (RBAC)**:用于团队协作和租户隔离的细粒度权限控制。 - **高级分析**:趋势分析、预测性安全评分以及与行业基准的比较。 - **增强的 AI**:针对 AWS 特定修复的微调模型、多语言支持以及置信度评分。 - **基础设施即代码**:用于部署审计器本身的 Terraform 模块,用于 Kubernetes 的 Helm charts。 - **可观测性**:分布式追踪(Jaeger/OpenTelemetry)、指标(Prometheus)和结构化日志(ELK stack)。 - **移动端访问**:渐进式 Web 应用 (PWA) 支持以及潜在的原生应用。 - **无障碍访问**:符合 WCAG 2.1 AA 标准,实现包容性设计。 ## 许可证 本项目基于 MIT 许可证授权。详情请参阅 LICENSE 文件。
标签:AI大模型, AV绕过, AWS安全, ECS, FastAPI, Terraform, 请求拦截, 逆向工具, 配置核查