AWS-User-Group-Triangulo-Mineiro/ai-security-analyst

GitHub: AWS-User-Group-Triangulo-Mineiro/ai-security-analyst

结合 AWS CloudTrail 与 Amazon Bedrock 大语言模型,将云审计事件转化为智能化安全分析报告的 PoC 项目。

Stars: 1 | Forks: 0

# 🔐 AI 安全分析师 — CloudTrail + Bedrock
[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/) [![Terraform](https://img.shields.io/badge/terraform-1.6+-623CE4.svg)](https://www.terraform.io/) [![AWS](https://img.shields.io/badge/aws-cloudtrail%20|%20bedrock-FF9900.svg)](https://aws.amazon.com/) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) **基于 AI 的 AWS 安全分析** — CloudTrail + Amazon Bedrock + Claude 3.5 Sonnet [🚀 快速开始](#-início-rápido) • [📖 文档](#-documentação) • [⚙️ 架构](#-arquitetura) • [💡 演示](#-demo)
## 📌 关于 这是一个教育性质的 PoC,它会查询最近的 **AWS CloudTrail** 事件,使用**确定性规则**进行风险分级,并利用 **Amazon Bedrock** (Claude 3.5 Sonnet) 生成结构化分析和安全建议。 ### ✨ 功能 - ✅ 实时查询 CloudTrail 事件 - ✅ 自动按严重程度分级(CRITICAL, HIGH, MEDIUM, LOW) - ✅ 使用 Claude 3.5 Sonnet 进行智能分析 - ✅ 在分析前对敏感数据进行脱敏处理 - ✅ 生成 JSON 和 Markdown 格式的报告 - ✅ 视觉效果更佳的 CLI 界面 - ✅ 在 Bedrock 不可用时自动降级处理 ## 🏗️ 架构 ``` ┌─────────────────┐ │ AWS CloudTrail │ ◄─── Captura eventos └────────┬────────┘ │ ▼ (LookupEvents API + Boto3) ┌─────────────────────────────────────┐ │ 1️⃣ CloudTrailService │ ◄─── Busca eventos ├─────────────────────────────────────┤ │ 2️⃣ RiskEngine │ ◄─── Classifica severidade ├─────────────────────────────────────┤ │ 3️⃣ BedrockService (Claude 3.5) │ ◄─── Análise com IA ├─────────────────────────────────────┤ │ 4️⃣ ReportService │ ◄─── Salva JSON + Markdown └────┬────────────────────────────────┘ │ ▼ 📄 Relatórios ├─ 20260728-103045-...json └─ 20260728-103045-...md ``` ### 🔒 基础设施 (Terraform) | 组件 | 描述 | |-----------|-----------| | 🪣 S3 Bucket | 私有、已版本控制、已加密 | | 🛤️ CloudTrail | 多区域并开启完整性校验 | | 🔐 IAM Policy | 最小权限原则 (least-privilege) | ## 📋 前置条件 | 要求 | 版本 | |-----------|--------| | 🐍 Python | ≥ 3.11 | | 🏗️ Terraform | ≥ 1.6 | | ☁️ AWS CLI | 已配置 | | 🔑 AWS Credentials | 有效 | | 🤖 Bedrock Access | 兼容的模型 | ### 所需权限 - ✅ `s3:CreateBucket`, `s3:GetBucketVersioning` - ✅ `cloudtrail:CreateTrail`, `cloudtrail:LookupEvents` - ✅ `bedrock:InvokeModel` - ✅ `iam:CreatePolicy`, `iam:AttachUserPolicy` ## 🚀 快速开始 ### 1️⃣ 配置基础设施 ``` cd terraform cp terraform.tfvars.example terraform.tfvars terraform init terraform plan terraform apply ``` **获取输出:** ``` terraform output ``` ### 2️⃣ 准备应用
🐧 Linux/macOS ``` python -m venv .venv source .venv/bin/activate pip install -r requirements.txt cp .env.example .env ```
🪟 Windows PowerShell ``` python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt Copy-Item .env.example .env ```
### 3️⃣ 配置环境变量 将 Terraform 的输出填入 `.env`: ``` AWS_REGION=us-east-1 AWS_PROFILE=default BEDROCK_MODEL_ID=anthropic.claude-3-5-sonnet-20241022-v2:0 MAX_EVENTS=20 REPORTS_DIR=reports ``` ### 4️⃣ 运行演示 ``` # 交互式完整可视化 Demo python -m src.demo # 或 列出 events python -m src.main list --limit 10 # 或 分析特定 event python -m src.main analyze --index 0 # 或 使用模拟 event(无 AWS) python -m src.main sample ``` ## 💡 演示 ### 完整流程(5秒) ``` ⏳ [1/5] CloudTrail → Busca eventos recentes ⏳ [2/5] RiskEngine → Classifica por severidade ⏳ [3/5] Bedrock → Analisa com Claude ⏳ [4/5] Relatório → Salva JSON + Markdown ✅ [5/5] Resumo → Exibe resultado formatado ``` ### 查看生成的报告 ``` # 交互式菜单 python read_reports.py # 或 列出 python read_reports.py list # 或 按严重程度过滤 python read_reports.py filter HIGH # 或 搜索 event python read_reports.py search CreateAccessKey # 或 显示报告 python read_reports.py show 20260728-103045-CreateAccessKey-abc.json ``` ## 📖 文档 | 文件 | 描述 | |---------|-----------| | [ARCHITECTURE.md](ARCHITECTURE.md) | 详细的技术概述 | | [SECURITY.md](SECURITY.md) | 已实施的安全实践 | | [DEMO_PALESTRA.md](DEMO_PALESTRA.md) | 用于演示的可视化流程 | | [DEMO_FLUXO.md](DEMO_FLUXO.md) | 逐步执行参考 | ## 📁 项目结构 ``` . ├── src/ │ ├── main.py # CLI principal │ ├── demo.py # Demo interativa │ ├── aws_clients.py # Configuração AWS │ ├── cloudtrail_service.py # Consulta CloudTrail │ ├── risk_engine.py # Classificação de risco │ ├── bedrock_service.py # Integração Bedrock │ ├── report_service.py # Geração de relatórios │ ├── report_reader.py # Leitor de relatórios │ ├── sanitizer.py # Sanitização de dados │ ├── models.py # Modelos Pydantic │ └── config.py # Configurações ├── tests/ │ ├── test_risk_engine.py │ └── test_sanitizer.py ├── terraform/ # Infraestrutura │ ├── main.tf │ ├── variables.tf │ └── outputs.tf ├── reports/ # Relatórios gerados ├── read_reports.py # Script leitor (standalone) ├── requirements.txt # Dependências └── README.md # Este arquivo ``` ## 🎯 使用示例 ### 分析特定事件 ``` python -m src.main analyze --event-name CreateAccessKey ``` **输出:** JSON + Markdown 报告 ### 按严重程度过滤 ``` python read_reports.py filter CRITICAL ``` **输出:** 严重事故表 ### 离线模式(无 AWS) ``` python -m src.main sample ``` **使用:** 本地虚构事件 ## 🔐 安全 - 🛡️ 在发送给 Bedrock 之前对敏感数据进行脱敏 - 🔒 静态加密 (S3) - 🔐 安全传输 (HTTPS) - 📋 最小权限 IAM Policy - ✅ 带有完整性校验的日志 ## ⚙️ 高级配置 ### 更改 Bedrock 模型 ``` export BEDROCK_MODEL_ID=anthropic.claude-3-sonnet-20240229-v1:0 python -m src.demo ``` ### 提高事件限制 ``` export MAX_EVENTS=50 python -m src.main list --limit 50 ``` ### 自定义报告目录 ``` export REPORTS_DIR=/path/to/reports python -m src.main analyze --index 0 ``` ## 🧪 测试 ``` # 运行测试 pytest tests/ # 带有覆盖率 pytest --cov=src tests/ ``` ## 🧹 清理与销毁 ### 销毁基础设施 使用完毕后,请清理创建的资源: ``` cd terraform terraform destroy ``` ### ⚠️ 错误:"Cannot delete a policy attached to entities" 如果在执行 `destroy` 时遇到此错误: ``` Error: deleting IAM Policy: operation error IAM: DeletePolicy, DeleteConflict: Cannot delete a policy attached to entities. ``` **逐步解决方案:** 1️⃣ **手动分离 policy:** ``` # 查找 Policy 的 ARN terraform show | grep execution_policy_arn # 或 从 output 获取 aws iam list-policies --scope Local --query 'Policies[?PolicyName==`ai-security-analyst-execution`].Arn' --output text ``` 2️⃣ **从所有用户/角色中移除该 policy:** ``` # 列出已附加该 Policy 的实体 aws iam list-entities-for-policy \ --policy-arn arn:aws:iam:::policy/ai-security-analyst-execution # 从用户分离 aws iam detach-user-policy \ --user-name \ --policy-arn arn:aws:iam:::policy/ai-security-analyst-execution # 从 roles 分离 aws iam detach-role-policy \ --role-name \ --policy-arn arn:aws:iam:::policy/ai-security-analyst-execution ``` 3️⃣ **现在再次执行:** ``` terraform destroy ``` ### 替代方案:强制删除(不推荐) 如果您希望快速移除所有内容: ``` # 移除 Terraform local state cd terraform rm -rf .terraform.lock.hcl terraform.tfstate* # 通过 AWS CLI 手动清理 aws s3 rb s3://ai-security-analyst-- --force aws cloudtrail delete-trail --name ai-security-analyst-trail aws iam delete-policy --policy-arn arn:aws:iam:::policy/ai-security-analyst-execution ``` ### ✅ 检查清理状态 ``` # 确认 S3 已被删除 aws s3 ls | grep ai-security-analyst # 确认 CloudTrail 已被删除 aws cloudtrail list-trails # 确认 Policy 已被删除 aws iam list-policies --scope Local | grep ai-security-analyst ``` ## 📝 许可证 基于 MIT 许可证分发。详情请参阅 `LICENSE`。 ## 💬 支持 有疑问?请提交一个 [Issue](../../issues) 或查阅 [文档](ARCHITECTURE.md)。
**用 ❤️ 为 AWS 安全而开发** ⭐ 如果对您有帮助,请考虑给仓库点个星标!
aws iam list-policies --scope Local --query 'Policies[?PolicyName==`ai-security-analyst-execution`].Arn' --output text arn:aws:iam:::policy/ai-security-analyst-execution aws iam detach-user-policy --user-name cli-admin --policy-arn arn:aws:iam:::policy/ai-security-analyst-execution
标签:AWS, DPI, 生成式AI, 索引, 逆向工具