Files
flower-rain/docs/wyg/sunway-user-sys.md
2025-12-16 15:44:17 +08:00

165 lines
7.6 KiB
Markdown
Raw Permalink Blame History

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.
# Sunway User Sys 设计方案
## 1. 文档信息
- **文档标题**基于RBAC的认证服务系统及管理面板产品需求文档
- **版本**1.0
- **作者**Grok 4xAI
- **创建日期**2025-12-16
- **文档目的**本文档定义了一个优秀的基于RBACRole-Based Access Control的认证服务系统及其配套管理面板的需求包括功能设计、系统架构、非功能需求等。旨在为开发团队提供清晰的指导确保系统安全、高效、可扩展。
## 2. 项目概述
### 2.1 项目背景
随着企业应用系统的复杂化用户认证和权限管理成为核心需求。RBAC模型通过角色Role来桥接用户User和权限Permission简化了权限分配提高了安全性。本项目旨在开发一个独立的认证服务系统以下简称“认证服务”支持多租户、多应用集成。同时开发一个Web-based的管理面板以下简称“管理面板”用于管理员对用户、角色和权限的集中管理。
### 2.2 项目目标
- 提供安全、可靠的认证机制支持JWT、OAuth2等标准协议。
- 实现细粒度的权限控制,支持动态角色分配。
- 管理面板提供直观的UI支持用户自助管理和审计日志。
- 系统设计注重可扩展性,支持微服务架构,便于集成到现有系统中。
- 确保合规性符合GDPR、CCPA等数据隐私法规。
### 2.3 目标用户
- **终端用户**:系统使用者,需要认证登录并根据角色访问资源。
- **管理员**:负责用户管理、角色配置和权限审计的人员。
- **开发者/集成者**:将认证服务集成到其他应用的工程师。
### 2.4 假设与约束
- 假设系统基于云部署支持容器化Docker/Kubernetes
- 约束不涉及硬件集成预算未定但优先使用开源技术如Spring Security、Keycloak开发周期目标为3-6个月。
## 3. 系统架构设计
### 3.1 高层架构
系统采用微服务架构,分成两个主要模块:
- **认证服务**后端服务使用RESTful API提供认证、授权和令牌管理。技术栈建议Node.js/Express 或 Java/Spring Boot数据库使用PostgreSQL支持JSONB for 权限存储)。
- **管理面板**前端应用使用React/Vue.js框架与认证服务通过API交互。部署为单页应用SPA支持响应式设计。
架构图(文本描述):
```
[客户端应用] <-- JWT/OAuth --> [认证服务 (API Gateway + Auth Server)]
|
v
[管理面板 (Web UI)] <-- Secure API --> [数据库 (Users, Roles, Permissions)]
|
v
[审计日志 & 监控] <-- Integration --> [外部服务 (e.g., Email, Cache)]
```
### 3.2 RBAC模型设计
RBAC核心组件
- **用户User**唯一标识如UUID包含基本信息用户名、邮箱、密码哈希
- **角色Role**用户所属的角色组如“Admin”、“User”、“Guest”。支持角色继承e.g., Admin 继承 User 的权限)。
- **权限Permission**细粒度操作如“read:resource”、“write:document”。权限可绑定到角色支持通配符e.g., “*:resource”表示所有操作
- **会话Session**基于JWT的令牌包含用户ID、角色列表和过期时间。
扩展设计:
- 支持组Group用户可属于多个组组可绑定角色。
- 动态权限通过规则引擎e.g., OPA - Open Policy Agent支持上下文-based授权如基于IP、时间
- 多租户:每个租户有独立的角色/权限命名空间。
### 3.3 数据模型ER图简述
- **User表**id (PK), username, email, password_hash, status, created_at。
- **Role表**id (PK), name, description, parent_role_id (for 继承)。
- **Permission表**id (PK), name, description。
- **User_Role表**user_id (FK), role_id (FK)。
- **Role_Permission表**role_id (FK), permission_id (FK)。
- **Audit_Log表**id (PK), user_id, action, timestamp, details。
### 3.4 集成与扩展
- 支持OAuth2/OpenID Connect与Google、GitHub等第三方登录集成。
- API网关使用Kong/Nginx支持速率限制和CORS。
- 缓存使用Redis提升认证性能。
- 监控集成Prometheus/Grafana for metrics。
## 4. 功能需求
### 4.1 认证服务功能
1. **用户注册与认证**
- 支持邮箱/手机号注册,验证码验证。
- 登录:用户名/密码、OAuth2、社会化登录。
- 密码重置:通过邮箱链接。
- 多因素认证MFA支持TOTPGoogle Authenticator
2. **授权与令牌管理**
- 生成JWT令牌包含claimsuser_id, roles, permissions
- 令牌验证中间件集成支持黑名单revoke token
- 刷新令牌使用refresh token延长会话。
3. **RBAC核心功能**
- 角色创建/编辑/删除。
- 权限分配:批量绑定到角色。
- 用户角色分配:支持批量操作。
- 权限检查API端点装饰器e.g., @RequirePermission('read:resource'))。
4. **审计与日志**
- 记录所有认证/授权事件。
- 支持导出日志 for 合规审计。
### 4.2 管理面板功能
1. **仪表盘**
- 显示用户统计、活跃角色、最近日志。
2. **用户管理**
- CRUD操作创建、读取、更新、删除用户。
- 搜索/过滤:按角色、状态。
- 批量导入CSV/Excel。
3. **角色与权限管理**
- 角色CRUD可视化继承树。
- 权限CRUD树状结构显示。
- 分配界面:拖拽式绑定用户/角色/权限。
4. **系统设置**
- 配置MFA、令牌过期时间。
- 集成第三方服务e.g., SMTP for email
5. **安全功能**
- 角色-based面板访问e.g., 只允许Admin访问
- 会话超时、CSRF保护。
### 4.3 API设计
- **认证API**
- POST /auth/register注册用户。
- POST /auth/login登录返回JWT。
- GET /auth/validate验证令牌。
- **管理API**
- GET /users列出用户需Admin权限
- POST /roles创建角色。
所有API使用Swagger/OpenAPI文档化。
## 5. 非功能需求
### 5.1 性能
- 响应时间:<200ms for 认证API。
- 并发支持:>1000用户/秒(使用负载均衡)。
- 扩展性:水平扩展,支持集群部署。
### 5.2 安全性
- 加密密码使用bcrypt哈希传输使用HTTPS。
- 防护防SQL注入、XSS、CSRF。
- 合规:数据加密 at rest支持数据删除请求。
### 5.3 可用性与可靠性
- 可用性99.9% uptime。
- 备份:每日数据库备份。
- 错误处理:优雅降级,日志记录。
### 5.4 用户体验
- 管理面板:响应式设计,支持多语言(中/英)。
- 可访问性符合WCAG 2.1标准。
### 5.5 技术要求
- 前端HTML5, CSS3, JavaScript (ES6+)。
- 后端RESTful, JSON格式。
- 测试:单元测试覆盖率>80%;集成测试 for API。
## 6. 风险与缓解
- **风险**:安全漏洞。**缓解**:第三方审计,定期渗透测试。
- **风险**:集成复杂。**缓解**提供SDK for 常见框架e.g., Express middleware
- **风险**:数据迁移。**缓解**支持从LDAP/Active Directory导入。
## 7. 附录
- **术语表**RBAC - Role-Based Access ControlJWT - JSON Web Token。
- **参考**NIST RBAC标准OWASP安全指南。
- **下一步**基于本PRD进行详细设计文档SDD和原型开发。
此文档为初始版本可根据反馈迭代。如果需要更详细的架构图、API规格或代码示例请提供进一步指示。