Posso abilitare l'autenticazione sia peer che md5 per lo stesso utente locale PostgreSQL in pg_hba.conf?


14

Vorrei che un utente PostgreSQL (super) fosse autenticato con i metodi di autenticazione "peer" o "md5", preferibilmente usando socket di dominio Unix locali in entrambi i casi. Il problema è che l'ordine delle voci in pg_hba.conf è importante e verrà applicata la prima corrispondenza.

Ciò che ho:

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

Cosa vorrei (sintassi non valida):

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

Ecco alcuni dettagli sull'ambiente in cui vorremmo utilizzarlo:

Su questo particolare server, tutti i database sono relativamente piccoli (<10 MB ciascuno di dati) e di sola lettura. Vengono rilasciati e ricreati ogni notte dal superutente harold. harold è anche un account di sistema, quindi "peer" funziona bene per cronjob senza password ecc. Quindi c'è un'interfaccia web che accede ai database: utilizza l'autenticazione md5 (l'utente di sistema è il server web, il nome utente pg, la password e il nome db sono forniti da i visitatori). Ora vorrei che anche l'utente harold accedesse tramite l'interfaccia web. Questo non riesce a causa dell'impostazione "peer" per harold.

L'attuale soluzione alternativa consiste nel consentire all'interfaccia Web di connettersi tramite TCP, utilizzando

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

oltre alle voci locali nel primo esempio. Funziona, ma preferirei utilizzare anche le prese locali qui - per le prestazioni e per la sensazione che sembra la cosa giusta da fare.

È possibile? Ci sono soluzioni alternative migliori per noi?

Risposte:


10

Secondo una domanda StackOverflow simile , la risposta è no, non è possibile abilitare due tipi di autenticazione per lo stesso tipo, database, utente e indirizzo.

La domanda StackOverflow consiglia di utilizzare un .pgpassfile nella home directory dell'utente e di utilizzare l'autenticazione md5, ma non sono sicuro che funzionerebbe necessariamente per i lavori cron.


Funzionerà se il cronjob proviene dallo stesso utente che ha .pgpass nella sua directory home.
Andrei Mikhaltsov,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.