LINUX.ORG.RU

Ограничение доступа к таблице postgresql

 


0

2

Доброго времени суток!

Возникла проблема следующего характера. Необходимо запретить update определенной строки таблицы определенным юзерам. Реально ли это сделать?

Есть следующая теоретическая идея. Написать функцию, которая делает update. Функция определяет юзера, который ее вызвал и в зависимости от юзера, делает update конкретной строки. Запретить всем update, но разрешить использование функции. Будет ли такое работать?

Выглядит все это очень костыльно. Может есть какие-то более адекватные способы решения такой задачи? На ум приходит только делать отдельную таблицу для каждого пользователя, но это тоже некрасиво. Спасибо.

maxcom

Мне почему-то сразу же приходит в голову мысль про application server

По-моему, так каноничней, намного больше гибкости в регламентировании использования БД — это дать доступ к БД одному приложению — серверу, и пусть сервер сам решает всё на своё усмотрение. А так, полагаю, лучше искать, от чьего имени исполняется хранимая функция.

Northsoft ★★ ()

Application server — было бы идеальным решением, но на это нету сейчас ни времени, ни возможностей. Хотелось бы решить средствами postgres-а максимально быстрее.

По поводу отдельной функции. Меня смущает тот факт, что при вызове функции у нее будут такие же права, как и у пользователя, который вызывает ее. Если никак отдельные права не дать, то идея не взлетит.

observer ★★★ ()
Ответ на: комментарий от observer

Но это появилось только в 9.5, имей в виду.

AnDoR ★★★★★ ()

Подходящий и для более старых версий метод - создать view, и пусть приложения работают с ним как с обычной таблицей.

unC0Rr ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.