Row-Level Security en Postgres para aplicaciones multi-tenant

En todos los SaaS multi-tenant en los que he trabajado, tarde o temprano ocurre el mismo incidente: un developer olvida una cláusula WHERE tenant_id = $1 en una query nueva, y de repente el tenant A puede ver las facturas del tenant B. El code review atrapa la mayoría de estos casos, pero no todos — y "la mayoría" no es suficiente cuando los datos son PII de clientes o registros financieros.

La solución no es más disciplina. Es sacar el aislamiento de tenants del código de la aplicación y llevarlo a la propia base de datos. Row-Level Security (RLS) de Postgres te permite definir políticas que filtran filas automáticamente, de modo que incluso una query con un WHERE faltante no puede filtrar datos entre tenants. No es una bala de plata, pero es lo más cercano a eso para este problema en particular.