pgsql: Add pg_read_all_data and pg_write_all_data roles

From: Stephen Frost <sfrost(at)snowman(dot)net>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Add pg_read_all_data and pg_write_all_data roles
Date: 2021-04-05 17:45:12
Message-ID: E1lTTHk-0006rH-HD@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Add pg_read_all_data and pg_write_all_data roles

A commonly requested use-case is to have a role who can run an
unfettered pg_dump without having to explicitly GRANT that user access
to all tables, schemas, et al, without that role being a superuser.
This address that by adding a "pg_read_all_data" role which implicitly
gives any member of this role SELECT rights on all tables, views and
sequences, and USAGE rights on all schemas.

As there may be cases where it's also useful to have a role who has
write access to all objects, pg_write_all_data is also introduced and
gives users implicit INSERT, UPDATE and DELETE rights on all tables,
views and sequences.

These roles can not be logged into directly but instead should be
GRANT'd to a role which is able to log in. As noted in the
documentation, if RLS is being used then an administrator may (or may
not) wish to set BYPASSRLS on the login role which these predefined
roles are GRANT'd to.

Reviewed-by: Georgios Kokolatos
Discussion: https://postgr.es/m/20200828003023.GU29590@tamriel.snowman.net

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/6c3ffd697e2242f5497ea4b40fffc8f6f922ff60

Modified Files
--------------
doc/src/sgml/user-manag.sgml | 18 +++++++++++++
src/backend/catalog/aclchk.c | 31 ++++++++++++++++++++++
src/include/catalog/catversion.h | 2 +-
src/include/catalog/pg_authid.dat | 10 +++++++
src/test/regress/expected/privileges.out | 45 +++++++++++++++++++++++++++++++-
src/test/regress/sql/privileges.sql | 25 ++++++++++++++++++
6 files changed, 129 insertions(+), 2 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Geoghegan 2021-04-05 20:27:03 pgsql: Simplify state managed by VACUUM.
Previous Message Fujii Masao 2021-04-05 17:29:48 pgsql: Shut down transaction tracking at startup process exit.