NAC_Blockchain/docs_center/nac-admin/modules/07-audit-log.md

90 lines
2.7 KiB
Markdown
Raw 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.

# 模块07权限与审计 - 运维日志
**模块路径**`/audit-log`
**前端文件**`client/src/pages/AuditLog.tsx`
**后端路由**`server/routers.ts` → `rbac.*`
**数据源**MySQLnac_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';"
```