pgsql: Add a run_as_owner option to subscriptions.

From: Robert Haas <rhaas(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Add a run_as_owner option to subscriptions.
Date: 2023-04-04 16:09:12
Message-ID: E1pjjDb-001LR8-2S@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Add a run_as_owner option to subscriptions.

This option is normally false, but can be set to true to obtain
the legacy behavior where the subscription runs with the permissions
of the subscription owner rather than the permissions of the
table owner. The advantages of this mode are (1) it doesn't require
that the subscription owner have permission to SET ROLE to each
table owner and (2) since no role switching occurs, the
SECURITY_RESTRICTED_OPERATION restrictions do not apply.

On the downside, it allows any table owner to easily usurp
the privileges of the subscription owner - basically, to take
over their account. Because that's generally quite undesirable,
we don't make this mode the default, but we do make it available,
just in case the new behavior causes too many problems for someone.

Discussion: http://postgr.es/m/CA+TgmoZ-WEeG6Z14AfH7KhmpX2eFh+tZ0z+vf0=eMDdbda269g@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/482675987bcdffb390ae735cfd5f34b485ae97c6

Modified Files
--------------
doc/src/sgml/logical-replication.sgml | 17 ++
doc/src/sgml/ref/alter_subscription.sgml | 3 +-
doc/src/sgml/ref/create_subscription.sgml | 14 ++
src/backend/catalog/pg_subscription.c | 1 +
src/backend/catalog/system_views.sql | 2 +-
src/backend/commands/subscriptioncmds.c | 23 ++-
src/backend/replication/logical/worker.c | 46 +++--
src/bin/psql/describe.c | 8 +-
src/include/catalog/catversion.h | 2 +-
src/include/catalog/pg_subscription.h | 4 +
src/test/regress/expected/subscription.out | 144 +++++++--------
src/test/subscription/t/033_run_as_table_owner.pl | 204 ++++++++++++++++++++++
12 files changed, 376 insertions(+), 92 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2023-04-04 17:33:22 pgsql: Add a way to get the current function's OID in pl/pgsql.
Previous Message Robert Haas 2023-04-04 16:00:06 pgsql: Perform logical replication actions as the table owner.