Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление


Информация
titleДанная статья применима к:
  • Astra Linux


Где хранятся настройки аутентификации

Настройки аутентификации хранятся в файле  /etc/postgresql/<номер_версии>/main<имя_кластера>/pg_hba.conf.
Где:

  • <номер_версии> - 9.6, 11, 14;
  • <имя_кластера> - по умолчанию main.

Настройка "по умолчанию" после установки postgresql

После установки настройки выглядят так:

Блок кода
local   all             postgres                                peer
local   all             all                                     peer
host    all             all             0.0.0.0/0            md5

Беспарольная аутентификация локальных подключений с помощью собственной БД пользователей

Блок кода
local   all             all                                peer

Примеры:


  1. Command
    Titlecreatedb <имя_БД>
    createdb: не удалось подключиться к базе template1: ВАЖНО:  роль <имя_пользователя> не существует

    Пояснение: по умолчанию подключение выполняется к локальной машине (localhost). При выполнении команды автоматически определено имя пользователя (текущий пользователя), и такое имя не найдено в собственной БД пользователей (далее - БДП). Отказ в выполнении.

  2. Регистрация текущего пользователя (роли) в БДП:

    Command

    sudo -u postgres psql -c "CREATE ROLE $USER LOGIN;"

    Пояснение: имя роли, регистрируемое в БДП не обязательно должно совпадать с именем существующего пользователя ОС, но при работе с включенным МРД такие роли не смогут получить авторизацию, см. следующий пункт. Далее предполагается, что имя роли совпадает с именем текущего пользователя;


  3. Command
    Titlecreatedb <имя_БД>

    createdb: не удалось подключиться к базе template1: ВАЖНО:  error obtaining MAC configuration for user "<имя_пользователя>"

    Пояснение: аутентификация пользователя выполнена. Возникшая ошибка - не ошибка аутентификации, а ошибка авторизации (назначения мандатных прав) при включенной поддержке МРД в СУБД. Для устранения ошибки либо выключить МРД (см. документацию), либо явно назначить классификационную метку пользователю и предоставить служебному пользователю postgres право на её чтение, например, для текущего пользователя:

    Command

    sudo pdpl-user -l 0:0 $USER
    sudo setfacl -m u:postgres:r /etc/parsec/macdb/`id -u`



  4. Command
    Titlecreatedb <имя_БД>

    createdb: создать базу данных не удалось: ОШИБКА:  нет прав на создание базы данных

    Пояснение: аутентификация и авторизация пользователя выполнена. Возникающая ошибка - не ошибка аутентификации, и не ошибка авторизации, а результат получения при авторизации недостаточных прав, как и указано в описании ошибки.

Парольная аутентификация внешних подключений в БДП

Блок кода
host    all             all             0.0.0.0/0            md5

Пример:


  1. Command
    Titlecreatedb -h <IP-адрес> <имя_БД>
    Пароль:

    Пояснение: по умолчанию подключение выполняется к локальной машине (localhost), но в этом примере явно задана опция -h, указывающая адрес, к которому нужно подключаться. При выполнении команды автоматически определено имя пользователя (текущий пользователя), подключение определено как внешнее, и в соответствии с правилом для внешних запрошен пароль.

  2. Задание пароля в БДП:

    Command

    sudo -u postgres psql -c "ALTER USER $USER WITH PASSWORD '<пароль>';"



  3. Command
    Titlecreatedb -h <IP-адрес> <имя_БД>
    Пароль:
    createdb: создать базу данных не удалось: ОШИБКА:  нет прав на создание базы данных

    Пояснение: после ввода пароля, заданного в БДП, аутентификация и авторизация пройдены успешно, но права на создание БД отсутствуют.

Аутентификация внешних подключений с использованием PAM

Блок кода
host    all             all             0.0.0.0/0            pam


Информация
После смены типа аутентификации в конфигурационном файле для актуализации изменений перезапустить СУБД.
  1. В качестве пароля использовать пароль пользователя в ОС:

    Command
    Titlecreatedb -h <IP-адрес> <имя_БД>
    Пароль:
    Пароль:
    Пароль:
    createdb: не удалось подключиться к базе template1: ВАЖНО:  пользователь "<имя_пользователя>" не прошёл проверку подлинности (PAM)
    ВАЖНО:  пользователь "<имя_пользователя>" не прошёл проверку подлинности (PAM)

    Для устранения ошибки предоставить служебному пользователю postgresql право чтения файла /etc/shadow:

    Command

    sudo setfacl -m u:postgres:r /etc/shadow


  2. После предоставления служебному пользователю postgresql право чтения файла /etc/shadow аутентификация и авторизация по паролю ОС (паролю из /etc/shadow) выполняются успешно:

    Command
    Titlecreatedb -h <IP-адрес> <имя_БД>
    Пароль:
    createdb: создать базу данных не удалось: ОШИБКА:  нет прав на создание базы данных