Page:
Task-45-实现-API-安全审计与管理端-API
Pages
Architecture-and-Code-Map
Audience-Document-Template
Business-Rules-and-Glossary
Common-Changes
Delivery-Documentation-Guide
Deployment-Template
Deployment-and-Operations
Development-Workflow
Existing-Project-Adoption-Guide
Home
Local-Development-and-Verification
New-Project-Documentation-Setup
Product-Requirements-Overview
Project-Profile
Task-1-完善技术基线与实施约束
Task-10-实现-Provider-协议、mock-上游与内嵌-worker
Task-11-实现-portal-认证、异步提交与鉴权查询
Task-12-按确认原型实现-portal-用户界面
Task-13-完成-MVP-0-集成验收与运行闭环
Task-14-增加-Windows-本地开发启动脚本
Task-15-将现有-worker-接入-portal-运行与优雅退出
Task-16-明确-MVP-1-路由与-Provider-技术设计
Task-17-制作-MVP-1-管理端运营原型
Task-18-制作-MVP-1-用户端增强原型
Task-19-MVP-1-多上游可用性与运营管理
Task-2-制作-MVP-0-用户端生成页原型
Task-20-MVP-1-可逆迁移与-admin-基线
Task-21-MVP-1-路由核心与故障转移
Task-22-MVP-1-多-Provider-协议安全调用与-Worker-原子尝试
Task-23-MVP-1-管理端-API、凭据轮换与连通性审计
Task-24-go-admin-MVP-1-运营界面
Task-25-MVP-1-portal-提交契约与游标历史
Task-26-MVP-1-portal-用户界面
Task-27-MVP-1-集成验收
Task-28-安全管理员-bootstrap-命令
Task-29-管理端改为账号密码登录
Task-30-Provider-API-Key-明文存储与回显变更
Task-31-完全移除用户点数展示与需求
Task-32-移除-admin-ui-残留验证码登录交互
Task-33-修复-admin-ui-生产构建-runtime-资源缺失
Task-34-修复-admin-ui-SCSS-变量导入生产白屏
Task-36-MVP-2-API治理技术设计
Task-37-MVP-2-API-Key页面原型
Task-38-统一本地服务启停
Task-39-Supervisor-托管本地服务
Task-4-MVP-0-单上游安全异步生成闭环
Task-40-修复管理端动态菜单视图路径
Task-41-MVP-2-数据迁移与-API-Key-核心能力
Task-42-用户-API-Key-生命周期与-Portal-页面
Task-43-OpenAPI-v1-认证与生成接口
Task-44-实现三维限流与生成队列延后
Task-45-实现-API-安全审计与管理端-API
Task-46-交付管理端-API-Key-治理页面
Task-47-执行-MVP-2-跨模块集成验收
Task-48-简化单人开发工作流
Task-5-准备-MVP-0-可复现开发与测试环境
Task-50-用户端仅账号密码登录
Task-51-终端用户密码最小长度调整为-6-位
Task-52-规范化管理端-API-Key-幂等撤销时间响应
Task-53-修复-MVP-2-Portal-E2E-审计数据清理顺序
Task-55-Provider-出站端口白名单配置
Task-56-Portal-YAML-运行配置
Task-58-图片生成-300-秒受控复验
Task-59-管理端分组导航与适用系统模块原型
Task-6-初始化-Go-项目骨架与可逆数据库迁移
Task-60-??-images_edits-??????.-
Task-60-对齐-images_edits-图片编辑协议.-
Task-61-修正生成尝试状态展示
Task-65-完善生成记录耗时和时间展示
Task-66-建立管理端四分组菜单与权限-migration
Task-67-适配管理端系统-API-与管理员保护
Task-68-实现四分组导航与系统管理页面
Task-69-管理端系统模块集成与安全回归
Task-7-实现核心领域模型、状态规则和-Prompt-渲染
Task-8-实现-SSRF-安全-HTTP、AES-GCM-密钥信封和受保护本地存储
Task-9-实现-MySQL-8-SKIP-LOCKED-租约队列、attempt-原子记录和最终-CAS
Task-Archive-Template
Troubleshooting
unnamed
Clone
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
45 实现 API 安全审计与管理端 API
- 类型:需求
- 所属 Epic:#3
- 所属 MVP / 版本:#35 / MVP-2
- 状态:已完成
- 日期:2026-08-25
- Gitea 工单:#45
- 实现提交:
b1f8bcb
背景与目标
在已完成的用户 API Key 和 OpenAPI 生成链路上补齐安全审计,并提供仅面向管理员的 API Key 元数据查询、详情与幂等撤销接口。审计不得泄露完整 Key、Prompt、文件、认证头、Cookie、响应正文或原始 IP;未知 Key 的认证失败不写数据库,避免形成无界写放大入口。
最终方案
- 新增共享
internal/core/apiaudit仓储,动作、结果和摘要字段均采用固定白名单。 - 用户创建、改名、撤销 API Key 时,在同一数据库事务写入审计;重复撤销保持幂等并记录结果。
- 已认证的 OpenAPI 文生图、图生图提交及限流拒绝写入 API 审计;未知、缺失、过期和撤销 Key 在认证阶段拒绝,不产生数据库审计行。
- API Key 的
last_used_at按一分钟窗口节流更新。 - 管理端新增 API Key 元数据列表、详情和撤销接口,沿用 JWT 与 Casbin;列表和详情不返回完整 Key、public_id 或 secret_hash,并禁止缓存。
- 管理员撤销同时写入
admin_audit_events和api_audit_events;客户端请求 ID 仅接受 UUID,否则改用服务端生成值。 - 未增加管理端创建或读取完整用户 Key 的能力,管理界面留给 #46。
修改范围
internal/core/apiaudit/:共享安全审计仓储和字段白名单测试。portal/service/、portal/handler/:Key 生命周期、OpenAPI 提交、限流拒绝审计及 last_used_at 验证。admin/app/chorus/:管理员 API Key 元数据列表、详情、幂等撤销和双审计。- 核心 Wiki 及
docs/02、docs/03、docs/04、docs/06镜像:补充架构、规则、验证和排错说明。
验收结果
| 验收标准 | 结果 |
|---|---|
| 审计事件覆盖设计动作且摘要脱敏 | 通过自动化测试 |
| 未知 Key 失败不制造数据库审计行 | 通过 MySQL 集成测试 |
| 管理员只查看元数据、可检索并幂等撤销,权限负向测试通过 | 通过 |
| 管理撤销同时写管理员与 API 安全审计且不泄露完整 Key | 通过 |
| 管理 API、审计字段和排错文档已更新 | 通过 |
| 人工验收 | 2026-08-25 用户验收通过 |
测试
go test ./...:通过。go vet ./...:通过。go -C admin test ./...:通过。go test -race -count=1 ./internal/core/apiaudit ./portal/service ./portal/handler:通过。go -C admin test -race -count=1 ./app/chorus:通过。- Portal 与 Admin API 的 MySQL 定向集成测试:通过。
python dev_scripts/harness.py sync --check:通过。python dev_scripts/harness.py check --strict:通过。- Supervisor 中用户端与管理 API 已重新构建、启动并完成未认证冒烟检查。
- 未验证部分:未调用真实 Provider,未执行管理页面验证(属于 #46)。
说明
go-admin 对部分认证失败会以 HTTP 200 包装 JSON 业务码 401;权限仍被拒绝,排错时需同时检查响应 JSON 的 code。
相关提交
b1f8bcbfeat: 实现 API 安全审计与管理端 API (#45)