Смоленск 1.4 Ошибка при подключении к postgres без суперпользователя

carrot

New member
Сообщения
27
#1
Пытаюсь организовать подключение к postgres разных пользователей по сессиям и выдать разные права. Встал вопрос в том, что под суперпользователем вход проходит корректно, однако при отсутствии у учетки прав суперпользователя при входе выдает ошибку:
Произошла ошибка:

Error connecting to server: Сбой: Роль "%название роли, под которой пытаюсь выполнить вход%" не существует.
До этого выдавал ошибку:
Произошла ошибка:

Error connecting to server: Сбой: ошибка получения мандатных атрибутов на сервере пользователя "%название роли, под которой пытаюсь выполнить вход%"
Т.е. при входе с учетки test01 с правами суперпользователя он успешно входит в систему, даже если не были выданы мандатные права, однако, если убрать SUPERUSER, то вылетает одна из двух предыдущих ошибок
 

kostia

New member
Сообщения
185
#2
1. Какой утилитой подключаетесь и с какими параметрами?
2. Есть учетная запись пользователя в системе и соответствующая роль в постгресе?
 

carrot

New member
Сообщения
27
#3
1. Какой утилитой подключаетесь и с какими параметрами?
2. Есть учетная запись пользователя в системе и соответствующая роль в постгресе?
1. Подключаюсь при помощи pgAdmin III, так же использовал psql, всё тоже самое
2. Существует роль, так же создавал роль с названием как у системы. Нужно, чтобы всё было ориентированно на сервер, чтобы можно было авторизоваться под любой ролью
 

kostia

New member
Сообщения
185
#4
Нужно, чтобы всё было ориентированно на сервер, чтобы можно было авторизоваться под любой ролью
Таким образом подразумевается что используется ALD. В таком случае ставим постгрес в соответствии с документацией для работы в ЕПП. Создаем ключи для постгреса в домене:
Код:
ald-admin service-add postgres/server.domain
ald-admin sgroup-svc-add postgres/server.domain
ald-client update-svc-keytab postgres/server.domain --ktfile="/etc/postgresql-common/krb5.keytab"
chown postgres /etc/postgresql-common/krb5.keytab
В pg_hba.conf вписываем строчку
host all all 10.0.0.0/8 gss сеть на свою меняем
В postgresql.conf меняем строчки:
ac_ignore_socket_maclabel = false
krb_server_keyfile = '/etc/postgresql-common/krb5.keytab'
listen_addresses = '*'
port = 5432

перезапускаем постгрес
service postgresql restart
Устанавливаем максимальные мандатные метки для СУБД
psql -U postgres -c "MAC LABEL ON TABLESPACE pg_default IS '{3,-1}';"

Дальше регистрируем учетную запись пользователя в ALD, назначаем мандатные уровни
регистрируем в постгресе роль с точно таким же логином
createuser -U postgres alduser
Создаем БД
createdb -U postgres test
Назначаем права для пользователя на эту БД:
psql -U postgres test -c "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO alduser
Пробуем подключиться:
psql -h server.domain test
 

kostia

New member
Сообщения
185
#5
Логи нужно смотреть. Если всё в точности сделали, то должно работать.
Перегружаться пробовали? :)
 

amamid

New member
Сообщения
7
#6
Таким образом подразумевается что используется ALD. В таком случае ставим постгрес в соответствии с документацией для работы в ЕПП. Создаем ключи для постгреса в домене:
Код:
ald-admin service-add postgres/server.domain
ald-admin sgroup-svc-add postgres/server.domain
ald-client update-svc-keytab postgres/server.domain --ktfile="/etc/postgresql-common/krb5.keytab"
chown postgres /etc/postgresql-common/krb5.keytab
В pg_hba.conf вписываем строчку
host all all 10.0.0.0/8 gss сеть на свою меняем
В postgresql.conf меняем строчки:
ac_ignore_socket_maclabel = false
krb_server_keyfile = '/etc/postgresql-common/krb5.keytab'
listen_addresses = '*'
port = 5432

перезапускаем постгрес
service postgresql restart
Устанавливаем максимальные мандатные метки для СУБД
psql -U postgres -c "MAC LABEL ON TABLESPACE pg_default IS '{3,-1}';"

Дальше регистрируем учетную запись пользователя в ALD, назначаем мандатные уровни
регистрируем в постгресе роль с точно таким же логином
createuser -U postgres alduser
Создаем БД
createdb -U postgres test
Назначаем права для пользователя на эту БД:
psql -U postgres test -c "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO alduser
Пробуем подключиться:
psql -h server.domain test
@kostia, не получается выполнить команду psql -U postgres -c "MAC LABEL ON TABLESPACE pg_default IS '{3,-1}';", выдает "Вы не можете назначить мандатную метку с таким значением".
Я так понимаю, что пользователь postgres с меткой {0,0} не может задавать метку выше своей, но как тогда все-такие повышать метки сущностей в БД?
 

kostia

New member
Сообщения
185
#7
А у вас какая версия посгреса? В астре 1.4 два постгреса, 9.2 и 9.3. Вот выше описанное работает на версии 9.3
 

carrot

New member
Сообщения
27
#9
Решил проблему двумя строчками в терминал на сервере:
Код:
sudo useradd <Пользователь, которого мы хотим завести на сервере> -p <Пароль> -g postgres
sudo usermac -c 0:0 <Пользователь>
Первой строчкой создаем пользователя в системе, дабы он смог подключаться к базе данных
Второй строчкой решаем проблему с мандатными правами, выдавая минимальные

Теперь можно войти в базу при помощи данного пользователя

---

У меня Astra 1.6 и postgres 9.6. Думал, может принцип такой же для моей версии
Может вам это тоже поможет
 
Сообщения
1
#10
Добрый день!Коллеги, помогите пожалуйста!Буду очень благодарен.
Смоленск 1.6; Postgresql 9.6;
Установлен Apache2, авторизация через Kerberos настроена и работает. Проверял с другой машины.
Домен инициализирован. Два ALD занесены в списки доверенных у друг друга.

Задача: С другой машины авторизоваться под доменным пользователем в созданной базе на сервере,который находится на другой машине ALD.

Имя пользователя в postgres и ALD идентичны: alduser2. В конфиге тоже прописан он же. Метод gss.
Проблема: При попытке авторизации удалённо выдаёт ошибку: "пользователь не прошёл проверку (gssapi)"
Фото конфигурационных файлов прилагаю. Вроде всё сделал правильно. Не пойму,что не так?Удалял postgres устанавливал заново такая же ситуация.
krb_srvname если расскоментировать, то перестаёт работать совсем, порт перестаёт отвечать(принимать) запросы.
Локально я могу зайти, создал базу,добавил таблицу,пользователю alduser2 дал все права на БД и select для таблицы.
Помогите пожалуйста!
 

Вложения