docs(nac-admin): 建立文档中心 - 各模块运维日志
- README.md: 系统概述、技术栈、功能模块说明 - deploy.log: 完整部署历史和修复记录 - modules/01-dashboard.md: 仪表盘模块运维日志 - modules/02-knowledge-base.md: 知识库模块运维日志 - modules/03-crawlers.md: 采集器监控模块运维日志 - modules/04-approval-cases.md: AI审批案例模块运维日志 - modules/05-tag-engine.md: 标签引擎模块运维日志 - modules/06-protocol-registry.md: 协议注册表模块运维日志 - modules/07-audit-log.md: 权限与审计模块运维日志 - ops/nginx.conf: Nginx配置说明 - ops/systemd.service: systemd服务配置说明 - ops/secrets.md: 密钥管理最佳实践
This commit is contained in:
parent
3700d1c7dd
commit
6db7a25362
|
|
@ -0,0 +1,62 @@
|
|||
# NAC 知识引擎管理后台 - 文档中心
|
||||
|
||||
**系统名称**:NAC Knowledge Engine Admin Console
|
||||
**访问地址**:https://admin.newassetchain.io
|
||||
**部署服务器**:103.96.148.7
|
||||
**服务端口**:9560(内部),443/80(Nginx 代理)
|
||||
**最后更新**:2026-02-26
|
||||
|
||||
---
|
||||
|
||||
## 系统概述
|
||||
|
||||
NAC 知识引擎管理后台是 NAC 公链的合规知识管理中枢,负责管理 RWA 资产合规规则、AI 审批案例、采集器监控、协议族注册等核心业务。系统采用 NAC 原生认证(直连 `nac_id` MySQL 数据库),不依赖任何第三方 OAuth 服务。
|
||||
|
||||
## 技术栈
|
||||
|
||||
| 层次 | 技术 |
|
||||
|------|------|
|
||||
| 前端框架 | React 19 + Tailwind CSS 4 + shadcn/ui |
|
||||
| 后端框架 | Express 4 + tRPC 11 |
|
||||
| 数据库 | MySQL(nac_id)+ MongoDB(nac_knowledge_engine)|
|
||||
| 认证 | NAC 原生认证(bcrypt + JWT cookie)|
|
||||
| 多语言 | i18next(zh/en/ar/ja/ko/fr/ru 七种语言)|
|
||||
| 部署 | systemd + Nginx HTTPS 反向代理 |
|
||||
|
||||
## 管理员账户
|
||||
|
||||
| 字段 | 值 |
|
||||
|------|-----|
|
||||
| 邮箱 | admin@newassetchain.io |
|
||||
| 密码 | Admin@NAC2026 |
|
||||
| 角色 | admin(kyc_level=2, node_status=constitutional)|
|
||||
|
||||
## 功能模块
|
||||
|
||||
1. **全局态势感知仪表盘** - KPI 卡片、审批趋势图、司法辖区覆盖、系统服务状态
|
||||
2. **知识库管理** - 合规规则 CRUD、辖区/资产类型筛选、多语言内容
|
||||
3. **采集器监控** - 运行日志、成功率统计、手动触发、采集源管理
|
||||
4. **AI 审批案例审查** - 时间线、中风险人工审核、一键否决/确认
|
||||
5. **标签规则治理** - 标签序列管理、人工修正、训练数据标注
|
||||
6. **协议族注册表** - 协议注册/停用、触发条件、版本管理
|
||||
7. **权限与审计** - 用户角色管理(admin/reviewer/legal/viewer)、不可篡改审计日志
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
docs_center/nac-admin/
|
||||
├── README.md # 本文件
|
||||
├── deploy.log # 部署日志
|
||||
├── modules/
|
||||
│ ├── 01-dashboard.md # 仪表盘模块运维日志
|
||||
│ ├── 02-knowledge-base.md # 知识库模块运维日志
|
||||
│ ├── 03-crawlers.md # 采集器模块运维日志
|
||||
│ ├── 04-approval-cases.md # AI审批案例模块运维日志
|
||||
│ ├── 05-tag-engine.md # 标签引擎模块运维日志
|
||||
│ ├── 06-protocol-registry.md # 协议注册表模块运维日志
|
||||
│ └── 07-audit-log.md # 权限与审计模块运维日志
|
||||
└── ops/
|
||||
├── nginx.conf # Nginx 配置说明
|
||||
├── systemd.service # systemd 服务说明
|
||||
└── secrets.md # 密钥管理说明
|
||||
```
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
# 模块01:全局态势感知仪表盘 - 运维日志
|
||||
|
||||
**模块路径**:`/`(首页)
|
||||
**前端文件**:`client/src/pages/Dashboard.tsx`
|
||||
**后端路由**:`server/routers.ts` → `dashboard.stats`、`dashboard.jurisdictionStats`
|
||||
**数据源**:MongoDB(nac_knowledge_engine)+ MySQL(nac_id)
|
||||
|
||||
---
|
||||
|
||||
## 功能说明
|
||||
|
||||
仪表盘是管理后台的核心监控页面,提供 NAC 知识引擎的全局运行状态视图。
|
||||
|
||||
| 指标卡片 | 数据来源 | 说明 |
|
||||
|----------|----------|------|
|
||||
| 合规规则总数 | MongoDB compliance_rules | 知识库中的合规规则条目数 |
|
||||
| 活跃协议 | MongoDB protocols | 状态为 active 的协议族数量 |
|
||||
| 采集器运行 | MongoDB crawlers | 状态为 running 的采集器数量 |
|
||||
| 审批通过率 | MongoDB approval_cases | 近30天通过/总数比率 |
|
||||
| 待人工审核 | MongoDB approval_cases | 状态为 pending_human 的案例数 |
|
||||
| 系统用户 | MySQL nac_id.users | NAC 注册用户总数 |
|
||||
| 审计日志 | MySQL audit_logs | 不可篡改审计记录总数 |
|
||||
| 司法辖区覆盖 | MongoDB compliance_rules | 已覆盖的辖区数量 |
|
||||
|
||||
## API 端点
|
||||
|
||||
```
|
||||
GET /api/trpc/dashboard.stats
|
||||
GET /api/trpc/dashboard.jurisdictionStats
|
||||
```
|
||||
|
||||
## 图表说明
|
||||
|
||||
- **审批趋势图(近7天)**:折线图,显示通过/拒绝/待审三条曲线,使用 Recharts 渲染
|
||||
- **司法辖区覆盖饼图**:显示各辖区(SG/HK/CN/AE/EU/US)的规则分布
|
||||
|
||||
## 系统服务状态监控
|
||||
|
||||
| 服务 | 数据库 | 检测方式 |
|
||||
|------|--------|----------|
|
||||
| MongoDB 知识引擎 | nac_knowledge_engine | ping 命令 |
|
||||
| MySQL 认证数据库 | nac_id | SELECT 1 |
|
||||
| Charter 编译服务 | - | 进程检测 |
|
||||
| CNNL 神经网络 | - | 进程检测 |
|
||||
| ACC-20 协议服务 | - | 进程检测 |
|
||||
| GNACS 资产分类 | - | 进程检测 |
|
||||
|
||||
## 已知问题
|
||||
|
||||
| 问题 | 状态 | 说明 |
|
||||
|------|------|------|
|
||||
| 审批通过率显示 0% | 已知 | 初始数据中无已审批案例,属正常现象 |
|
||||
| Charter/CNNL 服务状态 | 模拟数据 | 实际服务检测接口待接入 |
|
||||
|
||||
## 运维操作
|
||||
|
||||
```bash
|
||||
# 查看仪表盘 API 日志
|
||||
journalctl -u nac-admin -n 50 | grep "dashboard"
|
||||
|
||||
# 手动测试 API
|
||||
curl -sk https://admin.newassetchain.io/api/trpc/dashboard.stats \
|
||||
-H "Cookie: nac_admin_token=<token>"
|
||||
```
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
# 模块02:知识库管理 - 运维日志
|
||||
|
||||
**模块路径**:`/knowledge-base`
|
||||
**前端文件**:`client/src/pages/KnowledgeBase.tsx`
|
||||
**后端路由**:`server/routers.ts` → `knowledgeBase.*`
|
||||
**数据源**:MongoDB(nac_knowledge_engine.compliance_rules)
|
||||
|
||||
---
|
||||
|
||||
## 功能说明
|
||||
|
||||
知识库管理模块负责管理 NAC 合规规则数据库,是 AI 审批引擎的核心知识来源。
|
||||
|
||||
## 数据模型
|
||||
|
||||
```typescript
|
||||
interface ComplianceRule {
|
||||
_id: ObjectId;
|
||||
rule_id: string; // 规则唯一标识,如 "SG-RWA-001"
|
||||
jurisdiction: string; // 司法辖区:SG/HK/CN/AE/EU/US
|
||||
asset_type: string; // 资产类型:real_estate/equity/bond/commodity/fund
|
||||
content: string; // 规则内容(主语言)
|
||||
status: "active" | "inactive";
|
||||
version: string; // 版本号,如 "v2.1"
|
||||
source: string; // 来源机构
|
||||
effective_date: Date; // 生效日期
|
||||
created_at: Date;
|
||||
updated_at: Date;
|
||||
}
|
||||
```
|
||||
|
||||
## API 端点
|
||||
|
||||
| 端点 | 方法 | 说明 |
|
||||
|------|------|------|
|
||||
| `knowledgeBase.list` | Query | 获取规则列表(支持辖区/资产类型/状态筛选)|
|
||||
| `knowledgeBase.create` | Mutation | 创建新规则 |
|
||||
| `knowledgeBase.update` | Mutation | 更新规则内容 |
|
||||
| `knowledgeBase.toggle` | Mutation | 切换规则激活/禁用状态 |
|
||||
| `knowledgeBase.delete` | Mutation | 删除规则(软删除)|
|
||||
|
||||
## 初始数据
|
||||
|
||||
系统初始化时预置了以下司法辖区的合规规则:
|
||||
|
||||
| 辖区 | 规则数 | 说明 |
|
||||
|------|--------|------|
|
||||
| SG(新加坡)| 1 | MAS 监管框架 |
|
||||
| HK(香港)| 1 | SFC 证券及期货条例 |
|
||||
| CN(中国大陆)| 1 | 中国人民银行监管 |
|
||||
| AE(阿联酋)| 1 | ADGM/DIFC 框架 |
|
||||
| EU(欧盟)| 1 | MiCA 法规 |
|
||||
| US(美国)| 1 | SEC 监管框架 |
|
||||
|
||||
## 多语言升级计划(待实施)
|
||||
|
||||
计划升级数据模型,为每条规则添加七种语言内容字段:
|
||||
- `content_zh`:简体中文
|
||||
- `content_en`:英文
|
||||
- `content_ar`:阿拉伯文
|
||||
- `content_ja`:日文
|
||||
- `content_ko`:韩文
|
||||
- `content_fr`:法文
|
||||
- `content_ru`:俄文
|
||||
- `translation_status`:翻译状态(original/ai_translated/human_reviewed)
|
||||
|
||||
## 运维操作
|
||||
|
||||
```bash
|
||||
# 查看知识库数据
|
||||
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
|
||||
--eval "db.compliance_rules.find({}, {rule_id:1, jurisdiction:1, status:1}).pretty()"
|
||||
|
||||
# 统计各辖区规则数
|
||||
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
|
||||
--eval "db.compliance_rules.aggregate([{$group:{_id:'$jurisdiction', count:{$sum:1}}}]).pretty()"
|
||||
```
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
# 模块03:采集器监控 - 运维日志
|
||||
|
||||
**模块路径**:`/crawlers`
|
||||
**前端文件**:`client/src/pages/Crawlers.tsx`
|
||||
**后端路由**:`server/routers.ts` → `crawler.*`
|
||||
**数据源**:MongoDB(nac_knowledge_engine.crawlers)
|
||||
|
||||
---
|
||||
|
||||
## 功能说明
|
||||
|
||||
采集器监控模块管理 NAC 知识引擎的数据采集任务,负责从各司法辖区的监管机构网站自动抓取最新合规规则。
|
||||
|
||||
## 数据模型
|
||||
|
||||
```typescript
|
||||
interface Crawler {
|
||||
_id: ObjectId;
|
||||
name: string; // 采集器名称
|
||||
source_url: string; // 采集源 URL
|
||||
jurisdiction: string; // 目标辖区
|
||||
status: "running" | "stopped" | "error";
|
||||
last_run: Date; // 最后运行时间
|
||||
success_rate: number; // 成功率(0-100)
|
||||
items_collected: number; // 已采集条目数
|
||||
schedule: string; // Cron 表达式
|
||||
created_at: Date;
|
||||
}
|
||||
```
|
||||
|
||||
## 预置采集器(8个)
|
||||
|
||||
| 采集器 | 来源 | 辖区 | 状态 |
|
||||
|--------|------|------|------|
|
||||
| MAS 监管规则采集器 | mas.gov.sg | SG | running |
|
||||
| SFC 合规规则采集器 | sfc.hk | HK | running |
|
||||
| 人民银行规则采集器 | pbc.gov.cn | CN | running |
|
||||
| ADGM 规则采集器 | adgm.com | AE | running |
|
||||
| DIFC 规则采集器 | difc.ae | AE | running |
|
||||
| MiCA 法规采集器 | esma.europa.eu | EU | running |
|
||||
| SEC 规则采集器 | sec.gov | US | running |
|
||||
| FINMA 规则采集器 | finma.ch | CH | stopped |
|
||||
|
||||
## API 端点
|
||||
|
||||
| 端点 | 方法 | 说明 |
|
||||
|------|------|------|
|
||||
| `crawler.list` | Query | 获取采集器列表 |
|
||||
| `crawler.trigger` | Mutation | 手动触发采集任务 |
|
||||
| `crawler.updateConfig` | Mutation | 更新采集器配置 |
|
||||
|
||||
## 运维操作
|
||||
|
||||
```bash
|
||||
# 查看采集器状态
|
||||
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
|
||||
--eval "db.crawlers.find({}, {name:1, status:1, last_run:1, success_rate:1}).pretty()"
|
||||
|
||||
# 查看采集日志
|
||||
journalctl -u nac-admin -n 100 | grep "crawler"
|
||||
```
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
# 模块04:AI 审批案例审查 - 运维日志
|
||||
|
||||
**模块路径**:`/approval-cases`
|
||||
**前端文件**:`client/src/pages/ApprovalCases.tsx`
|
||||
**后端路由**:`server/routers.ts` → `approvalCase.*`
|
||||
**数据源**:MongoDB(nac_knowledge_engine.approval_cases)
|
||||
|
||||
---
|
||||
|
||||
## 功能说明
|
||||
|
||||
AI 审批案例审查模块是 NAC 合规引擎的核心,处理 RWA 资产上链的合规审批流程。AI 自动审批高置信度案例,中风险案例转人工审核。
|
||||
|
||||
## 审批流程
|
||||
|
||||
```
|
||||
RWA 资产申请
|
||||
↓
|
||||
AI 合规引擎分析(ACC-20 协议)
|
||||
↓
|
||||
高置信度(>90%)→ 自动通过/拒绝
|
||||
中风险(60-90%)→ 人工审核队列
|
||||
低置信度(<60%)→ 自动拒绝
|
||||
↓
|
||||
审计日志记录(不可篡改)
|
||||
```
|
||||
|
||||
## 数据模型
|
||||
|
||||
```typescript
|
||||
interface ApprovalCase {
|
||||
_id: ObjectId;
|
||||
case_id: string; // 案例编号,如 "CASE-2026-001"
|
||||
asset_type: string; // 资产类型
|
||||
jurisdiction: string; // 申请辖区
|
||||
applicant: string; // 申请人/机构
|
||||
ai_score: number; // AI 置信度评分(0-100)
|
||||
ai_decision: "approve" | "reject" | "pending_human";
|
||||
human_decision?: "approve" | "reject";
|
||||
status: "pending" | "approved" | "rejected" | "pending_human";
|
||||
risk_factors: string[]; // 风险因素列表
|
||||
timeline: TimelineEvent[]; // 审批时间线
|
||||
created_at: Date;
|
||||
reviewed_at?: Date;
|
||||
reviewer?: string;
|
||||
}
|
||||
```
|
||||
|
||||
## API 端点
|
||||
|
||||
| 端点 | 方法 | 说明 |
|
||||
|------|------|------|
|
||||
| `approvalCase.list` | Query | 获取案例列表(支持状态筛选)|
|
||||
| `approvalCase.review` | Mutation | 人工审核(通过/拒绝)|
|
||||
|
||||
## 运维操作
|
||||
|
||||
```bash
|
||||
# 查看待审案例
|
||||
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
|
||||
--eval "db.approval_cases.find({status:'pending_human'}).count()"
|
||||
|
||||
# 查看审批统计
|
||||
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
|
||||
--eval "db.approval_cases.aggregate([{$group:{_id:'$status', count:{$sum:1}}}]).pretty()"
|
||||
```
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
# 模块05:标签规则治理 - 运维日志
|
||||
|
||||
**模块路径**:`/tag-engine`
|
||||
**前端文件**:`client/src/pages/TagEngine.tsx`
|
||||
**后端路由**:`server/routers.ts` → `tagEngine.*`
|
||||
**数据源**:MongoDB(nac_knowledge_engine.tag_rules, tag_corrections)
|
||||
|
||||
---
|
||||
|
||||
## 功能说明
|
||||
|
||||
标签引擎模块管理 NAC 知识引擎的语义标签体系,为合规规则、资产类型和审批案例提供标准化标签序列,支持 GNACS 资产分类系统。
|
||||
|
||||
## 标签体系
|
||||
|
||||
NAC 使用三层标签体系:
|
||||
1. **一级标签**:资产大类(real_estate/equity/bond/commodity/fund)
|
||||
2. **二级标签**:合规属性(kyc_required/aml_check/accredited_only 等)
|
||||
3. **三级标签**:辖区特定标签(sg_mas_approved/hk_sfc_licensed 等)
|
||||
|
||||
## 数据模型
|
||||
|
||||
```typescript
|
||||
interface TagRule {
|
||||
_id: ObjectId;
|
||||
rule_id: string;
|
||||
name: string;
|
||||
tag_sequence: string[]; // 标签序列
|
||||
asset_types: string[]; // 适用资产类型
|
||||
jurisdictions: string[]; // 适用辖区
|
||||
confidence: number; // 规则置信度
|
||||
status: "active" | "inactive";
|
||||
training_count: number; // 训练样本数
|
||||
created_at: Date;
|
||||
}
|
||||
|
||||
interface TagCorrection {
|
||||
_id: ObjectId;
|
||||
original_tags: string[]; // 原始标签序列
|
||||
corrected_tags: string[]; // 修正后标签序列
|
||||
reason: string; // 修正原因
|
||||
reviewer: string; // 审核人
|
||||
created_at: Date;
|
||||
}
|
||||
```
|
||||
|
||||
## API 端点
|
||||
|
||||
| 端点 | 方法 | 说明 |
|
||||
|------|------|------|
|
||||
| `tagEngine.listRules` | Query | 获取标签规则列表 |
|
||||
| `tagEngine.createRule` | Mutation | 创建新标签规则 |
|
||||
| `tagEngine.correctTag` | Mutation | 提交标签修正(训练数据)|
|
||||
| `tagEngine.listCorrections` | Query | 获取修正记录列表 |
|
||||
|
||||
## 运维操作
|
||||
|
||||
```bash
|
||||
# 查看标签规则
|
||||
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
|
||||
--eval "db.tag_rules.find({status:'active'}, {name:1, tag_sequence:1, confidence:1}).pretty()"
|
||||
|
||||
# 查看修正记录
|
||||
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
|
||||
--eval "db.tag_corrections.find().sort({created_at:-1}).limit(10).pretty()"
|
||||
```
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
# 模块06:协议族注册表 - 运维日志
|
||||
|
||||
**模块路径**:`/protocol-registry`
|
||||
**前端文件**:`client/src/pages/ProtocolRegistry.tsx`
|
||||
**后端路由**:`server/routers.ts` → `protocol.*`
|
||||
**数据源**:MongoDB(nac_knowledge_engine.protocols)
|
||||
|
||||
---
|
||||
|
||||
## 功能说明
|
||||
|
||||
协议族注册表管理 NAC 公链的核心协议,包括 ACC-20、CBPP、CSNP、GNACS、CNNL 等原生协议的版本注册和状态管理。
|
||||
|
||||
## 预置协议(4个活跃)
|
||||
|
||||
| 协议 | 版本 | 说明 | 状态 |
|
||||
|------|------|------|------|
|
||||
| ACC-20 | v2.0 | 资产合规协议 | active |
|
||||
| CBPP | v1.5 | 宪政区块生产协议 | active |
|
||||
| CSNP | v1.2 | 合规安全网络协议 | active |
|
||||
| GNACS | v1.0 | 全球资产分类系统 | active |
|
||||
| CNNL | v0.9 | 宪政神经网络语言 | inactive |
|
||||
|
||||
## 数据模型
|
||||
|
||||
```typescript
|
||||
interface Protocol {
|
||||
_id: ObjectId;
|
||||
protocol_id: string; // 协议标识,如 "ACC-20"
|
||||
name: string; // 协议全名
|
||||
version: string; // 当前版本
|
||||
description: string; // 协议说明
|
||||
trigger_conditions: string[]; // 触发条件
|
||||
status: "active" | "inactive" | "deprecated";
|
||||
registered_at: Date;
|
||||
updated_at: Date;
|
||||
}
|
||||
```
|
||||
|
||||
## API 端点
|
||||
|
||||
| 端点 | 方法 | 说明 |
|
||||
|------|------|------|
|
||||
| `protocol.list` | Query | 获取协议列表 |
|
||||
| `protocol.register` | Mutation | 注册新协议 |
|
||||
| `protocol.toggle` | Mutation | 切换协议状态 |
|
||||
| `protocol.updateVersion` | Mutation | 更新协议版本 |
|
||||
|
||||
## 运维操作
|
||||
|
||||
```bash
|
||||
# 查看协议状态
|
||||
mongosh "mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin" \
|
||||
--eval "db.protocols.find({}, {protocol_id:1, version:1, status:1}).pretty()"
|
||||
```
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
# 模块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';"
|
||||
```
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
# Nginx 配置说明
|
||||
|
||||
**配置文件路径**:`/www/server/panel/vhost/nginx/admin.newassetchain.io.conf`
|
||||
|
||||
## 当前配置
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name admin.newassetchain.io;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name admin.newassetchain.io;
|
||||
|
||||
ssl_certificate /root/ssl/_.newassetchain.io.pem;
|
||||
ssl_certificate_key /root/ssl/_.newassetchain.io.key;
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers HIGH:!aNULL:!MD5;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:9560;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 重要说明
|
||||
|
||||
- `X-Forwarded-Proto $scheme` 必须设置,否则 Express 的 `trust proxy` 无法正确识别 HTTPS 请求,导致 cookie 的 `Secure` 标志判断失败
|
||||
- SSL 证书使用通配符证书 `_.newassetchain.io`,覆盖所有子域名
|
||||
- 服务内部端口为 9560,不对外暴露
|
||||
|
||||
## 常用操作
|
||||
|
||||
```bash
|
||||
# 测试 Nginx 配置
|
||||
nginx -t
|
||||
|
||||
# 重载 Nginx 配置
|
||||
nginx -s reload
|
||||
|
||||
# 查看 Nginx 错误日志
|
||||
tail -f /www/wwwlogs/admin.newassetchain.io.error.log
|
||||
```
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
# 密钥管理说明
|
||||
|
||||
**密钥文件路径**:`/opt/nac/services/nac-admin/.env`
|
||||
|
||||
## 必要密钥列表
|
||||
|
||||
| 环境变量 | 说明 | 示例值 |
|
||||
|----------|------|--------|
|
||||
| `NAC_MYSQL_URL` | MySQL 连接字符串(nac_id 数据库)| `mysql://root:password@localhost:3306/nac_id` |
|
||||
| `NAC_MONGO_URL` | MongoDB 连接字符串(知识引擎数据库)| `mongodb://root:password@localhost:27017/nac_knowledge_engine?authSource=admin` |
|
||||
| `NAC_JWT_SECRET` | JWT 签名密钥(至少32位随机字符串)| `<随机生成>` |
|
||||
|
||||
## .env 文件格式
|
||||
|
||||
```bash
|
||||
NAC_MYSQL_URL=mysql://root:vaingkvf@localhost:3306/nac_id
|
||||
NAC_MONGO_URL=mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin
|
||||
NAC_JWT_SECRET=<生产环境随机密钥>
|
||||
```
|
||||
|
||||
## 密钥管理最佳实践
|
||||
|
||||
1. **不要将密钥写入 systemd 服务文件的 `Environment=` 行**,应使用 `EnvironmentFile=` 指向 `.env` 文件
|
||||
2. **`.env` 文件权限**应设置为 `600`(仅 root 可读):`chmod 600 /opt/nac/services/nac-admin/.env`
|
||||
3. **定期轮换 JWT_SECRET**:每90天更换一次,更换后需要重启服务(所有用户需重新登录)
|
||||
4. **MongoDB 密码**:使用宝塔面板数据库管理界面修改,修改后同步更新 `.env` 文件
|
||||
5. **MySQL 密码**:使用宝塔面板数据库管理界面修改,修改后同步更新 `.env` 文件
|
||||
|
||||
## 密钥迁移步骤(从 systemd 内联迁移到 .env 文件)
|
||||
|
||||
```bash
|
||||
# 1. 创建 .env 文件
|
||||
cat > /opt/nac/services/nac-admin/.env << 'EOF'
|
||||
NAC_MYSQL_URL=mysql://root:vaingkvf@localhost:3306/nac_id
|
||||
NAC_MONGO_URL=mongodb://root:idP0ZaRGyLsTUA3a@localhost:27017/nac_knowledge_engine?authSource=admin
|
||||
NAC_JWT_SECRET=<生产环境随机密钥>
|
||||
EOF
|
||||
|
||||
# 2. 设置文件权限
|
||||
chmod 600 /opt/nac/services/nac-admin/.env
|
||||
chown root:root /opt/nac/services/nac-admin/.env
|
||||
|
||||
# 3. 修改 systemd 服务文件,移除内联密钥,添加 EnvironmentFile
|
||||
# 编辑 /etc/systemd/system/nac-admin.service
|
||||
# 删除所有 Environment=NAC_* 行
|
||||
# 添加 EnvironmentFile=/opt/nac/services/nac-admin/.env
|
||||
|
||||
# 4. 重载并重启
|
||||
systemctl daemon-reload
|
||||
systemctl restart nac-admin
|
||||
|
||||
# 5. 验证服务正常
|
||||
systemctl status nac-admin
|
||||
```
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# systemd 服务配置说明
|
||||
|
||||
**服务文件路径**:`/etc/systemd/system/nac-admin.service`
|
||||
|
||||
## 当前配置
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=NAC Knowledge Engine Admin Console
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=www
|
||||
WorkingDirectory=/opt/nac/services/nac-admin
|
||||
ExecStart=/usr/bin/node dist/index.js
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
Environment=NODE_ENV=production
|
||||
Environment=PORT=9560
|
||||
EnvironmentFile=/opt/nac/services/nac-admin/.env
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
## 重要说明
|
||||
|
||||
密钥通过 `EnvironmentFile` 从 `.env` 文件加载(见 `ops/secrets.md`),不直接写在服务文件中。
|
||||
|
||||
## 常用操作
|
||||
|
||||
```bash
|
||||
# 查看服务状态
|
||||
systemctl status nac-admin
|
||||
|
||||
# 启动/停止/重启服务
|
||||
systemctl start nac-admin
|
||||
systemctl stop nac-admin
|
||||
systemctl restart nac-admin
|
||||
|
||||
# 查看实时日志
|
||||
journalctl -u nac-admin -f
|
||||
|
||||
# 查看最近100行日志
|
||||
journalctl -u nac-admin -n 100
|
||||
|
||||
# 重载 systemd 配置(修改服务文件后执行)
|
||||
systemctl daemon-reload
|
||||
```
|
||||
Loading…
Reference in New Issue