READ · UNDERSTAND · TRANSFER
阅读理解,按需巩固
先沿着原理、问答和迁移案例阅读。需要检查理解时,再切换巩固练习或展开个人记录。
核心知识 · 租户隔离与执行面的权限连续性
先理解核心原理
先备概念:可信身份、行级权限、控制面与执行面
租户隔离要贯穿读取、缓存、模型上下文、日志、产物与恢复。可信租户来自认证与服务策略,每一次恢复或降级都必须保持同样授权边界。
Demo 的隐含条件会消失
单用户 Demo 常默认所有文档可读、只有一个 worker、错误靠人工盯着。多租户后,相同问题在不同组织有不同答案,资源竞争和日志查询也能泄露。先把身份、数据范围、任务键和配额放到执行入口,再由各访问点强制。
一层 RLS 不覆盖所有副本
数据库 RLS 可以限制行,但超级用户、BYPASSRLS 与通常的表所有者有绕过边界;连接角色必须检查。向量候选、共享缓存、trace 和下载链接是另外的存储路径,同样需要授权。数据进模型之后再过滤最终回答,已经太晚。
恢复与控制故障也会越界
旧备份可能复活已删除正文,旧权限缓存可能让执行继续。恢复在隔离环境重放当前删除与权限信息;控制面不可用时只能按明确期限使用仍可信策略,敏感许可不明则暂停。下面架构是教学建议,未实现完整平台或验证任何合规义务。
回到问题:怎样回答?
先明确服务对象、任务风险与服务目标,再补可信身份、租户隔离、任务持久化、工具网关、配额、审计和评测发布。控制面管理配置与策略,执行面负责受限运行,数据按租户与权限范围隔离。优先交付一种可验证的任务闭环,证明可靠性和单位成本,再扩展功能;不以微服务数量或接入模型数量衡量平台成熟度。
实现与取舍
先问约束而不是画满组件
确认交互还是批量任务、峰值并发、平均执行时长、数据敏感级别、写动作范围和恢复目标。把这些转成任务完成时限、队列等待、预算和恢复要求。没有这些信息,无法决定是否需要独立调度、强隔离执行环境或区域部署。
控制面与执行面职责
控制面保存租户配置、模型与工具版本、权限、配额、发布和审计;执行面领取任务、加载固定配置、执行模型与工具并提交状态。模型不得修改自己的授权策略。工具网关统一实施参数、身份和副作用控制,任务存储记录检查点、事件与操作回执。必要的外部连接失败要有可检测降级。
数据和容量隔离
数据库、对象存储、索引、缓存、日志和临时工作区都要验证租户边界,不能只在业务表加 tenant_id。按租户限额与公平调度,供应商限流通过背压传到入口。备份恢复、删除和权限撤销覆盖派生数据,恢复旧备份不能把已删除内容重新开放。
逐步验收
第一阶段选一个只读任务完成鉴权、可观测和成本闭环;第二阶段引入可审批的写动作与故障恢复;再加入更多租户和任务类型。每阶段用隔离、故障、容量和质量测试验证。平台需要故障演练、回滚和运营指标,而不是一份所有流行组件都出现的架构图。
工程推演
- 场景
- 面试假设:内部单用户 Demo 要卖给多家企业,支持知识查询和报告发布。
- 设计决策
- 先建立租户身份与只读闭环,再逐步加入受审写动作。
- 验证目标
- 跨租户访问被阻止,任务成本和恢复路径可核对。
- 适用边界
- 部署结构应按容量与风险选择,不能预设所有团队都需要微服务。
连续追问与解答
沿着问题的前提和约束继续向下读。先理解参考解答,再尝试收起答案,用自己的话解释因果和取舍。
第 1 层日志和向量索引如何隔离?
隔离要覆盖数据库之外的日志和向量资料副本。
参考解答
入口从可信会话取得租户,索引候选在进入重排和模型前执行权限过滤,缓存键和产物引用携带作用域。日志查询与导出也要鉴权和最小正文保留;可按风险物理分区,但物理分区不能替代正确身份,需测试跨租户同名资源。
第 1 层恢复旧备份为什么可能违反删除要求?
持久平台必须检查恢复是否重新引入已删除数据。
参考解答
备份保存的是历史状态,可能包含当时合法、后来已删除的数据。恢复后先在隔离环境叠加最新删除标记、权限撤销和保留策略,再重建索引与缓存,核对旧正文未被重新服务。具体删除要求依业务与适用政策确认,不编造法律结论。
沿着这个回答继续深入
第 2 层删除账本也只保存在同一旧备份里,能保证恢复不复活数据吗?
父问叠加当前删除记录,子问让当前记录也不可得。
参考解答
不能。需要从可信的更新记录或独立保留机制获得备份之后的删除事实;若无法取得,恢复只能进入隔离待核查。说明能证明的时间范围,不把历史账本当当前状态。删除标识本身也需最小化并按政策管理。
沿着这个回答继续深入
第 3 层为了排障恢复旧向量索引,是否可以只禁止用户查询?
父问要求隔离恢复,继续检查隔离是否覆盖非前端消费者。
参考解答
还需限制后台、评测、模型与日志导出等所有消费者,恢复过程不携带不必要凭证。禁止一个前端入口不能证明内容不会再进入模型。核对删除传播后再开放索引,留下范围和检查记录。
第 1 层控制面不可用时执行面能做什么?
控制面故障时仍需明确执行面的可用性边界。
参考解答
按已发布策略版本及有效期执行已允许的低风险任务,限制新配置与权限扩大;撤销状态无法确认时暂停敏感访问与写入。控制面失联不能让执行面自动放宽校验。保留运行政策版本和停机原因,恢复后重新对齐。
举一反三:条件变了,怎样推导?
先找出改变的条件,再判断原方案中哪些前提仍成立。下面的案例是教学推演,便于将原理迁移到新问题。
公开资料与私人资料混合
改变的条件:用户需同时查询共享知识和租户事实。
延伸问题:是否所有数据都要复制到每个租户?
推导与参考解答
可共享公开且明确可复用资料,私人候选在入模型前按授权隔离;回答与引用必须说明来源,最终缓存不能混入私人事实后共享。设计共享层与私有层的合并边界,测试同名资源和不同权限的结果。
保持不变的原理:每条证据都必须在当前主体允许范围内。
控制面停机而任务仍在跑
改变的条件:授权更新与策略获取暂时中断。
延伸问题:能直接使用无限期本地许可吗?
推导与参考解答
不应。按预先定义的策略有效期和风险降级,低风险可有限继续,敏感访问未知则暂停。配额与执行预算仍强制,外部动作对账不中断留账;恢复后重新校验待执行动作,不能用可用性理由扩权。
保持不变的原理:故障恢复与降级不改变授权边界。
易错点
- 只在主表加 tenant_id
- 先拆几十个微服务
- 用工具接入数量衡量成熟度
参考资料
依据公开技术资料设计;参考资料支持技术机制,场景与评分标准为本站设计,不代表某公司面试原题。 新增问答与迁移案例用于原理讲解,来源核查与案例运行验证分别记录。
检查自己理解到哪一步
读完后可以对照这些标准解释原理、边界和取舍。掌握程度由你自评;需要进一步验证时,再完成下方小任务。
- 基础达标
- 列出身份、持久化、权限和监控必要层。
- 中高级信号
- 说明控制执行分工、派生数据隔离与配额。
- 资深信号
- 按可验收阶段交付并处理备份、背压及策略不可用。
巩固练习 按需完成 · 建议 15 分钟
给 50 个租户的知识问答与发布平台画职责图,并列出第一阶段验收。
展开验收要求与检查点
- 每个数据面有隔离方式
- 权限决策来自可信服务
- 阶段目标可以测试
重点检查
- 从服务目标推导架构
- 控制策略不由模型自行更改
- 隔离覆盖派生数据与执行环境