Re: [pgsql-ru-general] Re[2]: [pgsql-ru-general] Роли: управление доступом к другим ролям. Роли как объекты системы безопасности.

From: silly_sad <sad(at)bankir(dot)ru>
To: sftf <sftf-misc(at)mail(dot)ru>
Cc: pgsql-ru-general(at)postgresql(dot)org, pronix pronix <pronix(dot)service(at)gmail(dot)com>
Subject: Re: [pgsql-ru-general] Re[2]: [pgsql-ru-general] Роли: управление доступом к другим ролям. Роли как объекты системы безопасности.
Date: 2008-07-03 13:05:30
Message-ID: 486CCE9A.3070004@bankir.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

sftf wrote:
> Но нет механизма контроля прав доступа одной роли по отношению к другой.

> Проблема #1: неуправляемые права ролей с привиоегией CREATEROLE по отношению к другим не суперюзерским ролям.
> Проблема #2: ограниченые возможности по котнролю присвоения ролей.

create table usr (
name text primary key,
privileges text
);

create function create_usr (text, text) returns int as $$
declare priv text;
begin
select into priv privileges from usr where name=session_user;
if not my_mega_system_is_admin(priv) then
return 0;
end if;
create role $1 nosuperuser nocreaterole;
insert into usr values ($1,$2);
end;
$$ language plpgsql security definer;

это только СХЕМАТИЧЕСКИЙ ПРИМЕР.

Идея в следущем.
Вы свои привилегии которыми хотите наделить юзеров храните в своей
специально (идеально) предназначенной для этого таблице И все ваши
админы и неадмины НЕ суперюзеры И управляете содержимым этой таблицы при
помощи SECURITY DEFINER функции, которая основываясь на данных о
привилегиях либо создаёт для вас юзера либо не создаёт.

Разумеется функций будет не одна и их можно зацепить за триггеры.
и вообще расширить систему прав КАК ПОЖЕЛАЕТЕ.

In response to

Browse pgsql-ru-general by date

  From Date Subject
Next Message sftf 2008-07-23 07:54:55 Re: [ADMIN] Re: Rewrite SELECT WHERE clause on per-session bases. Modifing view source code in one session (user's) from another session (admin's)?
Previous Message sftf 2008-07-03 10:01:44 Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re[2]: [pgsql-ru-general] Роли: управление доступом к другим ролям. Роли как объекты системы безопасности.