Existe alguma vantagem funcional ou perda de desempenho ao usar RLS na tabela em vez de usar uma condição em uma exibição dessa tabela (enquanto oculta a tabela)?
Parece-me que, em vez de usar RLS em uma tabela, o que é necessário posteriormente em algumas visualizações, as visualizações podem ser limitadas em sua condição where, sem conceder nenhum acesso direto à tabela.
Existe alguma recomendação geral sobre onde escolher RLS e onde NÃO escolher RLS em favor da condição tradicional?
As diferenças entre segurança em nível de linha e uma exibição com uma
WHERE
condição apropriada são:restrições em uma definição de exibição não se aplicam quando você consulta a tabela subjacente diretamente
a segurança em nível de linha pode especificar uma política para modificações de dados, sem a necessidade de especificar um gatilho
Observe que uma exibição que restringe o acesso aos dados subjacentes só será segura se você definir a
security_barrier
opção.Concordo com sua suspeita de que, em muitos casos, pode não importar muito se você está usando uma
security_barrier
view ou row-level security. Em tais casos, use apenas o que for mais natural ou mais simples para o caso de uso em questão.