PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Dlaczego zabezpieczenia na poziomie wiersza nie są włączone dla widoków Postgres?

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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać identyfikatorów UUID w SQLAlchemy?

  2. Jak przekazać ciąg znaków z ' ' (timestamp) w przygotowanym oświadczeniu?

  3. Błąd podczas importowania CSV do postgresa za pomocą pythona i psycopg2

  4. pg-promise:użyj wyniku jednego zapytania w następnym zapytaniu w ramach transakcji

  5. psycopg2 + pgbouncer. Tryb asynchroniczny z błędem gevent