Роли: управление доступом к другим ролям. Роли как объекты системы безопасности.

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 как и другие объекты СУБД:
таблицы, представления, процедуры и т.д.?

Responses

Browse pgsql-ru-general by date

  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