Segurança em nível de linha
Autorização por linha embutida no PostgreSQL desde a versão 9.5. O banco filtra as linhas que o usuário não pode ver, seja qual for a consulta que a aplicação enviar.
Você habilita o recurso por tabela e depois escreve políticas com uma expressão USING para o que pode ser lido e uma expressão WITH CHECK para o que pode ser escrito. A condição é costurada na consulta pelo planejador, o que significa que um WHERE tenant_id = … esquecido em algum ponto da aplicação deixa de vazar dados. O uso mais comum é justamente o caso multi-tenant, em que a política compara o dono da linha com uma variável de sessão definida na conexão. Três coisas surpreendem: o dono da tabela ignora as próprias políticas por padrão, a menos que se use FORCE; as políticas podem arruinar planos de execução, porque limitam o que o otimizador pode reordenar; e funções não marcadas como LEAKPROOF podem, em teoria, ser usadas para deduzir o conteúdo oculto.