第 10 章 · 共 16 章
系统、数据与权限
10.1 多租户首先是组织与数据边界
一个租户可以包含多个品牌、法人、区域与门店,但必须明确哪些对象共享、哪些隔离、谁能跨组织查看、变更何时生效。把客户公司名直接写入访问规则会在改名、并购或同名时失效;权限应基于稳定主键、角色、属性和批准的关系版本。
图 7:权限不是一张“管理员/普通用户”表,而是主体、角色、对象范围、动作、有效期、批准和日志的组合。
10.2 权限模型的八字段
| 字段 | 例子 | 控制目的 |
|---|---|---|
| 主体 | user_id或服务账号 | 不共用账号 |
| 身份来源 | 客户IdP、本地受控账户 | 可验证、可撤销 |
| 角色 | 门店经理、区域复核、总部管理员 | 职责模板化 |
| 对象范围 | 指定品牌/区域/门店 | 防横向越权 |
| 动作 | 查、建、批、导出、删 | 最小权限 |
| 条件 | 时间、设备、MFA、工单 | 高风险附加控制 |
| 有效期 | 开始/到期 | 临时权限自动回收 |
| 证据 | 请求、批准、执行、复核日志 | 可审计与追责 |
高风险动作应分开:规则发布、批量导入、会员导出、角色授权、账单调整、生产配置、密钥查看、数据删除。客户业务管理员可以批准门店角色,却不应批准供应商工程师访问生产会员数据;供应商支持可以查看技术元数据,不应默认查看客户业务内容。
10.3 五类服务账号
| 服务账号 | 使用场景 | 凭据控制 | 日志与复核 |
|---|---|---|---|
| 部署账号 | 发布应用与配置 | 流水线短期令牌 | 版本、审批、结果 |
| 集成账号 | 客户系统/API | 每租户独立密钥和范围 | 调用、错误、轮换 |
| 迁移账号 | 批量导入 | 项目期限定、禁交互登录 | 批次、字段、删除暂存 |
| 支持账号 | 批准的排障 | JIT、MFA、工单绑定 | 会话录制/命令日志 |
| 备份恢复账号 | 恢复演练 | 双人授权、离线保护 | 恢复点、校验、销毁 |
服务账号不得由离职员工邮箱持有,也不得跨租户共享同一永久密钥。接口密钥泄露时,应能独立轮换而不让全部客户停服。
10.4 数据清单从目的开始
| 数据域 | 典型字段 | 目的 | 敏感/风险线索 | 最小化动作 |
|---|---|---|---|---|
| 员工与用户 | 姓名、岗位、账号、门店 | 身份和任务 | 身份、行为日志 | 不收无关证件字段 |
| 供应商 | 联系人、资质、批次 | 采购与风险 | 联系方式、证照 | 分离个人联系人与企业资料 |
| 会员 | 联系方式、消费、同意 | 会员服务与触达 | 联系、行为、可能画像 | 令牌化、目的分区、退订 |
| 门店经营 | 订单汇总、库存、损耗 | 运营分析 | 商业秘密 | 聚合、分级授权 |
| 食品安全 | 检查、照片、整改 | 客户责任留痕 | 现场人员/位置 | 控拍摄范围、保留期 |
| 运维安全 | IP、设备、日志、告警 | 安全和可用 | 标识符、访问轨迹 | 访问受限、独立留存规则 |
同一字段在不同目的下边界不同。手机号用于登录验证,不自动获得营销触达目的;门店摄像截图用于异常证据,不应顺便训练模型;支持工单中出现客户数据,应按生产数据同等级控制,不因复制到工单而降级。
10.5 数据生命周期与可验证删除
删除证明不能只写“账号已关闭”。应列对象和范围、生产删除时间、搜索索引/缓存/消息队列处理、备份到期机制、依法或因争议保留的例外、分包商完成情况、执行人与复核人、抽样查询结果。客户数据若被匿名化用于产品统计,应证明不能合理回到个人/租户,并在合同和说明中交代用途;简单去掉姓名往往不够。
10.6 接口可靠性和账单可靠性共用事件控制
每个业务事件有 event_id、租户、对象、源版本、业务时间、接收时间、幂等键、处理状态和重放链。恰好一次传输难以仅靠网络保证,业务上应设计“至少一次发送+幂等处理+可重放+对账”。若重复门店启用事件既开了两份权限又生成两条计费,说明产品和Billing没有共享幂等规则。
| 对账 | 正常关系 | 异常例子 | 处理 |
|---|---|---|---|
| 源系统—集成 | 发送数=接收+明确拒绝 | 事件丢失 | 查游标、重放 |
| 集成—产品 | 成功对象=目标状态变化 | 重复创建门店 | 幂等合并、保留链 |
| 产品—权利 | 已启用≤合同权利 | 未购模块开放 | 撤权、查控制 |
| 权利—Billing | 生效数量=计费数量 | 降配未入账 | 冻结、按订单重算 |
| Billing—ERP | 账单=发票/应收调整 | 红冲只在一端 | 关联原单、同步凭证 |
10.7 发布、特性开关与租户配置
代码版本、数据库模式、租户配置、规则版本和特性开关是五类不同变更。代码回滚不一定回滚配置;关闭特性不一定恢复已迁移数据。变更计划必须写各层版本、兼容性、灰度租户、数据迁移、监控、回退触发和客户沟通。禁止用生产客户作为未声明测试环境。
10.8 备份与恢复按客户业务验证
“备份成功”只说明任务执行,不证明可以恢复。恢复演练至少选一个租户、一个行业对象链和一个权限场景:恢复门店、模板、任务、异常和证据;校验对象关系与版本;确认客户管理员能查但其他租户不能查;记录RPO/RTO实际值;删除演练副本。对食安记录等客户关键证据,还要确认导出和时间线完整。
10.9 权限复核从变化事件出发
季度全量确认名单容易沦为“全部保留”。更有效的复核先抓变化:入职、离职、调店、兼岗、加盟转直营、品牌并购、项目结束、支持工单关闭和高权限到期。系统生成“原范围—新范围—差异—原因—批准—实际执行”记录;客户管理员确认业务必要性,供应商安全抽样高风险与跨组织权限。
| 复核样本 | 预期 | 异常 | 修复出口 |
|---|---|---|---|
| 离职用户 | 账号、会话、密钥按时撤销 | 仅HR停用、产品会话仍活跃 | 全链撤销+回放测试 |
| 调店用户 | 旧店失权、新店按批准得权 | 同时保留两区 | 差异批准或撤权 |
| 临时支持 | 工单结束自动到期 | 永久支持账号 | JIT改造和历史抽样 |
| 批量导出权 | 少数授权岗位且MFA | 普通门店经理可导出 | 收回、查日志、通知判断 |
| 服务账号 | 独立主体、最小范围、定期轮换 | 多客户共用密钥 | 分租户轮换与隔离 |
10.10 数据导出要有“批准前、执行中、到期后”三段控制
批准前核目的、字段、对象范围、接收人、格式、加密、期限和替代方案;执行中使用一次性任务、速率/数量阈值、校验和和完整日志,不让工程师下载到个人设备;到期后确认接收、删除暂存、撤销链接和关闭权限。若导出用于监管报送或客户审计,仍由客户确认内容正确,供应商只证明系统如何生成。
10.11 租户级“爆炸半径预算”
架构评审不只问可用性,还要问一次错误最多影响多少租户、门店、数据和时间。配置发布优先单租户/小批灰度;消息和接口有租户配额;数据库查询带强制租户谓词和测试;后台任务能按租户暂停;密钥和备份按边界隔离;事件看板能迅速列受影响租户。共享基础设施可以提高效率,但必须有逻辑隔离、限额和证据,不能把“多租户”当成所有客户共用一个管理员账户。
10.12 日常运行手册的交接标准
每个关键作业写触发、前提、输入、步骤、验证、回退、升级、证据和权限。新人应在非生产环境独立完成一次门店启用、一次接口重放、一次账单重跑、一次权限撤销和一次租户导出;原岗位只观察不代做。只有别人能按手册复现,知识才从个人经验转成组织能力。
章末理解检查
合上原文,你能讲明白了吗?
不看原文,用自己的话解释「系统、数据与权限」真正要解决什么业务问题。
已输入 0 个字,还需 12 个字;提交后会显示自检标准,并把本章记为已完成。