Как можно ограничить права пользователя так, чтобы он мог получить селект из таблицы только через функцию, а напрямую не мог?
Можно обойтись и без функции - использовать вьюшку (представление), а данные изменять правилами. Функцию создавать с инструкцией 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
Можно обойтись
Можно обойтись и без функции - использовать вьюшку (представление), а данные изменять правилами.
Функцию создавать с инструкцией SECURITY DEFINER
пример:
в обоих случаях доступа у пользователя к таблице быть не должно.
Большое спасибо
Все получилось с SECURITY DEFINER