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

Предоставление привилегий PostgreSQL

Учитывая, что я являюсь пользователем root X. У меня есть пользователи A и B.

Как я могу ПРЕДОСТАВИТЬ пользователю A, чтобы он разрешил пользователю B выполнять определенный набор функций?

Например, у нас есть пользователь A, которому принадлежит database_1. Пользователь A создает некоторые сохраненные функции в этой БД (скажем, function_a и function_b). Пользователь A должен иметь возможность предоставлять выполнение этих функций пользователю B и только ему.

По умолчанию владелец объекта имеет ВСЕ ПРИВИЛЕГИИ на этот объект, но я не помню конкретно, распространяются ли эти привилегии на разрешение нормальному (не супер) пользователю GRANT разрешения на этот объект другим пользователям.

В любом случае вы должны иметь возможность предоставить эту возможность пользователю, добавив WITH GRANT OPTION пункт к GRANT заявление. (Я отсылаю вас к документы для получения полной информации.)

Например, в вашем гипотетическом сценарии в качестве суперпользователя X, вы можете сделать что-то вроде этого:

GRANT ALL PRIVILEGES  ON DATABASE database_1  TO A  WITH GRANT OPTION;

Пользователь A тогда будет власть GRANT разрешения на объекты в database_1 другим пользователям. Продолжая гипотетический пример, пользователь A может дать определенные разрешения пользователю B, как это:

GRANT EXECUTE  ON FUNCTION function_a(), function_b()  TO B;