Posso ativar a autenticação peer e md5 para o mesmo usuário local do PostgreSQL no pg_hba.conf?

14

Gostaria de permitir que um (super) usuário do PostgreSQL seja autenticado com os métodos de autenticação "peer" ou "md5", de preferência usando soquetes de domínio Unix local nos dois casos. O problema é que a ordem das entradas no pg_hba.conf é importante e a primeira correspondência será aplicada.

O que eu tenho:

# TYPE    DATABASE   USER      ADDRESS   METHOD
  local   all        harold              peer
  local   all        all                 md5

O que eu gostaria (sintaxe inválida):

# TYPE    DATABASE   USER      ADDRESS   METHOD
  local   all        harold              peer-or-md5
  local   all        all                 md5

Aqui estão mais alguns detalhes sobre o ambiente em que gostaríamos de usá-lo:

Nesse servidor específico, todos os bancos de dados são relativamente pequenos (<10 MB de dados cada) e puramente somente leitura. Eles são descartados e recriados todas as noites pelo superusuário harold. harold também é uma conta do sistema, portanto, "peer" funciona bem para cronjobs sem senha, etc. Depois, há uma interface da web acessando os bancos de dados: isso usa autenticação md5 (o usuário do sistema é o servidor da web, pg nome de usuário, senha e nome db são fornecidos por os visitantes). Agora, gostaria de deixar o usuário harold fazer login também na interface da web. Isso falha devido à configuração "par" para harold.

A solução atual é permitir que a interface da web se conecte através de TCP, usando

# TYPE    DATABASE   USER      ADDRESS        METHOD
  host    all        all       127.0.0.1/32   md5
  host    all        all       ::1/128        md5

além das entradas locais no primeiro exemplo. Isso funciona, mas eu prefiro usar soquetes locais aqui também - para desempenho e por causa de um pressentimento de que parece a coisa certa a se fazer.

Isso é possível? Existem soluções alternativas melhores para nós?

Zilk
fonte

Respostas:

10

De acordo com uma pergunta semelhante do StackOverflow , a resposta é não, não é possível ativar dois tipos de autenticação para o mesmo tipo, banco de dados, usuário e endereço.

A pergunta StackOverflow recomenda o uso de um .pgpassarquivo no diretório inicial do usuário e a autenticação md5, mas não tenho certeza se isso necessariamente funcionaria para trabalhos cron.

Nathan
fonte
Funcionará se o cronjob for do mesmo usuário que possui .pgpass em seu diretório pessoal.
Andrei Mikhaltsov 28/03