
title: Enable Row Level Security for Multi-Tenant Dataimpact: CRITICALimpactDescription: Database-enforced tenant isolation, prevent data leakstags: rls, row-level-security, multi-tenant, security多租户数据启用行级安全行级安全RLS在数据库层面强制实施数据访问控制确保用户只能看到自己的数据。错误做法仅依赖应用程序层过滤-- 仅依赖应用程序过滤select*fromorderswhereuser_id$current_user_id;-- Bug 或绕过意味着所有数据都会暴露select*fromorders;-- 返回所有订单正确做法数据库强制的 RLS-- 在表上启用 RLSaltertableordersenablerowlevelsecurity;-- 创建策略使用户只能看到自己的订单createpolicy orders_user_policyonordersforallusing(user_idcurrent_setting(app.current_user_id)::bigint);-- 即使表所有者也要强制执行 RLSaltertableordersforcerowlevelsecurity;-- 设置用户上下文并查询setapp.current_user_id123;select*fromorders;-- 只返回用户 123 的订单面向 authenticated 角色的策略createpolicy orders_user_policyonordersforalltoauthenticatedusing(user_idauth.uid());参考行级安全