Назад | Перейти на главную страницу

PostgreSQL: разрешение на выполнение функции (которая вставляется в таблицу), но нет разрешения на прямую вставку

Извините, если это неправильное место, чтобы задать этот вопрос.

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

Если я даю разрешение на выполнение для роли входа в веб-интерфейс, но не предоставляю разрешения на вставку таблиц, которые вставляются в функцию, возникает ошибка доступа.

Как я могу это сделать?

У вас должна быть другая роль, которая имеет права писать прямо в таблицы. Затем вы создаете функцию, используя эту другую роль, и добавляете к определению функции пункт «SECURITY DEFINER». Затем вы предоставляете выполнение этой функции своей веб-роли.

Вы можете прочитать об этом в документация.

Вы также можете проверить Сообщение блога что я однажды написал о защите базы данных.