Привет: у меня есть интересная проблема, которая нуждается в умном решении: -)
PG 9.6.5 по RHEL6_64
Ограничения, с которыми мне приходится жить:
- Я не суперпользователь, но у меня есть креатерол.
- Пароль необходим для входа в систему
Допустим, у меня есть таблица под названием "согласования" ...
create table approvals (approval_id text);
И еще один стол, который называется «грантеры» ...
create table granters (linux_uid text);
Мне нужен сценарий perl / DBI, который должен позволять всем пользователям выбирать, но только те linux_uids в таблице «granters» могут вставлять / обновлять / удалять в таблицу «согласований». Но когда кто-то из таблицы «granters» запускает Perl-скрипт, я не хочу, чтобы ему приходилось вводить пароль. Сценарий perl может проверить, что авторизованный пользователь запускает его с помощью getlogin, и это достаточно хорошо.
Я могу создавать роли для грантеров и предоставлять им выбор / вставку / обновление / удаление в таблице «утверждений», но для входа в систему им нужно будет ввести пароль (одно из ограничений в БД заключается в том, что pawwsords требуются). Поэтому я не вижу, как этот традиционный метод будет работать.
Я мог бы создать перед вставкой, обновлением и удалением триггеры, которые могут проверять идентификатор человека, выполняющего скрипт perl, по списку идентификаторов в таблице «granters», а затем разрешать / отклонять попытку на этой основе. Но я не могу передать linux uid в хранимую процедуру, связанную с триггером (ами). Что-то вроде perlplu может позволить мне прослушать linux uid, но опять же, я не являюсь суперпользователем, поэтому (я считаю) я не могу создать что-то подобное.
Есть идеи?
Заранее спасибо!