PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Por que a segurança em nível de linha não está habilitada para exibições do Postgres?


Basicamente porque não foi possível alterar retroativamente como as visualizações funcionam. Eu gostaria de ser compatível com SECURITY INVOKER (ou equivalente) para visualizações, mas, até onde sei, esse recurso não existe atualmente.

Você pode filtrar o acesso à própria visualização com segurança de linha normalmente.

As tabelas acessadas pela view também terão suas regras de segurança de linha aplicadas. No entanto, eles verão o current_user como o criador da visualização porque as visualizações acessam tabelas (e outras visualizações) com os direitos do usuário que criou/possui a visualização.

Talvez valha a pena levantar isso em pgsql-hackers se você estiver disposto a intervir e ajudar no desenvolvimento do recurso que você precisa, ou pgsql-general caso contrário?

Dito isso, enquanto as visualizações acessam as tabelas como o usuário criador e alteram current_user portanto, eles não impedem que você use GUCs personalizados, o session_user , ou outras informações contextuais em políticas de segurança de linha. Você pode usar a segurança de linha com visualizações, mas não (utilmente) para filtrar com base em current_user .