tasks.md 5.2 KB

实现计划:CloudShell Scanner

概述

本计划将 CloudShell 扫描器功能分解为可执行的编码任务,包括独立的 Python 扫描脚本、前端上传组件、后端 API 和数据处理服务。

任务

  • [x] 1. 创建 CloudShell 扫描脚本

    • 1.1 创建 cloudshell_scanner.py 基础结构
    • 创建单体 Python 文件,包含命令行参数解析
    • 实现 CloudShellScanner 类的基本框架
    • 添加进度显示和日志输出功能
    • 需求: 1.1, 1.2, 1.7

    • [x] 1.2 实现 VPC 相关服务扫描

    • 实现 VPC、Subnet、Route Table、Internet Gateway 扫描

    • 实现 NAT Gateway、Security Group、VPC Endpoint 扫描

    • 实现 VPC Peering、Customer Gateway、VPN Connection 扫描

    • 需求: 1.5

    • [x] 1.3 实现 EC2 和计算服务扫描

    • 实现 EC2 实例、Elastic IP 扫描

    • 实现 Auto Scaling Group、ELB、Target Group 扫描

    • 实现 Lambda、EKS 扫描

    • 需求: 1.5

    • [x] 1.4 实现数据库和存储服务扫描

    • 实现 RDS、ElastiCache 扫描

    • 实现 S3 Bucket、S3 Event Notification 扫描

    • 需求: 1.5

    • [x] 1.5 实现全局和监控服务扫描

    • 实现 CloudFront、Route53、ACM、WAF 扫描

    • 实现 SNS、CloudWatch、EventBridge、CloudTrail、Config 扫描

    • 需求: 1.5

    • [x] 1.6 实现区域过滤和错误处理

    • 实现区域列表获取和过滤逻辑

    • 实现错误捕获和继续扫描逻辑

    • 实现重试机制(指数退避)

    • 需求: 1.3, 1.4, 1.8

    • [x] 1.7 实现 JSON 导出功能

    • 实现 ScanData 数据结构

    • 实现 JSON 序列化和文件导出

    • 添加元数据字段(account_id, timestamp, regions, services)

    • 需求: 1.6, 2.1, 2.2, 2.3, 2.4

    • [ ]* 1.8 编写属性测试:JSON 往返一致性

    • Property 1: JSON 数据往返一致性

    • 验证: 需求 2.4, 2.5

    • [ ]* 1.9 编写属性测试:服务类型一致性

    • Property 4: 服务类型一致性

    • 验证: 需求 1.5

  • [x] 2. 检查点 - 确保 CloudShell 扫描脚本可用

    • 确保所有测试通过,如有问题请询问用户
  • [x] 3. 扩展后端数据模型

    • 3.1 创建数据库迁移
    • 在 Task 模型中添加 source 字段('credential' 或 'upload')
    • 在 Task 模型中添加 scan_data_path 字段
    • 创建并应用迁移脚本
    • 需求: 4.3

    • [x] 3.2 创建 ScanDataProcessor 服务

    • 创建 backend/app/services/scan_data_processor.py

    • 实现 validate_scan_data 方法

    • 实现 convert_to_scan_result 方法

    • 需求: 4.2, 5.1

    • [ ]* 3.3 编写属性测试:JSON 验证完整性

    • Property 6: JSON 验证完整性

    • 验证: 需求 3.4, 4.2, 6.2

    • [ ]* 3.4 编写属性测试:无效 JSON 错误处理

    • Property 7: 无效 JSON 错误处理

    • 验证: 需求 3.3, 3.5, 4.5

  • [x] 4. 创建后端上传 API

    • 4.1 实现上传 API 端点
    • 创建 POST /api/tasks/upload-scan 端点
    • 实现文件上传处理(最大 50MB)
    • 实现 JSON 数据验证
    • 需求: 4.1, 4.2, 4.5, 4.6

    • [x] 4.2 实现任务创建和 Worker 触发

    • 创建任务记录(source='upload')

    • 保存上传的 JSON 数据

    • 触发 Celery Worker 处理任务

    • 需求: 4.3, 4.4

    • [x] 4.3 创建上传数据处理 Celery 任务

    • 创建 process_uploaded_scan 任务

    • 集成 ScanDataProcessor 和 ReportGenerator

    • 实现任务状态更新和错误处理

    • 需求: 5.1, 5.2, 5.3, 5.5

    • [ ]* 4.4 编写单元测试:上传 API

    • 测试有效数据上传

    • 测试无效数据错误响应

    • 测试文件大小限制

    • 需求: 4.1, 4.5, 4.6

  • [x] 5. 检查点 - 确保后端 API 可用

    • 确保所有测试通过,如有问题请询问用户
  • [x] 6. 创建前端上传组件

    • 6.1 创建 JSON 验证工具
    • 创建 frontend/src/utils/scanDataValidator.ts
    • 实现 ScanData 类型定义
    • 实现 JSON 结构验证函数
    • 需求: 3.3, 3.4

    • [x] 6.2 创建 JsonUploader 组件

    • 创建 frontend/src/components/Upload/JsonUploader.tsx

    • 实现文件拖拽和选择上传

    • 实现上传前验证和错误提示

    • 需求: 3.2, 3.5

    • [x] 6.3 修改任务创建页面

    • 在 Tasks.tsx 中添加数据来源选择

    • 集成 JsonUploader 组件

    • 实现上传模式的表单提交

    • 需求: 3.1, 3.6

    • [ ]* 6.4 编写前端单元测试

    • 测试 JSON 验证函数

    • 测试 JsonUploader 组件

    • 需求: 3.3, 3.4, 3.5

  • [x] 7. 集成和端到端测试

    • 7.1 集成报告生成
    • 确保上传数据能正确生成报告
    • 验证报告格式与凭证扫描一致
    • 需求: 5.1, 5.2, 5.4

    • [ ]* 7.2 编写属性测试:报告生成一致性

    • Property 8: 报告生成一致性

    • 验证: 需求 5.1, 5.2

  • [x] 8. 最终检查点 - 确保所有功能正常

    • 确保所有测试通过,如有问题请询问用户

备注

  • 标记为 * 的任务为可选任务,可以跳过以加快 MVP 开发
  • 每个任务都引用了具体的需求以确保可追溯性
  • 检查点用于确保增量验证
  • 属性测试验证通用正确性属性
  • 单元测试验证特定示例和边界情况