Re: policies with security definer option for allowing inline optimization - Mailing list pgsql-hackers

From Isaac Morland
Subject Re: policies with security definer option for allowing inline optimization
Date
Msg-id CAMsGm5c22e2ioVsm9ZMsV4DU-xCz24wd3AnwVk9HYqLrS6hWVQ@mail.gmail.com
Whole thread Raw
In response to policies with security definer option for allowing inline optimization  (Dan Lynch <pyramation@gmail.com>)
Responses Re: policies with security definer option for allowing inline optimization  (Stephen Frost <sfrost@snowman.net>)
Re: policies with security definer option for allowing inline optimization  (Chapman Flack <chap@anastigmatix.net>)
List pgsql-hackers
On Fri, 2 Apr 2021 at 01:44, Dan Lynch <pyramation@gmail.com> wrote:
RLS policies quals/checks are optimized inline, and so I generally avoid writing a separate procedure so the optimizer can do it's thing.

However, if you need a security definer to avoid recursive RLS if you're doing a more complex query say, on a join table, anyone wish there was a flag on the policy itself to specify that `WITH CHECK` or `USING` expression could be run via security definer?

The main reason for this is to avoid writing a separate security definer function so you can benefit from the optimizer. 

Is this possible? Would this be worth a feature request to postgres core?

If we're going to do this we should do the same for triggers as well.

It's easy to imagine a situation in which RLS policies need to refer to information which should not be accessible to the role using the table, and similarly it's easy to imagine a situation in which a trigger needs to write to another table which should not be accessible to the role using the table which has the trigger.

pgsql-hackers by date:

Previous
From: Amit Langote
Date:
Subject: Re: simplifying foreign key/RI checks
Next
From: Amit Langote
Date:
Subject: Re: a misbehavior of partition row movement (?)