Настройка доступа к базам данных PostgreSQL
Подробную информацию о вариантах настройки доступа к базам данных PostgreSQL см. на сайте https://www.postgresql.org/docs/16/auth-pg-hba-conf.html.
Внимание! Функционал, описанный в данном разделе, может потребоваться для организации доступа при использовании десктопного приложения (см. Десктопное приложение Business Studio). Информацию по организации доступа в веб-приложение см. в разделе Настройка Keycloak.
SQL-аутентификация
SQL-аутентификация поддерживается на всех операционных системах. Для настройки доступа необходимо:
1. Создать пользователей и администраторов с помощью утилиты DB Администратор (см. Назначение пользователей и администраторов баз данных). В наиболее простом варианте создается один SQL-пользователь с правами администратора базы данных и один SQL-пользователь без прав администратора. Эти SQL-пользователи могут использоваться пользователями системы Business Studio для авторизации в базе данных.
2. Настроить файл конфигурации pg_hba.con, расположенный в папке <Каталог установки PostgreSQL>\data. Вносить изменения в файл следует с помощью текстового редактора, корректно работающего с кодировкой UTF-8 (например, NotePad++).
Добавить следующие строки для каждого SQL-пользователя:
- Строка для протокола Ipv6 (если данный протокол не используется, строку можно не добавлять):
host <имя базы> <имя пользователя> ::1/128 <метод>
- Строка для протокола Ipv4 (если данный протокол не используется, строку можно не добавлять):
host <имя базы> <имя пользователя> 127.0.0.1/32 <метод>
Здесь:
- <имя базы> - база, к которой нужно предоставить доступ;
- <имя пользователя> - SQL-пользователь;
- <метод> - метод аутентификации, поддерживаются следующие методы: scram-sha-256, md5, password.
Доменная аутентификация
В данном разделе будет рассматриваться доменная аутентификация на операционной системе Windows. Доменная аутентификация на операционной системе Linux возможна посредством протокола LDAP или Kerberos (см. Доменная аутентификация PostgreSQL на операционной системе Linux).
Для использования доменной аутентификации на операционной системе Windows необходимо настроить файлы конфигурации, которые расположены в папке: <Каталог установки PostgreSQL>\data. Вносить изменения в файлы следует с помощью текстового редактора, корректно работающего с кодировкой UTF-8 (например, NotePad++).
1. Файл pg_ident.conf
В конец файла вставить строку:
MapForSSPI /^(.*)@<Домен> <Домен>\\1
Здесь <Домен> - домен, к которому требуется предоставить доступ.
При внесении изменений необходимо соблюдать регистр в доменных именах.
2. Файл pg_hba.conf
2.1 Добавить строки для системных ролей, необходимых для работы, сразу под большим блоком с комментариями (строки, начинающиеся с символа #) и над всеми последующими строками (это требуется, т.к. подключение производится в соответствии с первой подходящей строкой в порядке сверху вниз, и если подключение подходит под какую-то из строк выше, то строки ниже не учитываются):
- Строка для протокола Ipv6 (если данный протокол не используется, строку можно не добавлять):
host all be64_approle ::0/0 <метод>
- Строка для протокола Ipv4 (если данный протокол не используется, строку можно не добавлять):
host all be64_approle 0.0.0.0/0 <метод>
Здесь <метод> - метод аутентификации, поддерживаются следующие методы: scram-sha-256, md5, password.
2.2 Добавить строки для каждого пользователя домена:
- Строка для протокола Ipv6 (если данный протокол не используется, строку можно не добавлять):
host <имя базы> <Домен\Логин> ::0/0 sspi map=MapForSSPI
- Строка для протокола Ipv4 (если данный протокол не используется, строку можно не добавлять):
host <имя базы> <Домен\Логин> 0.0.0.0/0 sspi map=MapForSSPI
Здесь:
- <имя базы> - база, к которой нужно предоставить доступ;
- <Домен\Логин> - домен и логин учетной записи, которой требуется выдать доступ к базе данных.
При внесении изменений необходимо соблюдать регистр в доменных именах.
2.3 При необходимости предоставить доступ к базе данных для всех пользователей PostgreSQL сервера, необходимо добавить следующие строки непосредственно под строками из п. 2.2:
- Строка для протокола Ipv6 (если данный протокол не используется, строку можно не добавлять):
host <имя базы> all ::0/0 <метод>
- Строка для протокола Ipv4 (если данный протокол не используется, строку можно не добавлять):
host <имя базы> all 0.0.0.0/0 <метод>
После этого требуется дать права конкретным пользователям на конкретные базы через утилиту DBAdmin. Добавлять доменного пользователя нужно под SQL аутентификацией.