Я хочу создать пользователя базы данных, который будет использовать мои предопределенные функции (логин (пароль, логин), get_users_you_are_in_charge_off (логин, пароль) и т. Д.).Могу ли я создать роль группы/пользователя в postgres, чтобы он мог выполнять только предопределенные функции?
Поскольку это должно быть открыто для всех, я хочу создать роль пользователя/группы db, которая позволила бы только пользователю выполнять мои предопределенные функции.
Проблема в том, что эти функции используют SELECT, UPDATE, INSERT. И когда я только даю права на выполнение функций, они бросают ошибки, что у них нет разрешений на это.
Любые идеи? (Может быть, я мог бы статически изменить роль внутри функций?)
// Ответ на некоторые комментарии К 1-му комментарию: Хорошо, я посмотрю на него и ответим, может ли он мне помочь. Благодарю. Хорошо, спасибо за ваш ответ, это ТОЧНО, что мне нужно. Спасибо пользователю «plundra»!
2-й комментарий: У меня уже есть таблица или пользователи (с их логинами). Но если я создаю функцию checkLogin (name, pass), эта функция должна выбирать из пользователей таблицы. И если я не даю право пользователю делать SELECT, это не сработает. Если я даю права, тогда пользователь может просто сделать SELECT * у пользователей; и посмотреть, что такое пароли.
ОК, спасибо за ответы, первый комментарий ТОЧНО, что мне нужно. Спасибо пользователю «plundra»!
Отметьте «ОПРЕДЕЛЕНИЕ БЕЗОПАСНОСТИ» по адресу http://www.postgresql.org/docs/current/static/sql-createfunction.html – plundra
Рассмотрите возможность разделения пользователей в * домене * от Повествование пользователя PostgreSQL. (Например, создайте таблицу 'users' и сначала попросите аутентификацию вашего приложения, используя это. Все сеансы PostgreSQL будут подключаться с использованием одного пользователя PostgreSQL.) –