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

carrot

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

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

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

kostia

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

carrot

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

kostia

New member
Сообщения
156
#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
Сообщения
156
#5
Логи нужно смотреть. Если всё в точности сделали, то должно работать.
Перегружаться пробовали? :)
 

amamid

New member
Сообщения
6
#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
Сообщения
156
#7
А у вас какая версия посгреса? В астре 1.4 два постгреса, 9.2 и 9.3. Вот выше описанное работает на версии 9.3