Чи можу я ввімкнути аутентифікацію однорангової та md5 для того самого локального користувача PostgreSQL в pg_hba.conf?


14

Я хотів би дозволити користувачеві PostgreSQL (супер) бути автентифікованим або методами аутентифікації "peer" або "md5", переважно в обох випадках з використанням локальних сокетів домену Unix. Проблема полягає в тому, що порядок записів у pg_hba.conf має значення, і перша відповідність буде застосована.

Що я маю:

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

Що б я хотів (недійсний синтаксис):

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

Ось додаткові відомості про навколишнє середовище, у якому ми хотіли б використати це:

На цьому конкретному сервері всі бази даних відносно невеликі (<10 Мб даних кожна) і суто лише для читання. Вони скидаються та створюються заново щовечора за допомогою гарадольського суперпользователя. harold також є системним обліковим записом, тому "peer" чудово працює для безкористувацьких кронштейнів і т. д. Потім є веб-інтерфейс для доступу до баз даних: для цього використовується автентифікація md5 (користувач системи - веб-сервер, ім'я користувача pg, пароль і db-ім'я надаються відвідувачів). Тепер я хотів би дозволити користувачеві Harold увійти і через веб-інтерфейс. Це не вдається через налаштування "peer" для harold.

Поточне вирішення полягає в тому, щоб веб-інтерфейс підключався через TCP, використовуючи

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

крім локальних записів у першому прикладі. Це працює, але я б краще скористатися локальними розетками і тут - для продуктивності та через відчуття кишки, що це здається правильним.

Чи можливо це? Чи є кращі шляхи вирішення для нас?

Відповіді:


10

Відповідно до аналогічного питання StackOverflow , відповідь "ні", ви не можете ввімкнути два типи аутентифікації для одного типу, бази даних, користувача та адреси.

Питання StackOverflow рекомендує використовувати .pgpassфайл у домашній директорії користувача та використовувати md5 аутентифікацію, але я не впевнений, що це обов'язково спрацює для завдань cron.


Він буде працювати, якщо cronjob від того самого користувача, який має .pgpass у своєму домашньому каталозі.
Андрій Михальцов
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.