Назначение определенным пользователям ограниченных прав суперпользователя

У роли суперпользователя есть такие права, которые можно назна­чить и другим ролям, не являющимся суперпользователями. Например, роли вов предоставляется возможность создавать но­вые базы данных: Для создания новых пользователей понадобится назначить право createuser:
Однако обычным пользователям можно давать и более узкие права и контролируемый доступ к некоторым действиям, зарезер­вированным для суперпользователей, с помощью функций security definer. Аналогично можно передавать часть прав одного пользова­теля другому. Для начала вам необходимо иметь права суперпользователя БД. Предположим, что вы — суперпользователь по умолчанию postgres. Продемонстрируем два случая назначения обычному пользовате­лю прав, доступных только суперпользователям. БД должна поддерживать внутренний язык PL/pgSQL. Начиная с версии 9.0 рекомендуется по умолчанию устанавливать поддержку PL/pgSQL во все новые базы данных, однако эту опцию могли из­менить создатели пакетов или администраторы. Если поддержки нет, как суперпользователь PostgreSQL выполните следующее:
Когда вызывается функция с security definer, Postgres меняет права сессий для пользователя, который определил ее при выполнении. Таким образом, когда bob вызывает функцию copy_f rom, он фактически на время ее выполнения становится супер­пользователем. Это похоже на функцию setuid в Unix-системах, где можно сде­лать так, чтобы все, у кого есть право исполнения программы, запу­скали ее на правах ее владельца. Риски при этом тоже сходные. Есть и другие операции, зарезервированные только для суперполь­зователей PostgreSQL, например настройка некоторых параметров. Некоторые параметры, контролирующие запись в журнал, могут определяться только суперпользователями.



Рубрика: Женский интерес

Комментарии закрыты.