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
### 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)。
:policy/ai-security-analyst-execution
aws iam detach-user-policy --user-name cli-admin --policy-arn arn:aws:iam:::policy/ai-security-analyst-execution
[](https://www.python.org/)
[](https://www.terraform.io/)
[](https://aws.amazon.com/)
[](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 ```
**用 ❤️ 为 AWS 安全而开发**
⭐ 如果对您有帮助,请考虑给仓库点个星标!
aws iam list-policies --scope Local --query 'Policies[?PolicyName==`ai-security-analyst-execution`].Arn' --output text
arn:aws:iam::标签:AWS, DPI, 生成式AI, 索引, 逆向工具