Это следует сделать это:
Разрешить пользователю подключаться только к правильной базе данных, либо с правами на объект базы данных (вы должны REVOKE
CONNECT
привилегия предоставляется PUBLIC
по умолчанию первым) или с подходящими записями в pg_hba.conf
.
В одной базе данных, где пользователь может подключиться, она должна иметь привилегию USAGE
на схемах, содержащих функции.
Создать функции с SECURITY INVOKER
, принадлежащими пользователю, имеющему права доступа к требуемым объектам.
REVOKE EXECUTE
по всем функциям от PUBLIC
и GRANT
по желанию пользователя.
В PostgreSQL нет поддерживаемого способа сохранить пользователя, который может войти в систему, увидев исходный код функций. Вы можете попробовать REVOKE SELECT ON pg_proc FROM PUBLIC
, но не удивляйтесь, если у вас возникнут проблемы с клиентскими программами, такими как pgAdmin или psql
.
Спасибо @ laurenz-albe, я попробую! – aispobla