# 模块07:权限与审计 - 运维日志 **模块路径**:`/audit-log` **前端文件**:`client/src/pages/AuditLog.tsx` **后端路由**:`server/routers.ts` → `rbac.*` **数据源**:MySQL(nac_id.users, nac_id.audit_logs) --- ## 功能说明 权限与审计模块管理系统用户的角色权限,并维护不可篡改的操作审计日志。所有管理操作均自动记录到审计日志。 ## 角色体系(RBAC) | 角色 | 说明 | 权限范围 | |------|------|----------| | admin | 系统管理员 | 全部权限(需 kyc_level≥2 + node_status=constitutional)| | reviewer | 审批审核员 | 可审核 AI 审批案例 | | legal | 法务专员 | 可查看合规规则和审批案例 | | viewer | 只读用户 | 只读访问所有模块 | ## 角色判断逻辑 ```typescript // 基于 nac_id.users 表字段判断角色 function getUserRole(user: NacUser): string { if (user.kyc_level >= 2 && user.node_status === 'constitutional') { return 'admin'; } if (user.kyc_level >= 1) { return 'reviewer'; } return 'viewer'; } ``` ## 审计日志数据模型 ```sql CREATE TABLE audit_logs ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, action VARCHAR(100) NOT NULL, -- 操作类型,如 "LOGIN", "UPDATE_RULE" resource VARCHAR(100), -- 操作资源 resource_id VARCHAR(100), -- 资源 ID details TEXT, -- 操作详情(JSON) ip_address VARCHAR(45), -- 操作 IP user_agent VARCHAR(500), -- 浏览器信息 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ## API 端点 | 端点 | 方法 | 说明 | |------|------|------| | `rbac.listUsers` | Query | 获取用户列表(含角色)| | `rbac.auditLogs` | Query | 获取审计日志(支持用户/操作类型筛选)| ## 审计日志操作类型 | 操作类型 | 说明 | |----------|------| | LOGIN | 用户登录 | | LOGOUT | 用户退出 | | CREATE_RULE | 创建合规规则 | | UPDATE_RULE | 更新合规规则 | | DELETE_RULE | 删除合规规则 | | APPROVE_CASE | 审批通过案例 | | REJECT_CASE | 审批拒绝案例 | | TRIGGER_CRAWLER | 手动触发采集器 | | REGISTER_PROTOCOL | 注册新协议 | ## 运维操作 ```bash # 查看最近审计日志 mysql -u root -pvaingkvf nac_id -e \ "SELECT action, resource, ip_address, created_at FROM audit_logs ORDER BY created_at DESC LIMIT 20;" # 查看用户角色分布 mysql -u root -pvaingkvf nac_id -e \ "SELECT kyc_level, node_status, COUNT(*) as count FROM users GROUP BY kyc_level, node_status;" # 提升用户为管理员 mysql -u root -pvaingkvf nac_id -e \ "UPDATE users SET kyc_level=2, node_status='constitutional' WHERE email='user@example.com';" ```