Hi hackers,
Presently, if a role has privileges to SET a parameter, it is able to ALTER
ROLE/DATABASE SET that parameter, provided it otherwise has permission to
alter that role/database. This includes cases where the role only has SET
privileges via the new pg_parameter_acl catalog. For example, if a role is
granted the ability to SET a PGC_SUSET GUC, it also has the ability to
ALTER ROLE/DATABASE SET that GUC. A couple of recent threads have alluded
to the possibility of introducing a new set of privileges for ALTER
ROLE/DATABASE SET [0] [1], so I thought I'd start the discussion.
First, is it necessary to introduce new privileges, or should the ability
to SET a parameter be enough to ALTER ROLE/DATABASE SET it? AFAICT this is
roughly the behavior before v15, but it simply disallowed non-superusers
from setting certain parameters.
Second, if new privileges are required, what would they look like? My
first instinct is to add GRANT ALTER ROLE ON PARAMETER and GRANT ALTER
DATABASE ON PARAMETER.
Thoughts?
[0] https://postgr.es/m/1732511.1658332210%40sss.pgh.pa.us
[1] https://postgr.es/m/20220714225735.GB3173833%40nathanxps13
--
Nathan Bossart
Amazon Web Services: https://aws.amazon.com