Re: running logical replication as the subscription owner
Masahiko Sawada <sawada.mshk@gmail.com>
From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Amit Kapila <amit.kapila16@gmail.com>
Cc: Ajin Cherian <itsajin@gmail.com>, Robert Haas <robertmhaas@gmail.com>, Noah Misch <noah@leadboat.com>, Jeff Davis <pgsql@j-davis.com>, Jelte Fennema <postgres@jeltef.nl>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>,
Andres Freund <andres@anarazel.de>
Date: 2023-06-09T01:45:06Z
Lists: pgsql-hackers
On Thu, Jun 8, 2023 at 7:29 PM Amit Kapila <amit.kapila16@gmail.com> wrote: > > On Thu, Jun 8, 2023 at 6:32 AM Masahiko Sawada <sawada.mshk@gmail.com> wrote: > > > > On Mon, Jun 5, 2023 at 3:15 AM Amit Kapila <amit.kapila16@gmail.com> wrote: > > > > > > On Fri, May 26, 2023 at 6:18 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote: > > > > > > > > On Thu, May 25, 2023 at 5:41 PM Amit Kapila <amit.kapila16@gmail.com> wrote: > > > > > > > > I've attached the updated patch. Please review it. > > > > > > > > > > Few comments: > > > 1. > > > + /* get the owner for ACL and RLS checks */ > > > + run_as_owner = MySubscription->runasowner; > > > + checkowner = run_as_owner ? MySubscription->owner : rel->rd_rel->relowner; > > > + > > > /* > > > * Check that our table sync worker has permission to insert into the > > > * target table. > > > */ > > > - aclresult = pg_class_aclcheck(RelationGetRelid(rel), GetUserId(), > > > + aclresult = pg_class_aclcheck(RelationGetRelid(rel), checkowner, > > > > > > One thing that slightly worries me about this change is that we > > > started to check the permission for relowner before even ensuring that > > > we can switch to relowner. See checks in SwitchToUntrustedUser(). If > > > we want to first ensure that we can switch to relowner then I think we > > > should move this permission-checking code before we try to copy the > > > table. > > > > Agreed. I thought it's better to do ACL and RLS checks before creating > > the replication slot but it's not important. Rather checking them > > after switching user would make sense since we do the same in > > worker.c. > > > > LGTM. Thanks, pushed. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Honor run_as_owner option in tablesync worker.
- a83edeaf684a 16.0 landed
-
Document new pg_subscription columns.
- bc25d6c54a00 16.0 landed
-
Add a run_as_owner option to subscriptions.
- 482675987bcd 16.0 landed
-
Perform logical replication actions as the table owner.
- 1e10d49b65d6 16.0 landed
-
Add new predefined role pg_create_subscription.
- c3afe8cf5a1e 16.0 cited
-
Respect permissions within logical replication.
- a2ab9c06ea15 15.0 cited
-
Empty search_path in logical replication apply worker and walsender.
- 11da97024abb 14.0 cited
-
Empty search_path in Autovacuum and non-psql/pgbench clients.
- 582edc369cdb 11.0 cited