SAG / ARCHITECTURE NOTE

RBAC 与 tenant 边界:在界面之外完成权限检查

结合研究和官方文档,说明 RBAC 的定义与必要性、工作原理、SAG 架构中的应用标准及实用检查清单。

下载Markdown

一句话定义

RBAC 是一种权限模型,在服务器和数据库中强制执行按角色划分的允许操作以及数据所有权边界。

核心答案:仅隐藏按钮无法阻止直接调用 API。如果信任客户端发送的 tenant ID,就有访问其他客户数据的风险。

为什么需要这项技术?

仅隐藏按钮无法阻止直接调用 API。如果信任客户端发送的 tenant ID,就有访问其他客户数据的风险。

工作原理

服务器查询会话和 membership,并验证资源所属的 tenant。数据库 RLS 和复合外键为防止错误提供了额外边界。

设计时不能只考虑准确性。还必须同时定义延迟、成本、数据边界、更新周期以及失败时的行为,才能在生产环境中得到可复现的结果。自动化无法确定的值,不应改成 0 或成功状态;将其保留为未测量或需要审核的状态更为安全。

与 SAG 技术的关联

SAG 将平台角色与客户角色分开,并在每次请求时检查 membership。它不信任 client tenant header,并通过 DB 约束阻止跨 tenant 引用。

实用检查清单

  • 对读取和写入都检查所有权
  • 确认权限降低后是否从下一次请求起生效
  • 使用跨 tenant ID 进行失败测试
  • 将失败、空结果和权限错误的状态与成功区分开
  • 在变更前后以相同条件重新验证

研究与官方文档

参考文档为原理和建议提供依据。它们不保证搜索曝光、AI 提及、排名或收入;实际应用效果应通过服务数据和相同条件下的观测来确认。

同时确认适用 RLS 的执行角色

即使配置了 RLS 策略,表所有者或 BYPASSRLS 角色也可能绕过策略。SAG 的服务器端 membership 与 tenant 条件检查会独立保留。必须同时确认数据库连接角色和策略是否生效,才能判断隔离范围。

按主题分类的技术参考

如何继续了解这项技术

了解 tenant 权限、任务重试、缓存和审批记录。

文章列表