什么是行级安全?
行级安全(RLS)是一项数据库功能,它逐行决定每位用户被允许读取或修改哪些记录,因此即使应用请求更多数据,客户也只能看到自己的订单。
如果没有它,“用户只能看到自己的数据”这一规则就存在于应用的代码中。只要某个界面或API忘记检查,私人数据就可能泄露。
使用行级安全时,规则存在于数据库本身。你可以编写这样的策略:“只有当orders表中行的customer_id与已登录用户匹配时,该行才可见”,数据库会对每次查询都应用该策略。
Postgres支持行级安全,一些后端服务也大量依赖它,因为它们的应用直接从浏览器与数据库通信。在这类架构中,没有策略的表可能被任何人读取。
行级安全只是一层保护,而非唯一的保护。应用仍然需要完善的登录、服务器端检查,以及对管理员访问的谨慎处理。
示例
- 门户中的客户只能看到自己的文档
- 工具中的每个团队只能看到自己的项目
常见问题
我需要行级安全吗?
如果你的应用为众多用户存储私人数据,并且其中任何部分直接从浏览器查询数据库,那就需要。如果所有访问都通过会检查权限的后端,那么行级安全只是额外的安全网。
行级安全和角色是一回事吗?
不是。角色描述某人属于哪一类用户,例如管理员或普通成员。行级安全则利用用户ID或角色等信息,决定他们可以访问哪些具体的行。
另请参阅
Mythex · Pricing · 用 AI 构建任何东西 · 网站和应用模板 · Mythex 对比 · AI 应用构建术语表 · 免费的 AI 应用构建工具 · English