Построчная безопасность (RLS)
Авторизация на уровне отдельных строк, встроенная в PostgreSQL с версии 9.5. База сама отфильтровывает строки, которые пользователю видеть нельзя, какой бы запрос ни прислало приложение.
RLS включают для таблицы и затем пишут политики: выражение USING определяет, что можно читать, а WITH CHECK — что можно записывать. Условие подмешивается в запрос планировщиком, так что забытый где-то в приложении WHERE tenant_id = … больше не приводит к утечке. Чаще всего это применяют в мультиарендных системах: политика сравнивает владельца строки с переменной сессии, заданной при подключении. Три вещи удивляют: владелец таблицы по умолчанию обходит собственные политики, если не указан FORCE; политики могут испортить планы запросов, так как ограничивают свободу оптимизатора; а функции без пометки LEAKPROOF теоретически позволяют вывести скрытое содержимое.