tasks.md 13 KB

Implementation Plan: AWS Resource Scanner

Overview

本实现计划将AWS资源扫描报告工具分解为可执行的开发任务。采用前后端分离架构,后端使用Python Flask + Celery,前端使用React + TypeScript + Ant Design。

Tasks

  • [x] 1. 项目初始化和基础架构

    • 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. 用户认证模块

    • 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)

    • 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凭证管理模块

    • 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扫描器模块

    • 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. 报告生成模块

    • 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. 任务管理模块

    • 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. 错误处理和日志模块

    • 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. 前端认证模块

    • 13.1 实现登录页面
    • 创建登录表单组件
    • 实现JWT token存储和管理
    • 实现自动登出(token过期)
    • Requirements: 7.1

    • [x] 13.2 实现路由守卫

    • 创建认证路由守卫

    • 实现角色权限路由控制

    • Requirements: 7.1

  • [x] 14. 前端Dashboard模块

    • 14.1 实现Dashboard页面
    • 显示任务状态统计
    • 显示最近报告列表
    • Requirements: 7.2
  • [x] 15. 前端任务管理模块

    • 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. 前端报告管理模块

    • 16.1 实现报告列表页面
    • 分页显示报告列表
    • 显示报告元数据
    • Requirements: 7.5

    • [x] 16.2 实现报告操作

    • 报告预览功能

    • 报告下载功能

    • 报告删除功能

    • Requirements: 7.5

  • [x] 17. 前端管理面板模块 (Admin)

    • 17.1 实现用户管理页面
    • 用户列表(分页、搜索)
    • 创建/编辑/删除用户
    • 凭证分配
    • Requirements: 7.6

    • [x] 17.2 实现凭证管理页面

    • 凭证列表(分页)

    • 创建/编辑/删除凭证

    • 凭证验证

    • 基础Assume Role配置

    • Requirements: 7.6

    • [x] 17.3 实现Worker管理页面

    • Worker状态显示

    • 队列统计信息

    • Requirements: 7.6

  • [x] 18. 数据库迁移

    • 18.1 创建数据库迁移脚本
    • 生成初始迁移
    • 测试迁移和回滚
    • Requirements: 9.4

    • [ ]* 18.2 编写数据库迁移安全属性测试

    • Property 21: Database Migration Safety

    • Validates: Requirements 9.4

  • [x] 19. Final Checkpoint - 全部功能完成

    • 确保所有测试通过,如有问题请询问用户
    • 验证前后端集成
    • 验证完整扫描和报告生成流程

Notes

  • 标记 * 的任务为可选测试任务,可跳过以加快MVP开发
  • 每个任务都引用了具体的需求编号以便追溯
  • Checkpoint任务用于阶段性验证
  • 属性测试验证系统的正确性属性
  • 单元测试验证具体示例和边界情况