Роли: управление доступом к другим ролям. Роли как объекты системы безопасности.
От | sftf |
---|---|
Тема | Роли: управление доступом к другим ролям. Роли как объекты системы безопасности. |
Дата | |
Msg-id | 417367745.20080702111958@mail.ru обсуждение исходный текст |
Список | pgsql-ru-general |
Разрабатываю приложение с использованием Postgres. Обнаружил, что нет возможности управлять тем, что может делать данная роль с другими ролями. Собственно, интересует: такой возможности не существует по каким-то иделогическим или техническим причинам? Для примера, что собственно я хотел реализовать. В разарабатываемом приложении, я хотел части пользователей (менеджерам отделов) дать возможность создавать пользователей и назначать им роли из ограниченного списка ролей. Для этого я предполагал создвать роли менеджеров так: CREATE ROLE manager NOSUPERUSER CREATEROLE... Однако, согласно существующей сейчас в Postgres модели безопасности, роль с привелегикй 'CREATEROLE' может изменять или удалять ЛЮБЫЕ другие роли, кроме SUPERUSER. Таким образом, создав в системе двух менеджеров невозможно разграничить их возможности по управлению ролями "своих" и "чужих" сотрудников, и вообще любых других ролей кроме суперюзеров. Они даже смогут поменять пароли друг у друга. Я начал в документации искать следующие возможности: - наличие подчиненности ролей (роль имеет роль-создателя) - GRANT описывающий, какие именно существующие роли, данная роль может назначать вновь создаваемым ролям - GRANT описывающий, какие роли данная роль может изменять (включая: какие какие именно параметры роли) - GRANT описывающий, какие роли данная роль может удалять К сожалению таких возможностей не оказалось. Кстати, даже в ORACLE таких возможностей нет, за исключением раздельных системых привелегий CREATE/ALTER/DROP USER, что в данной ситуации ничего существенно не меняет. Конечно можно эту задачу решить на уровне приложения: продублировать список ролей в пользовательской таблице с дополнительной информацией (владельцы ролей, права ролей на другие роли) и создавать/изменять роли Postgres через хранимые процедуры+Dynamic SQL (не знаю пока еще, поддерживется дли динамический SQL в Postgres). Но все же удивительно, почему роли не являются такими же объектами в DAC как и другие объекты СУБД: таблицы, представления, процедуры и т.д.?
В списке pgsql-ru-general по дате отправления: