Row-Level Security (RLS): aislamiento a nivel base de datos
En PostgreSQL se activa así sobre una tabla:
ALTER TABLE clientes ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON clientes
USING (tenant_id = current_setting('app.tenant_id')::uuid);
Desde ese momento, cualquier SELECT, UPDATE o DELETE sobre clientes sólo ve las filas con el tenant_id coincidente. Si el desarrollador olvida el WHERE tenant_id = ?, la DB lo aplica igualmente.
Ventajas:
- Red de seguridad contra fugas cross-tenant por error humano
- Permite a un admin ver cualquier tenant simplemente cambiando el setting
- Separa completamente la lógica de aislamiento del código aplicativo
Por qué importa
RLS es la capa que salva a un SaaS multi-tenant cuando un desarrollador nuevo se incorpora y escribe una query ad-hoc sin el filtro. Sin RLS, un bug puede exponer datos entre clientes; con RLS, la DB rechaza la query directamente.
¿Esto aplica a tu web?
En 10 segundos te decimos cómo está tu sitio respecto a los términos del glosario: Core Web Vitals, schema, seguridad, accesibilidad, SEO técnico.