Zasadniczo dlatego, że nie można było wstecznie zmienić sposobu działania widoków. Chciałbym mieć możliwość obsługi SECURITY INVOKER
(lub równoważne) dla widoków, ale o ile wiem, taka funkcja obecnie nie istnieje.
Możesz normalnie filtrować dostęp do samego widoku z zabezpieczeniami wierszy.
Tabele, do których uzyskuje dostęp widok, będą również miały zastosowane reguły zabezpieczeń wierszy. Jednak zobaczą current_user
jako twórca widoków ponieważ widoki uzyskują dostęp do tabel (i innych widoków) z prawami użytkownika, który utworzył/jest właścicielem widoku.
Może warto byłoby zgłosić to hakerom pgsql, jeśli chcesz wkroczyć i pomóc w rozwoju potrzebnej funkcji, lub pgsql-general w inny sposób?
To powiedziawszy, podczas gdy przegląda dostęp do tabel jako użytkownik tworzący i zmienia current_user
w związku z tym nie uniemożliwiają korzystania z niestandardowych GUC, session_user
lub inne informacje kontekstowe w wierszach zasad zabezpieczeń. Możesz używać zabezpieczeń wierszy z widokami, ale nie (przydatne) do filtrowania na podstawie current_user
.