From: | sftf <sftf-misc(at)mail(dot)ru> |
---|---|
To: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Роли: управление доступом к другим ролям. Роли как объекты системы безопасности. |
Date: | 2008-07-02 04:19:58 |
Message-ID: | 417367745.20080702111958@mail.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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 как и другие объекты СУБД:
таблицы, представления, процедуры и т.д.?
From | Date | Subject | |
---|---|---|---|
Next Message | sftf | 2008-07-02 09:15:53 | Re[2]: [pgsql-ru-general] Роли: управление доступом к другим ролям. Роли как объекты системы безопасности. |
Previous Message | Evgeny M. Baldin | 2008-06-17 13:39:50 | Re: Статьи по использованию PostgreSQL |