# 安全规则 > **入口**: [_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: '***' }; ``` --- *最后更新: 2026-03-22*