diff --git a/Task-12-Bell%E7%8B%AC%E7%AB%8B%E7%99%BB%E5%BD%95RBAC%E4%B8%8E%E8%AE%A4%E8%AF%81%E5%AE%A1%E8%AE%A1.-.md b/Task-12-Bell%E7%8B%AC%E7%AB%8B%E7%99%BB%E5%BD%95RBAC%E4%B8%8E%E8%AE%A4%E8%AF%81%E5%AE%A1%E8%AE%A1.-.md new file mode 100644 index 0000000..ccb4687 --- /dev/null +++ b/Task-12-Bell%E7%8B%AC%E7%AB%8B%E7%99%BB%E5%BD%95RBAC%E4%B8%8E%E8%AE%A4%E8%AF%81%E5%AE%A1%E8%AE%A1.-.md @@ -0,0 +1,44 @@ +# 12 Bell独立登录RBAC与认证审计 + +- 类型:需求 +- 所属 Epic:#7 +- 所属 MVP / 版本:#8 +- 状态:待验收 +- 日期:2026-08-12 +- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/12 +- Wiki 页面:Task-12-Bell独立登录RBAC与认证审计 +- Wiki revision:见本地镜像头 + +## 背景与目标 + +为 Bell 建立不信任 Sense token 的独立账户、会话、角色权限与认证审计边界。 + +## 最终方案 + +使用 bcrypt 密码和只存 HMAC 摘要的服务端会话,Cookie 固定为 `bell_session`。系统无默认账户/密码/密钥,首次管理员由一次性环境变量创建。管理员、操作员、只读角色按最小权限执行,认证审计由数据库触发器保证只追加。 + +## 修改文件 + +- `Bell/server/app/auth/`、`rbac/`、`audit/`:身份、权限与审计。 +- `Bell/server/migrations/2026081201_auth.sql`:账户、角色、会话、审计及不可变约束。 +- `Bell/web/src/views/login/`、`system/`:登录、用户角色和审计页面。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 缺少 session secret 拒绝启动 | 通过 | +| Bell 登录/登出和过期会话闭环 | 通过 | +| Sense Cookie 不被接受 | 通过 | +| 后端 RBAC 隔离管理员接口 | 通过 | +| 审计事实不可更新/删除 | 通过 | + +## 测试 + +- 执行:Go 单元/集成测试;登录 200→登出 204→会话 401;伪 Sense Cookie 401;管理员/操作员/只读权限矩阵;数据库不可变触发器。 +- 结果:全部通过。 +- **未验证部分**:生产域名下 Secure Cookie、外部身份提供商和真实用户人工验收。 + +## 相关提交 + +- `a5fc8f5` 独立认证与 RBAC(PR #35)。