PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Pourquoi la sécurité au niveau des lignes n'est-elle pas activée pour les vues Postgres ?

Essentiellement parce qu'il n'était pas possible de modifier rétroactivement le fonctionnement des vues. J'aimerais pouvoir prendre en charge SECURITY INVOKER (ou équivalent) pour les vues, mais pour autant que je sache, aucune fonctionnalité de ce type n'existe actuellement.

Vous pouvez filtrer l'accès à la vue elle-même avec la sécurité des lignes normalement.

Les tables auxquelles accède la vue verront également leurs règles de sécurité de ligne appliquées. Cependant, ils verront le current_user en tant que créateur de vue car les vues accèdent aux tables (et aux autres vues) avec les droits de l'utilisateur qui a créé/possède la vue.

Peut-être que cela vaudrait la peine d'en parler à pgsql-hackers si vous êtes prêt à intervenir et à aider au développement de la fonctionnalité dont vous avez besoin, ou à pgsql-general sinon ?

Cela dit, tandis que les vues accèdent aux tables en tant qu'utilisateur créateur et changent current_user par conséquent, ils ne vous empêchent pas d'utiliser des GUC personnalisés, le session_user , ou d'autres informations contextuelles dans les stratégies de sécurité des lignes. Vous pouvez utiliser la sécurité des lignes avec des vues, mais pas (utilement) pour filtrer en fonction de current_user .