The short version first:
Is it possible to have a new PostgreSQL database connection automatically invoke SET ROLE
with a specific role, whether by configurations on the connecting role (using ALTER ROLE
), or an option on the end of a connection URI?
Longer, with context:
I'm setting up a web application to use rotating database credentials (thus, there are a variety of roles in play). However, these credentials are also used for modifications to the database (via Rails migrations), and that means tables become owned by a role that isn't meant to exist in the long-term.
I can modify the rotating credentials so they inherit from a parent role (which doesn't have the ability to log in itself), and then via SET ROLE
all database modifications are owned by the parent, rather than the short-term child role. This resolves the ownership issue, but it requires every connection to invoke SET ROLE parent
- not really feasible.
Hence, I want some way to ensure that every child connection will always operate within the context of the parent role. Is this possible?