feat(types): 添加express.d.ts类型引用 style: 格式化express.d.ts中的接口定义 refactor: 移除未使用的AntFC类型导入 chore: 删除自动生成的.umi-production文件 feat: 添加店铺管理相关表和初始化脚本 docs: 更新安全规则和交互指南文档 refactor: 统一使用FC类型替代React.FC perf: 优化图表组件导入方式 style: 添加.prettierrc配置文件 refactor: 调整组件导入顺序和结构 feat: 添加平台库存管理路由 fix: 修复订单同步时的库存检查逻辑 docs: 更新RBAC设计和租户管理文档 refactor: 优化部门控制器代码
213 lines
5.0 KiB
Markdown
213 lines
5.0 KiB
Markdown
# 安全规则
|
||
|
||
> **入口**: [_index.md](_index.md)
|
||
|
||
---
|
||
|
||
## 1. RBAC模型
|
||
|
||
### 1.1 预设角色
|
||
|
||
| 角色 | 权限范围 | 说明 |
|
||
|------|---------|------|
|
||
| **ADMIN** | 全部 | 系统管理员 |
|
||
| **MANAGER** | 部门级 | 运营主管 |
|
||
| **OPERATOR** | 个人级 | 运营专员 |
|
||
| **FINANCE** | 财务级 | 财务主管 |
|
||
| **SOURCING** | 采购级 | 采购专家 |
|
||
| **LOGISTICS** | 物流级 | 物流专家 |
|
||
| **ANALYST** | 只读 | 数据分析师 |
|
||
|
||
### 1.2 角色权限矩阵
|
||
|
||
| 操作类型 | OPERATOR | MANAGER | FINANCE | ADMIN |
|
||
|---------|----------|---------|---------|-------|
|
||
| 查看数据 | ✅ 自己 | ✅ 部门 | ✅ 财务 | ✅ 全部 |
|
||
| 创建数据 | ✅ | ✅ | ✅ | ✅ |
|
||
| 修改数据 | ✅ 自己 | ✅ 部门 | ✅ 财务 | ✅ 全部 |
|
||
| 删除数据 | ❌ | ✅ 部门 | ✅ 财务 | ✅ 全部 |
|
||
| 审批操作 | ❌ | ✅ 低风险 | ✅ 中风险 | ✅ 全部 |
|
||
| 系统配置 | ❌ | ❌ | ❌ | ✅ |
|
||
|
||
---
|
||
|
||
## 2. 数据隔离
|
||
|
||
### 2.1 隔离层级
|
||
|
||
```
|
||
租户隔离 (Tenant)
|
||
└── 组织隔离 (Organization)
|
||
└── 部门隔离 (Department)
|
||
└── 团队隔离 (Team)
|
||
└── 个人隔离 (Self)
|
||
```
|
||
|
||
### 2.2 数据范围类型
|
||
|
||
| 范围 | 英文 | 说明 |
|
||
|------|------|------|
|
||
| 仅自己 | SELF | 只看自己创建的数据 |
|
||
| 本团队 | TEAM | 看自己团队的数据 |
|
||
| 本部门 | DEPT | 看自己部门的数据 |
|
||
| 本组织 | ORG | 看整个公司的数据 |
|
||
| 全平台 | ALL | 超管,看所有租户数据 |
|
||
|
||
### 2.3 查询过滤实现
|
||
|
||
```typescript
|
||
// Service层实现数据隔离
|
||
async listOrders(ctx: Context, params: ListParams) {
|
||
const { tenantId, dataScope, parentId } = ctx.state.user;
|
||
|
||
const query = db('cf_order').where('tenant_id', tenantId);
|
||
|
||
switch (dataScope) {
|
||
case 'SELF':
|
||
query.where('created_by', ctx.state.user.id);
|
||
break;
|
||
case 'TEAM':
|
||
query.where('team_id', parentId);
|
||
break;
|
||
case 'DEPT':
|
||
query.where('dept_id', parentId);
|
||
break;
|
||
case 'ORG':
|
||
// 已通过 tenant_id 过滤
|
||
break;
|
||
case 'ALL':
|
||
// 超管,不过滤
|
||
break;
|
||
}
|
||
|
||
return query;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 3. 操作风险等级
|
||
|
||
### 3.1 风险分级
|
||
|
||
| 等级 | 操作类型 | 最低审核权限 | 自动执行 |
|
||
|------|---------|-------------|---------|
|
||
| **低风险** | 库存预警、数据同步 | OPERATOR | ✅ 允许 |
|
||
| **中风险** | 定价调整、广告投放 | MANAGER | ✅ 高置信度允许 |
|
||
| **高风险** | 退款审批、合同签订 | FINANCE | ❌ 禁止 |
|
||
| **极高风险** | 大额转账、系统配置 | ADMIN | ❌ 禁止 |
|
||
|
||
### 3.2 AI决策权限
|
||
|
||
```typescript
|
||
interface AIDecisionPermission {
|
||
module: string;
|
||
action: string;
|
||
riskLevel: 'low' | 'medium' | 'high' | 'critical';
|
||
minReviewerRole: 'OPERATOR' | 'MANAGER' | 'FINANCE' | 'ADMIN';
|
||
autoExecute: boolean;
|
||
autoExecuteConfidence: number; // 0.0 - 1.0
|
||
requireDualApproval: boolean;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 4. 决策流程门禁
|
||
|
||
### 4.1 状态流转
|
||
|
||
```
|
||
SUGGESTED → PENDING_REVIEW → EXECUTED/REJECTED
|
||
```
|
||
|
||
### 4.2 强制规则
|
||
|
||
| 规则 | 说明 |
|
||
|------|------|
|
||
| **禁止** | Agent 直接修改核心业务数据 |
|
||
| **必须** | 人工在 Console 端确认后方可执行 |
|
||
| **必须** | 所有决策记录审计日志 |
|
||
|
||
### 4.3 核心业务数据
|
||
|
||
- 价格调整
|
||
- 退款审批
|
||
- 订单创建
|
||
- 合同签订
|
||
- 大额转账
|
||
|
||
---
|
||
|
||
## 5. 审计日志
|
||
|
||
### 5.1 必须记录
|
||
|
||
| 字段 | 说明 |
|
||
|------|------|
|
||
| `operator_id` | 操作人ID |
|
||
| `operator_role` | 操作人角色 |
|
||
| `action` | 操作类型 |
|
||
| `target_type` | 目标类型 |
|
||
| `target_id` | 目标ID |
|
||
| `before_value` | 操作前值 |
|
||
| `after_value` | 操作后值 |
|
||
| `trace_id` | 链路追踪ID |
|
||
| `created_at` | 操作时间 |
|
||
|
||
### 5.2 日志保留
|
||
|
||
| 日志类型 | 保留期限 |
|
||
|---------|---------|
|
||
| 登录日志 | 90天 |
|
||
| 操作日志 | 180天 |
|
||
| 审计日志 | 365天 |
|
||
| 异常日志 | 30天 |
|
||
|
||
---
|
||
|
||
## 6. 敏感数据处理
|
||
|
||
### 6.1 敏感字段
|
||
|
||
| 字段类型 | 处理方式 |
|
||
|---------|---------|
|
||
| 密码 | 加密存储,禁止明文 |
|
||
| 手机号 | 脱敏显示 `138****1234` |
|
||
| 银行卡 | 脱敏显示 `**** **** **** 1234` |
|
||
| 身份证 | 脱敏显示 `110***********1234` |
|
||
| API密钥 | 加密存储,禁止日志输出 |
|
||
|
||
### 6.2 禁止行为
|
||
|
||
```typescript
|
||
// ❌ 禁止
|
||
console.log('API Key:', apiKey);
|
||
logger.info('User password:', password);
|
||
ctx.body = { password: user.password };
|
||
|
||
// ✅ 正确
|
||
logger.info('API Key: ***');
|
||
ctx.body = { password: '***' };
|
||
```
|
||
|
||
## 7. 安全增强
|
||
|
||
### 7.1 安全措施
|
||
|
||
- **密码策略**:强密码要求和定期更换
|
||
- **双因素认证**:管理员账号强制开启2FA
|
||
- **登录异常检测**:异常登录行为的监控和预警
|
||
- **权限边界检查**:防止权限提升攻击
|
||
|
||
### 7.2 性能优化
|
||
|
||
- **用户数据缓存**:提高用户信息查询速度
|
||
- **批量操作支持**:批量添加、更新用户
|
||
- **分页优化**:大数据量用户列表的高效展示
|
||
- **异步处理**:用户导入等耗时操作的异步处理
|
||
|
||
---
|
||
|
||
*最后更新: 2026-03-29*
|