Могу ли я создать роль группы / пользователя в postgres, чтобы он мог выполнять только предопределенные функции? - PullRequest
0 голосов
/ 10 ноября 2010

Я хочу сделать пользователя базы данных, который будет использовать мои предопределенные функции (login (pass, login), get_users_you_are_in_charge_off (login, pass) и т. Д.).

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

Проблема в том, что эти функции используют SELECT, UPDATE, INSERT. А когда я даю только права на выполнение функций, они выдают ошибки, которые у них нет разрешения на это.

Есть идеи? (Может быть, я мог бы статически изменить роль внутри функций?)

// Чтобы ответить на некоторые комментарии На 1-й комментарий: хорошо, я посмотрю на него и отвечу, если это поможет мне. Благодарю. Хорошо, спасибо за ваш ответ, это именно то, что мне нужно. Спасибо пользователю "plundra"!

На 2-й комментарий: У меня уже есть таблица или пользователи (с их логинами). Но если я сделаю функцию checkLogin (name, pass), эту функцию нужно выбрать из таблицы users. И если я не даю пользователю права делать ВЫБОРЫ, это не сработает. Если я даю права, то пользователь может просто сделать SELECT * от пользователей; и посмотрите, какие есть пароли.

ОК, спасибо за ваши ответы, первый комментарий именно то, что мне нужно. Спасибо пользователю "plundra"!

Ответы [ 2 ]

1 голос
/ 10 ноября 2010

Ответ: не храните пароли в базе данных.

Вместо этого храните соли и хэши паролей (оба текстовых поля).

При создании нового пользователя вы создаетевыбирайте случайным образом, хешируйте их выбранный пароль и сохраняйте хэш.

Чтобы аутентифицировать кого-либо, введите пароль, который он вводит, соль, сохраненную в его записи пользователя, запустите его через алгоритм хэширования (SHA1 и т. д.).), и сравнил его с сохраненным хешем.

Несмотря на простоту концепции, детали могут укусить вас, поэтому для этого стоит использовать чужой код .

0 голосов
/ 10 ноября 2010

Проверьте "ОПРЕДЕЛИТЕЛЬ БЕЗОПАСНОСТИ" на postgresql.org/docs/current/static/sql-createfunction.html - plundra

Ответил пользователь plundra.Это то, что мне было нужно, спасибо:)

...