¿Puedo habilitar la autenticación par y md5 para el mismo usuario local de PostgreSQL en pg_hba.conf?

14

Me gustaría permitir que un usuario (super) de PostgreSQL se autentique con los métodos de autenticación "par" o "md5", preferiblemente usando sockets de dominio Unix locales en ambos casos. El problema es que el orden de las entradas en pg_hba.conf es importante y se aplicará la primera coincidencia.

Lo que tengo:

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

Lo que me gustaría (sintaxis no válida):

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

Aquí hay más detalles sobre el entorno en el que nos gustaría usar esto:

En este servidor en particular, todas las bases de datos son relativamente pequeñas (<10 MB de datos cada una) y son de solo lectura. El superusuario de Harold los deja caer y se recrean todas las noches. harold también es una cuenta del sistema, por lo que "peer" funciona bien para cronjobs sin contraseña, etc. Luego hay una interfaz web que accede a las bases de datos: esto usa autenticación md5 (el usuario del sistema es el servidor web, el nombre de usuario pg, la contraseña y el nombre db son suministrados por los visitantes). Ahora me gustaría permitir que el usuario de Harold también inicie sesión en la interfaz web. Esto falla debido a la configuración de "par" para Harold.

La solución actual es permitir que la interfaz web se conecte a través de TCP, utilizando

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

Además de las entradas locales en el primer ejemplo. Esto funciona, pero prefiero usar enchufes locales aquí también, para el rendimiento y debido a la sensación de que parece ser lo correcto.

es posible? ¿Hay alguna mejor solución para nosotros?

Zilk
fuente

Respuestas:

10

Según una pregunta similar de StackOverflow , la respuesta es no, no puede habilitar dos tipos de autenticación para el mismo tipo, base de datos, usuario y dirección.

La pregunta de StackOverflow recomienda usar un .pgpassarchivo en el directorio de inicio del usuario y usar la autenticación md5, pero no estoy seguro de que necesariamente funcione para trabajos cron.

Nathan
fuente
Funcionará si el cronjob es del mismo usuario que tiene .pgpass en su directorio de inicio.
Andrei Mikhaltsov