A versão curta primeiro:
É possível ter uma nova conexão de banco de dados PostgreSQL invocada automaticamente SET ROLE
com uma função específica, seja por configurações na função de conexão (usando ALTER ROLE
), ou uma opção no final de um URI de conexão?
Mais longo, com contexto:
Estou configurando um aplicativo da Web para usar credenciais de banco de dados rotativas (portanto, há uma variedade de funções em jogo). No entanto, essas credenciais também são usadas para modificações no banco de dados (via migrações do Rails), e isso significa que as tabelas se tornam propriedade de uma função que não deveria existir a longo prazo.
Eu posso modificar as credenciais rotativas para que elas herdem de uma função pai (que não tem a capacidade de fazer login) e, em seguida, SET ROLE
todas as modificações do banco de dados são de propriedade do pai, em vez da função filho de curto prazo. Isso resolve o problema de propriedade, mas exige que todas as conexões sejam invocadas SET ROLE parent
- não é realmente viável.
Portanto, quero uma maneira de garantir que cada conexão filha sempre opere dentro do contexto da função pai. Isso é possível?