sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Por qué no está habilitada la seguridad de nivel de fila para las vistas de Postgres?

Básicamente porque no era posible cambiar retroactivamente el funcionamiento de las vistas. Me gustaría poder admitir SECURITY INVOKER (o equivalente) para las vistas, pero que yo sepa, actualmente no existe tal función.

Puede filtrar el acceso a la vista en sí mismo con seguridad de fila normalmente.

Las tablas a las que accede la vista también tendrán aplicadas sus reglas de seguridad de fila. Sin embargo, verán el current_user como el creador de la vista porque las vistas acceden a tablas (y otras vistas) con los derechos del usuario que creó/posee la vista.

¿Tal vez valdría la pena plantear esto a pgsql-hackers si está dispuesto a intervenir y ayudar con el desarrollo de la función que necesita, o pgsql-general de lo contrario?

Dicho esto, mientras ve las tablas de acceso como el usuario creador y cambia current_user en consecuencia, no le impiden usar GUC personalizados, el session_user , u otra información contextual en las políticas de seguridad de la fila. Puede usar la seguridad de fila con vistas, pero no (útilmente) para filtrar según current_user .