dsakthiprasad/aws-security-auditor
GitHub: dsakthiprasad/aws-security-auditor
一款 AI 驱动的 AWS 安全审计平台,自动检测云资源配置错误并生成 Terraform 修复代码与可视化安全评分报告。
Stars: 0 | Forks: 0
# AI 驱动的 AWS 安全审计器与智能 Terraform 修复
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://reactjs.org/)
[](https://www.docker.com/)
[](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, 请求拦截, 逆向工具, 配置核查