2017-01-20 19 views
0

Я хочу создать пользователей, которые могут выполнять только функции из одной базы данных. Не просматривать исходные функции, процедуры, выбор и т. Д. Любой базы данных.Как сделать один пользователь postgresql с привилегиями только выполнять функции

Спасибо.

ответ

1

Это следует сделать это:

  • Разрешить пользователю подключаться только к правильной базе данных, либо с правами на объект базы данных (вы должны REVOKECONNECT привилегия предоставляется PUBLIC по умолчанию первым) или с подходящими записями в pg_hba.conf.

  • В одной базе данных, где пользователь может подключиться, она должна иметь привилегию USAGE на схемах, содержащих функции.

  • Создать функции с SECURITY INVOKER, принадлежащими пользователю, имеющему права доступа к требуемым объектам.

  • REVOKE EXECUTE по всем функциям от PUBLIC и GRANT по желанию пользователя.

В PostgreSQL нет поддерживаемого способа сохранить пользователя, который может войти в систему, увидев исходный код функций. Вы можете попробовать REVOKE SELECT ON pg_proc FROM PUBLIC, но не удивляйтесь, если у вас возникнут проблемы с клиентскими программами, такими как pgAdmin или psql.

+0

Спасибо @ laurenz-albe, я попробую! – aispobla