Mecanismo de seguridad en bases de datos que restringe qué filas puede ver o modificar cada usuario mediante políticas definidas a nivel de base de datos, de forma transparente para la aplicación.
RLS (Row Level Security) actúa como un filtro automático que la base de datos aplica a cada consulta antes de devolver los resultados, sin necesidad de modificar el código de la aplicación. Es especialmente útil en arquitecturas multi-tenant (SaaS), donde distintos clientes comparten las mismas tablas pero solo deben acceder a sus propios datos. También se usa para control de acceso interno: por departamento, rol o usuario. En PostgreSQL se habilita con ALTER TABLE ... ENABLE ROW LEVEL SECURITY y se definen reglas con CREATE POLICY. Al centralizar la seguridad en la base de datos se evitan fugas de datos por olvidos de filtros en la capa de aplicación.
-- Habilitar RLS en la tabla ALTER TABLE facturas ENABLE ROW LEVEL SECURITY; -- Crear política: cada usuario solo ve sus propias facturas CREATE POLICY ver_propias_facturas ON facturas FOR SELECT USING (tenant_id = current_setting('app.tenant_id')::uuid); -- A partir de aquí, cualquier SELECT filtra automáticamente por tenant SELECT * FROM facturas; -- Solo devuelve las del tenant actual