Права на select и exec

Как можно ограничить права пользователя так, чтобы он мог получить селект из таблицы только через функцию, а напрямую не мог?

Опции просмотра комментариев

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

Можно обойтись

Можно обойтись и без функции - использовать вьюшку (представление), а данные изменять правилами.
Функцию создавать с инструкцией SECURITY DEFINER
пример:

CREATE FUNCTION "sma"."test" () RETURNS SETOF "public"."foo" AS
$body$
SELECT * FROM foo;
$body$
LANGUAGE 'sql'
VOLATILE
CALLED ON NULL INPUT
SECURITY DEFINER;

в обоих случаях доступа у пользователя к таблице быть не должно.

Большое спасибо

Все получилось с SECURITY DEFINER

Опции просмотра комментариев

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

Back to top

(С) Виктор Вислобоков, 2008-2023