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

11

Eu 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 sockets de domínio Unix locais em ambos os 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 de ter (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 usar:

Neste servidor em particular, todas as bases de dados são relativamente pequenas (< 10MB de dados cada) e meramente de leitura. Eles são descartados e recriados todas as noites pelo superusuário harold. harold também é uma conta do sistema, então "peer" funciona muito bem para cronjobs sem senha, etc. Há uma interface web acessando os bancos de dados: isso usa autenticação md5 (usuário do sistema é o servidor web, nome de usuário pg, senha e nome db são fornecidos por os visitantes). Agora, gostaria de permitir que o usuário harold efetue login na interface da Web também. Isso falha por causa da configuração "peer" para harold.

A solução atual é permitir que o webinterface se conecte via 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 ser a coisa certa a se fazer.

Isso é possível? Existe alguma solução melhor para nós?

    
por Zilk 09.10.2012 / 00:05

1 resposta

8

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

A questão do StackOverflow recomenda usar um arquivo .pgpass no diretório pessoal do usuário e usar a autenticação md5, mas não tenho certeza de que isso funcionaria necessariamente para tarefas agendadas.

    
por 28.03.2013 / 03:13