# Implementation Plan: AWS Resource Scanner ## Overview 本实现计划将AWS资源扫描报告工具分解为可执行的开发任务。采用前后端分离架构,后端使用Python Flask + Celery,前端使用React + TypeScript + Ant Design。 ## Tasks - [x] 1. 项目初始化和基础架构 - [x] 1.1 创建后端项目结构 - 初始化Flask项目,配置目录结构(app/, config/, migrations/, tests/) - 配置requirements.txt(Flask, SQLAlchemy, Celery, Redis, boto3, python-docx, PyJWT等) - 创建配置文件(开发/测试/生产环境) - _Requirements: 9.1, 9.2_ - [x] 1.2 创建前端项目结构 - 使用Vite创建React + TypeScript项目 - 配置Ant Design和相关依赖 - 设置项目目录结构(components/, pages/, services/, hooks/, types/) - _Requirements: 7.1_ - [x] 1.3 配置数据库和ORM - 创建SQLAlchemy模型基类 - 配置数据库连接(PostgreSQL/SQLite3切换) - 设置Flask-Migrate数据库迁移 - _Requirements: 9.1, 9.2, 9.4_ - [x] 1.4 配置Celery和Redis - 创建Celery应用配置 - 配置Redis作为Broker和Result Backend - 设置任务序列化和超时配置 - _Requirements: 4.1_ - [x] 2. 用户认证模块 - [x] 2.1 实现用户数据模型 - 创建User模型(username, email, password_hash, role) - 实现密码加密存储(bcrypt) - _Requirements: 1.7, 9.3_ - [x] 2.2 实现JWT认证服务 - 创建JWT token生成和验证逻辑 - 实现token过期检查 - 创建认证装饰器 - _Requirements: 1.1, 1.2_ - [x] 2.3 实现认证API端点 - POST /api/auth/login - 用户登录 - POST /api/auth/logout - 用户登出 - GET /api/auth/me - 获取当前用户 - POST /api/auth/refresh - 刷新Token - _Requirements: 1.1, 1.2_ - [ ]* 2.4 编写认证模块属性测试 - **Property 2: JWT Token Validation** - **Validates: Requirements 1.1, 1.2** - [x] 2.5 实现RBAC权限控制 - 创建角色权限装饰器(admin_required, power_user_required) - 实现资源访问控制逻辑 - _Requirements: 1.3, 1.4, 1.5, 1.6_ - [ ]* 2.6 编写RBAC属性测试 - **Property 1: Role-Based Access Control (RBAC)** - **Validates: Requirements 1.3, 1.4, 1.5, 1.6** - [x] 3. 用户管理模块 (Admin) - [x] 3.1 实现用户管理API - GET /api/users - 获取用户列表(分页) - POST /api/users/create - 创建用户 - POST /api/users/update - 更新用户 - POST /api/users/delete - 删除用户 - _Requirements: 1.7_ - [ ]* 3.2 编写用户创建验证属性测试 - **Property 3: User Creation Validation** - **Validates: Requirements 1.7** - [x] 4. AWS凭证管理模块 - [x] 4.1 实现凭证数据模型 - 创建AWSCredential模型 - 创建UserCredential关联模型 - 创建BaseAssumeRoleConfig模型 - 实现敏感数据加密存储 - _Requirements: 2.1, 2.3, 9.3_ - [ ]* 4.2 编写凭证加密属性测试 - **Property 6: Credential Encryption** - **Validates: Requirements 2.3, 9.3** - [x] 4.3 实现凭证管理API - GET /api/credentials - 获取凭证列表(分页,敏感信息脱敏) - POST /api/credentials/create - 创建凭证 - POST /api/credentials/update - 更新凭证 - POST /api/credentials/delete - 删除凭证 - POST /api/credentials/validate - 验证凭证 - _Requirements: 2.1, 2.4, 2.6, 2.7_ - [ ]* 4.4 编写敏感数据脱敏属性测试 - **Property 5: Sensitive Data Masking** - **Validates: Requirements 2.7** - [x] 4.5 实现凭证分配功能 - POST /api/users/assign-credentials - 分配凭证给用户 - 实现凭证分配验证逻辑 - _Requirements: 1.8, 2.5_ - [ ]* 4.6 编写凭证分配属性测试 - **Property 4: Credential Assignment Enforcement** - **Validates: Requirements 1.8, 2.5** - [x] 4.7 实现基础Assume Role配置 - GET /api/credentials/base-role - 获取配置 - POST /api/credentials/base-role - 更新配置 - _Requirements: 2.2_ - [x] 5. Checkpoint - 认证和凭证模块完成 - 确保所有测试通过,如有问题请询问用户 - [x] 6. AWS扫描器模块 - [x] 6.1 实现云厂商扫描器抽象接口 - 创建CloudProviderScanner抽象基类 - 定义get_credentials, list_regions, scan_resources方法 - _Requirements: 10.1, 10.2_ - [x] 6.2 实现AWS凭证获取 - 实现Assume Role凭证获取 - 实现Access Key凭证获取 - _Requirements: 2.2, 2.3_ - [x] 6.3 实现AWS扫描器基础框架 - 创建AWSScanner类继承CloudProviderScanner - 实现并行扫描逻辑(concurrent.futures) - 实现重试机制(指数退避,最多3次) - _Requirements: 4.3, 4.4, 5.5_ - [ ]* 6.4 编写重试机制属性测试 - **Property 13: Retry Mechanism** - **Validates: Requirements 5.5** - [x] 6.5 实现VPC相关资源扫描 - VPC, Subnet, Route Table, Internet Gateway, NAT Gateway - Security Group, VPC Endpoint, VPC Peering - Customer Gateway, Virtual Private Gateway, VPN Connection - _Requirements: 5.1_ - [x] 6.6 实现EC2相关资源扫描 - EC2 Instances (含EBS, AMI信息) - Elastic IPs - _Requirements: 5.1_ - [x] 6.7 实现Auto Scaling和ELB扫描 - Auto Scaling Groups (含Launch Template) - Load Balancers (ALB, NLB, CLB) - Target Groups - _Requirements: 5.1_ - [x] 6.8 实现数据库服务扫描 - RDS DB Instances - ElastiCache Clusters - _Requirements: 5.1_ - [x] 6.9 实现计算和存储服务扫描 - EKS Clusters - Lambda Functions - S3 Buckets, S3 Event Notifications - _Requirements: 5.1_ - [x] 6.10 实现全局服务扫描 - CloudFront Distributions - Route 53 Hosted Zones - ACM Certificates - WAF Web ACLs - _Requirements: 5.1, 5.2_ - [ ]* 6.11 编写全局资源扫描属性测试 - **Property 8: Global Resource Scanning** - **Validates: Requirements 3.2, 5.2** - [x] 6.12 实现监控和管理服务扫描 - SNS Topics - CloudWatch Log Groups - EventBridge Rules - CloudTrail Trails - Config Recorders - _Requirements: 5.1_ - [ ]* 6.13 编写资源属性提取属性测试 - **Property 14: Resource Attribute Extraction** - **Validates: Requirements 5.4** - [ ]* 6.14 编写区域过滤属性测试 - **Property 9: Regional Resource Filtering** - **Validates: Requirements 5.3** - [ ]* 6.15 编写多账号资源标识属性测试 - **Property 10: Multi-Account Resource Identification** - **Validates: Requirements 3.3, 5.7** - [x] 7. Checkpoint - 扫描器模块完成 - 确保所有测试通过,如有问题请询问用户 - [x] 8. 报告生成模块 - [x] 8.1 实现Word模板处理 - 加载sample-reports模板文件 - 解析模板结构和占位符 - _Requirements: 6.1_ - [x] 8.2 实现占位符替换 - 替换项目元数据占位符(Client Name, Project Name等) - 替换日期和版本信息 - _Requirements: 6.2_ - [ ]* 8.3 编写占位符替换属性测试 - **Property 15: Template Placeholder Replacement** - **Validates: Requirements 6.2** - [x] 8.4 实现横向表格生成(HORIZONTAL) - VPC, Subnet, Route Table, NAT Gateway等服务 - Security Group, Lambda, SNS, CloudTrail, Config等服务 - _Requirements: 6.3_ - [x] 8.5 实现纵向表格生成(VERTICAL) - EC2, RDS, ELB, Auto Scaling Group等服务 - CloudFront, S3, Internet Gateway等服务 - _Requirements: 6.3_ - [x] 8.6 实现空服务过滤 - 跳过无资源的服务 - _Requirements: 6.4_ - [ ]* 8.7 编写空服务排除属性测试 - **Property 12: Empty Service Exclusion** - **Validates: Requirements 4.6, 6.4** - [x] 8.8 实现网络拓扑图嵌入 - 处理用户上传的Network Diagram图片 - 嵌入到报告指定位置 - _Requirements: 6.8_ - [x] 8.9 实现目录更新 - 自动更新Word文档目录 - _Requirements: 6.5_ - [x] 8.10 实现报告存储 - 保存生成的报告文件 - 记录报告元数据到数据库 - _Requirements: 6.6, 6.7_ - [ ]* 8.11 编写报告内容完整性属性测试 - **Property 16: Report Content Completeness** - **Validates: Requirements 6.3, 6.8, 6.9, 3.8** - [x] 9. Checkpoint - 报告生成模块完成 - 确保所有测试通过,如有问题请询问用户 - [x] 10. 任务管理模块 - [x] 10.1 实现任务数据模型 - 创建Task模型 - 创建TaskLog模型 - 创建Report模型 - _Requirements: 3.1_ - [x] 10.2 实现Celery扫描任务 - 创建scan_aws_resources任务 - 实现进度更新逻辑 - 实现任务重试机制 - _Requirements: 4.1, 4.9, 4.10_ - [ ]* 10.3 编写任务重试属性测试 - **Property 22: Worker Task Retry** - **Validates: Requirements 4.10** - [x] 10.4 实现任务管理API - GET /api/tasks - 获取任务列表(分页,状态筛选) - POST /api/tasks/create - 创建任务 - GET /api/tasks/detail - 获取任务详情 - POST /api/tasks/delete - 删除任务 - GET /api/tasks/logs - 获取任务日志(分页) - _Requirements: 3.1, 3.4_ - [ ]* 10.5 编写任务创建验证属性测试 - **Property 7: Task Creation Validation** - **Validates: Requirements 3.1** - [x] 10.6 实现报告管理API - GET /api/reports - 获取报告列表(分页) - GET /api/reports/detail - 获取报告详情 - GET /api/reports/download - 下载报告 - POST /api/reports/delete - 删除报告 - _Requirements: 6.6, 6.7_ - [ ]* 10.7 编写报告访问属性测试 - **Property 17: Report Storage and Accessibility** - **Validates: Requirements 6.6, 6.7** - [x] 10.8 实现Worker管理API - GET /api/workers - 获取Worker状态 - GET /api/workers/stats - 获取统计信息 - POST /api/workers/purge - 清除队列任务 - _Requirements: 4.8_ - [x] 11. 错误处理和日志模块 - [x] 11.1 实现统一错误处理 - 创建自定义异常类 - 实现全局异常处理器 - 统一错误响应格式 - _Requirements: 8.1, 8.5_ - [ ]* 11.2 编写错误日志完整性属性测试 - **Property 18: Error Logging Completeness** - **Validates: Requirements 8.1** - [x] 11.3 实现任务错误日志 - 记录扫描过程中的错误 - 关联错误日志到任务 - _Requirements: 8.2, 8.3_ - [ ]* 11.4 编写任务错误显示属性测试 - **Property 19: Task Error Display** - **Validates: Requirements 8.3** - [ ]* 11.5 编写错误恢复属性测试 - **Property 11: Error Resilience in Scanning** - **Validates: Requirements 4.5, 5.6, 8.2** - [ ]* 11.6 编写系统错误恢复属性测试 - **Property 20: System Error Resilience** - **Validates: Requirements 8.5** - [x] 12. Checkpoint - 后端核心功能完成 - 确保所有测试通过,如有问题请询问用户 - [x] 13. 前端认证模块 - [x] 13.1 实现登录页面 - 创建登录表单组件 - 实现JWT token存储和管理 - 实现自动登出(token过期) - _Requirements: 7.1_ - [x] 13.2 实现路由守卫 - 创建认证路由守卫 - 实现角色权限路由控制 - _Requirements: 7.1_ - [x] 14. 前端Dashboard模块 - [x] 14.1 实现Dashboard页面 - 显示任务状态统计 - 显示最近报告列表 - _Requirements: 7.2_ - [x] 15. 前端任务管理模块 - [x] 15.1 实现任务列表页面 - 分页显示任务列表 - 状态筛选功能 - 任务状态实时刷新 - _Requirements: 7.3, 7.4_ - [x] 15.2 实现创建任务表单 - AWS账号选择(多选) - 区域选择(多选) - 项目元数据输入 - 网络拓扑图上传 - _Requirements: 7.3, 3.1, 3.8_ - [x] 15.3 实现任务详情页面 - 显示任务进度 - 显示错误日志 - _Requirements: 7.4, 7.7_ - [x] 16. 前端报告管理模块 - [x] 16.1 实现报告列表页面 - 分页显示报告列表 - 显示报告元数据 - _Requirements: 7.5_ - [x] 16.2 实现报告操作 - 报告预览功能 - 报告下载功能 - 报告删除功能 - _Requirements: 7.5_ - [x] 17. 前端管理面板模块 (Admin) - [x] 17.1 实现用户管理页面 - 用户列表(分页、搜索) - 创建/编辑/删除用户 - 凭证分配 - _Requirements: 7.6_ - [x] 17.2 实现凭证管理页面 - 凭证列表(分页) - 创建/编辑/删除凭证 - 凭证验证 - 基础Assume Role配置 - _Requirements: 7.6_ - [x] 17.3 实现Worker管理页面 - Worker状态显示 - 队列统计信息 - _Requirements: 7.6_ - [x] 18. 数据库迁移 - [x] 18.1 创建数据库迁移脚本 - 生成初始迁移 - 测试迁移和回滚 - _Requirements: 9.4_ - [ ]* 18.2 编写数据库迁移安全属性测试 - **Property 21: Database Migration Safety** - **Validates: Requirements 9.4** - [x] 19. Final Checkpoint - 全部功能完成 - 确保所有测试通过,如有问题请询问用户 - 验证前后端集成 - 验证完整扫描和报告生成流程 ## Notes - 标记 `*` 的任务为可选测试任务,可跳过以加快MVP开发 - 每个任务都引用了具体的需求编号以便追溯 - Checkpoint任务用于阶段性验证 - 属性测试验证系统的正确性属性 - 单元测试验证具体示例和边界情况