Size: a a a

pgsql – PostgreSQL

2020 June 18

o

om in pgsql – PostgreSQL
Maxim Sherstuk
Всем доброго вечера. Есть проблема - может сталкивались. Подключаюсь к postgres, но не как обычно, а с аутентификацией типа gss - использую kerberos и домен в линуксе (freeIPA). В общем мне нужно как-то токен пользователя передать в psycopg2, но она использует libpq и там нет специальных атрибутов для токена - libpq как-то умеет брать токен из системы. Но у меня пользователи ходят к postgres через сервер, а не напрямую в бд и поэтому я должен передать токен пользователя серверу, а он уже использует его при подключении к бд через paycopg2. Кто-нибудь делал что-то подобное?
А не проще ли приложению подключаться от имени единого пользователя БД?
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Maxim Sherstuk
Всем доброго вечера. Есть проблема - может сталкивались. Подключаюсь к postgres, но не как обычно, а с аутентификацией типа gss - использую kerberos и домен в линуксе (freeIPA). В общем мне нужно как-то токен пользователя передать в psycopg2, но она использует libpq и там нет специальных атрибутов для токена - libpq как-то умеет брать токен из системы. Но у меня пользователи ходят к postgres через сервер, а не напрямую в бд и поэтому я должен передать токен пользователя серверу, а он уже использует его при подключении к бд через paycopg2. Кто-нибудь делал что-то подобное?
Я ничего не понял. судя по psycopg2, пользюки ходЮт по через приклад, который где-то на сервере приклада. И уже приклад лезет в БД, Пользователи приклада являются пользователями ПГ? Если так, у вас и сервер приклада и сам приклад обязаны аутентифицироваться в том же самом цербере, что и ПГ, и рабочее место.
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
om
А не проще ли приложению подключаться от имени единого пользователя БД?
А ему в любом случае приклад с цербером дружить надо будет для реализации механизма одного входа.
источник

o

om in pgsql – PostgreSQL
А какой SPN должен быть для PostgreSQL?

В одном месте - postgresql\ https://ssokolov.ru/2016/03/02/postgres-gssapi/

В вики - POSTGRES\  https://wiki.postgresql.org/wiki/Configuring_for_single_sign-on_using_SSPI_on_Windows
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
Это все конечно работает - пользователь логинется на машине и ходит в постгрес напрямую со своим токеном, ему всего-лишь нужно залогиниться как доменный пользователь. Но представьте - вот есть соц сеть вконтакте, пользователи логинятся в ней через свой токен, а потом их сервер грубо говоря подключается к бд сам, а не пользователь напрямую. Вот здесь и проблема когда сервер от имени доменного пользователя пытается поработать с бд
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
Конечно делали, чтобы только серверная роль ходила в бд. Но вот требуется в этот раз, чтобы вход в бд выполнялся доменным  пользователем
источник

AE

Alexandr Emelyanov in pgsql – PostgreSQL
зачем клиента вебсервера пускать в бд с его учеткой?
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
Токен пользователя мне удалось получить, если бы как-то рассказать для libpq где брать токен, то всё бы получилось. Но libpq как-то хитро берёт токен пользователя неявно из переменных окружения системы, вот бы как-то самому установить эту переменную окружения с токеном
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
Alexandr Emelyanov
зачем клиента вебсервера пускать в бд с его учеткой?
Чтобы настроить авторизацию - доменным пользователям назначить группы в ident.conf и на эти группы уже настроить через GRANT команды права на операции с данными на разных таблицах бд
источник

AE

Alexandr Emelyanov in pgsql – PostgreSQL
Maxim Sherstuk
Чтобы настроить авторизацию - доменным пользователям назначить группы в ident.conf и на эти группы уже настроить через GRANT команды права на операции с данными на разных таблицах бд
пахнет оверинженерингом
источник

AE

Alexandr Emelyanov in pgsql – PostgreSQL
как разделение прав на записи в таблицах?
источник

AE

Alexandr Emelyanov in pgsql – PostgreSQL
вообще похоже на подходы из 90-х в стиле оракла
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
Alexandr Emelyanov
как разделение прав на записи в таблицах?
Да, row_level_security на строках таблиц для разных ролей пользователей
источник

AE

Alexandr Emelyanov in pgsql – PostgreSQL
Maxim Sherstuk
Да, row_level_security на строках таблиц для разных ролей пользователей
как задавать из приложения при вставке?
источник

AE

Alexandr Emelyanov in pgsql – PostgreSQL
или у вас вся система в бд на хранимках?
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
Там один раз администратор настраивает права на таблицах в бд для разных ролей, потом доменные имена транслируются в роли пользователей, хранимки пока не используются
источник

S

Sv. in pgsql – PostgreSQL
Привет! Есть ли инструменты чтобы сделать типа точку восстановления в БД, чтобы потом накатить какие были изменения в БД за последнюю неделю?

К примеру, я обслужу БД, буду 20 раз перезагружать и т.п. Чтобы не  мешать пользователям я её просто скопирую себе, внесу изменения и потом просто заменю новой БД и залью последние изменения которые были внесены пользователями. Как мне сохранить эти последние изменения?
источник

S

Sv. in pgsql – PostgreSQL
Или логика действий не правильная?
источник

AE

Alexandr Emelyanov in pgsql – PostgreSQL
Maxim Sherstuk
Там один раз администратор настраивает права на таблицах в бд для разных ролей, потом доменные имена транслируются в роли пользователей, хранимки пока не используются
т.е. система сама не может при первом запуске это настроить?
источник

AE

Alexandr Emelyanov in pgsql – PostgreSQL
как быть, если пользователь запросил недозволенные данные?
источник