90 lines
2.7 KiB
Markdown
90 lines
2.7 KiB
Markdown
# 模块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';"
|
||
```
|