> On Nov 24, 2021, at 4:30 PM, Jeff Davis <pg...@j-davis.com> wrote:
> 
> We need to do permission checking for WITH CHECK OPTION and RLS. The
> patch right now allows the subscription to write data that an RLS
> policy forbids.

Version 4 of the patch, attached, no longer allows RLS to be circumvented, but 
does so in a course-grained fashion.  If the target table has row-level 
security policies which are enforced against the subscription owner, the 
replication draws an error, much as with a permissions failure.  This seems 
sufficient for now, as superusers, roles with bypassrls, and target table 
owners should be able to replicate as before.  We may want to revisit this 
later, perhaps if/when we address your ExecInsert question, below.

> 
> A couple other points:
> 
> * We shouldn't refer to the behavior of previous versions in the docs
> unless there's a compelling reason

Fixed.

> * Do we need to be smarter about partitioned tables, where an insert
> can turn into an update?

Indeed, the logic of apply_handle_tuple_routing() required a bit of 
refactoring.  Fixed in v4.

> * Should we refactor to borrow logic from ExecInsert so that it's less
> likely that we miss something in the future?

Let's just punt on this for now.

Attachment: v4-0001-Respect-permissions-within-logical-replication.patch
Description: Binary data


—
Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



Reply via email to