- Rewrite 操作说明.md with full admin/sub-account operation flow - Add v0.5.0 to 版本管理.md (permission refactor + account enhancements) - Add Scope=Project API limitation finding to research report Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
5.8 KiB
5.8 KiB
AirGate 版本管理
v0.5.0 (2026-03-28 ~ 2026-03-29)
权限管理重构
- feat: 统一权限管理页面(全局策略 + 项目级策略 + 关联项目 + 添加/移除策略,一页展示)
- feat: Deny策略自动化(项目隔离)—— 创建子账号时自动生成
AirGate_Deny_{username},添加/移除项目时自动更新 - feat: Deny策略免除开关(管理员自用账号可在监控配置中开启)
- fix: 火山API不支持Scope=Project(2026-03-28实测),改用全局授权 + Deny策略实现项目隔离
- fix: 项目变动刷新所有用户Deny策略
- fix: 前后端权限显示一致(实时从火山查询,不再依赖本地缓存)
账号管理增强
- feat: 火山控制台登录开关(独立于停用/恢复,随时切换)
- feat: 编辑子账号信息(显示名、手机号、邮箱,修改后同步火山
UpdateUserAPI) - feat: 创建子账号密码校验(火山密码策略:大小写字母 + 数字 + 特殊字符,8位以上)
- fix: 停用/恢复保存策略快照(区分全局策略/项目级策略 + 登录状态,恢复时精确还原)
- fix: 同步不再把火山登录关闭当成账号停用
- fix: 检测幽灵LoginProfile(CreateDate=1970,火山API已知问题)
v0.4.0 (2026-03-20)
UI 优化
- 所有弹窗改为自适应宽度(
width="90%"+max-width),解决小屏溢出和内容截断问题 - 「火山控制台密码」字段增加说明文字,明确是火山引擎网页后台的登录密码,非 AirGate 密码
v0.3.0 (2026-03-19)
项目自动授权
- 添加关联项目时,自动调用火山
AttachPolicyInProject在项目范围内授权默认策略(ArkFullAccess + TOSFullAccess) - 移除关联项目时,自动调用
DetachPolicyInProject回收权限 IAMUserProject模型新增attached_policies字段,记录每个项目已授权的策略列表GlobalConfig新增default_project_policies配置项,支持在系统设置页面自定义默认授权策略IAMService新增attach_policy_in_project()/detach_policy_in_project()方法- 项目管理弹窗新增「已授权策略」列,展示每个项目被授权了哪些策略
多项目支持
- 新增
IAMUserProject模型,支持一个子账号关联多个火山项目 - 每个项目有独立的监测开关,消费 = 所有开启监测的项目消费之和
- 新增项目管理弹窗:添加项目(从火山拉取下拉列表)、开关监测、移除项目、全选/全不选
- 子账号列表新增「项目」列,显示监测中/总数,可点击进入项目管理
- 消费监控页面支持展开行查看每个项目的独立消费
- 消费监控定时任务改为遍历所有开启监测的项目分别查询,累加后触发告警
- 告警内容包含每个项目的消费明细
- 移除旧的
IAMUser.project_name单项目字段 SpendingRecord改为按项目粒度记录月度消费快照
研究报告同步更新
- 6.3 节:单项目 → 多项目聚合追踪模型
- 7.4 节:新增「项目即权限」设计说明
- 11 节:新增项目 CRUD + 自动授权 API 接口文档
v0.2.0 (2026-03-19)
额度划拨制
- 替换月度预算为一次性额度划拨模式(预付制,用完再充)
- 支持追加(+)和扣减(-)额度,扣减有保护(不能低于已消费金额)
- 额度变更后自动重置告警状态
- 新增
QuotaAllocation模型和划拨记录查看功能 - 前端「划拨」弹窗支持追加/扣减模式切换,显示最大可扣减金额
阶梯式告警
- 替换单一告警阈值为阶梯式百分比告警(如 50%/80%/90%)
- 每个子账号可自定义告警阶梯,未设置则使用全局默认值
- 每个阶梯只通知一次,额度变更后自动重置
核心功能完善
- 新增创建子账号功能(自动在火山创建 IAM 用户 + 生成 API Key + 附加基础策略)
- SecretKey 创建后弹窗显示,支持一键复制到剪贴板
- 新增权限策略管理(查看/附加/移除 IAM 策略)
- 新增 API Key 认证中间件(
X-API-Key头,供 AirDrama 等外部系统调用) - 新增 Docker + docker-compose 部署配置
- 新增 entrypoint.sh(自动迁移 + 创建默认管理员)
安全修复
SECRET_KEY在生产环境(DEBUG=False)缺失时强制报错,不再使用不安全的默认值APIKeyUser添加pk/is_staff等属性,修复 DRF 限流中间件兼容性- docker-compose SQLite 卷挂载修复(目录而非文件)
- CORS origins 移除冗余端口 80
- 清理死配置(
VOLC_ACCESS_KEY/VOLC_SECRET_KEY/MONITOR_INTERVAL) - 清理未使用的 import
审计修复
- 修复前端引用不存在的字段(
current_month_spending、effective_budget、budget_usage_percent) - 修复 scheduler 使用 naive
datetime.now()→timezone.now() - 修复 scheduler 从 settings 读取间隔改为从 GlobalConfig 数据库读取
- 修复 DashboardView 标签「本月总消费」→「累计总消费」
v0.1.0 (2026-03-19)
项目初始化
- Django 4.2 + DRF 后端骨架
- Vue 3 + Element Plus 前端骨架
- 管理员登录(SimpleJWT)
- 火山引擎 API 客户端(HMAC-SHA256 签名)
- 密钥加密存储(Fernet AES-256)
页面
- 登录页
- 仪表盘(子账号统计 + 最近告警)
- 子账号管理(列表 / 同步 / 停用 / 恢复)
- 消费监控(按用户查看消费 + 进度条)
- 告警记录(按类型筛选)
- 系统设置(火山主账号管理 + 全局配置 + 飞书 Webhook)
后端
- IAM 用户管理(创建/同步/导入/停用/恢复)
- Billing 消费查询(分页 + 按项目筛选)
- 飞书 Webhook 通知(异步非阻塞)
- APScheduler 定时消费监控任务
研究报告
- 完成火山引擎 IAM/Billing/签名/策略体系深度研究
- 经过 5 轮审计修正(签名 bug、策略冲突、双重编码等)