Назад | Перейти на главную страницу

Могу ли я включить как одноранговую аутентификацию, так и аутентификацию md5 для одного и того же локального пользователя PostgreSQL в pg_hba.conf?

Я хотел бы, чтобы пользователь PostgreSQL (супер) мог быть аутентифицирован с помощью методов аутентификации «одноранговый» или «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" отлично работает для cronjobs без пароля и т. д. Затем есть веб-интерфейс для доступа к базам данных: он использует аутентификацию md5 (системный пользователь - это веб-сервер, имя пользователя pg, пароль и имя базы данных предоставляются посетители). Теперь я бы хотел, чтобы пользователь harold также входил в систему через веб-интерфейс. Это не удается из-за настройки «равноправный» для гарольда.

Текущий обходной путь - разрешить веб-интерфейсу подключаться через TCP, используя

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

в дополнение к локальным записям в первом примере. Это работает, но я бы предпочел использовать здесь и локальные сокеты - для повышения производительности и из-за интуиции, что это кажется правильным.

Это возможно? Есть ли для нас лучшие обходные пути?

Согласно аналогичный вопрос StackOverflow, ответ - нет, вы не можете включить два типа аутентификации для одного и того же типа: базы данных, пользователя и адреса.

Вопрос StackOverflow рекомендует использовать .pgpass файл в домашнем каталоге пользователя и с использованием аутентификации md5, но я не уверен, что это обязательно сработает для заданий cron.