Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ALTER DEFAULT PRIVILEGES - разъясните поведение. / 9 сообщений из 9, страница 1 из 1
11.08.2020, 11:59
    #39988573
Guzya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER DEFAULT PRIVILEGES - разъясните поведение.
Доброго времени суток!
Решил с помощью ALTER DEFAULT PRIVILEGES выдать право select пользователю USER2 на все будущие таблицы всех пользователей в PUBLIC.

Делаю из под postgres
Код: sql
1.
2.
alter default privileges in schema public grant select on tables TO user2;
create table t1();



Захожу user2 проверяю, все нормально.

Захожу user1, создаю таблицу, подключаюсь user2 и я не имею прав на просмотр.

Если я из под user1 делаю
Код: sql
1.
2.
alter default privileges in schema public grant select on tables TO user2;
create table t1();



То все нормально.
При этом \ddp
Права доступа по умолчанию Владелец Схема Тип Права доступа postgres public таблица user2=r/postgres user1 public таблица user2=r/user1


Получается, если у меня в бд 10 пользователей и мне нужно что бы они могли ЧИТАТЬ ВСЕ таблицы, мне нужно из под каждого пользователя
выполнить alter default privileges для всех пользователей?
...
Рейтинг: 0 / 0
11.08.2020, 12:39
    #39988603
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER DEFAULT PRIVILEGES - разъясните поведение.
Guzya
мне нужно из под каждого пользователя
выполнить alter default privileges для всех пользователей?

Да.

Можно сделать grant на роль и выдать эту роль пользователям вместо назначения каждому пользователю индивидуально. Но alter default privileges должен быть сделан для всех, кто может создавать соответствующие объекты. Потому что пока for role не указан - это означает лишь подразумевать текущего пользователя, а не любого пользователя.
...
Рейтинг: 0 / 0
11.08.2020, 12:47
    #39988609
Guzya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER DEFAULT PRIVILEGES - разъясните поведение.
Понятно, спасибо!
...
Рейтинг: 0 / 0
25.03.2021, 16:33
    #40056924
kupalinka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER DEFAULT PRIVILEGES - разъясните поведение.
Доброго дня!

Вот вроде все должно быть понятно, но в голове не укладывается. Помогите, пожалуйста

create role user1 login;
create role user2 login;

create role role_rw;
create role role_ro;

grant role_rw to user1;
grant role_ro to user2;

alter role user1 inherit;
alter role user2 inherit;

create schema schema1;

И хочется мне, чтобы по умолчанию все пользователи, имеющие роль role_ro, могли читать все создаваемые таблицы в схеме. А с ролью role_rw - имели все права.
Для этого есть alter default privileges

В документации есть FOR ROLE и IN SCHEMA - что в моем случае нужно использовать?

ALTER DEFAULT PRIVILEGES FOR ROLE role_ro in schema schema1 grant select ON tables to role_ro;
ALTER DEFAULT PRIVILEGES FOR ROLE role_rw in schema schema1 grant all privileges ON tables to role_rw;

ALTER DEFAULT PRIVILEGES IN SCHEMA schema1 GRANT select ON TABLES TO role_ro;
ALTER DEFAULT PRIVILEGES IN SCHEMA schema1 GRANT all privileges ON TABLES TO role_rw;

Или я изначально что-то упускаю?
...
Рейтинг: 0 / 0
25.03.2021, 17:02
    #40056938
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER DEFAULT PRIVILEGES - разъясните поведение.
kupalinka,

for role - это кто будет создавать объекты. И for role есть всегда, не бывает alter default privileges для кого угодно. Если вы не указали for role - подразумевается тот, кто этот alter default privileges вызвал.

Поэтому для каждого пользователя, кто будет здесь что-то создавать, добавляете по отдельному alter default privileges.


in schema - это уже в зависимости от задачи. Если хотите выдавать автоматические права только в конкретной схеме - то указываете in schema.
...
Рейтинг: 0 / 0
25.03.2021, 19:27
    #40056998
kupalinka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER DEFAULT PRIVILEGES - разъясните поведение.
Melkij,

Melkijfor role - это кто будет создавать объекты. И for role есть всегда, не бывает alter default privileges для кого угодно. Если вы не указали for role - подразумевается тот, кто этот alter default privileges вызвал.

т.е. т.к. создавать объекты в схеме будут только носители роли _rw, получится вот так?
ALTER DEFAULT PRIVILEGES FOR ROLE role_rw in schema schema1 grant select ON tables to role_ro;
ALTER DEFAULT PRIVILEGES FOR ROLE role_rw in schema schema1 grant all privileges ON tables to role_rw;

MelkijПоэтому для каждого пользователя, кто будет здесь что-то создавать, добавляете по отдельному alter default privileges.
А inherit не помогает наследовать права ролей?
Несколько пугает перспектива по каждому пользователю проходить с alter, т.к. предполагается наличие множества схем и множества пользователей с разделением прав...
Я просто сужу по опыту работы с терадатой. Там роли грантуются права на схему, пользователю грантуется роль. И все прокидывается прекрасно =)
...
Рейтинг: 0 / 0
25.03.2021, 20:07
    #40057004
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER DEFAULT PRIVILEGES - разъясните поведение.
kupalinka,

если вы хотите чтобы система прав работала нормально
создавать должен все админ от специального пользователя
и выдавать права он же + default grants...

>>А inherit не помогает наследовать права ролей?
>>Несколько пугает перспектива по каждому пользователю проходить с alter, т.к. предполагается наличие множества схем и множества пользователей с разделением прав...

если у вас много пользователей могут таблицы создавать то другого варианта у вас нет кроме как для всех делать alter default priviledges
(что в общем не сложно если создание пользователя в хранимку завернуть которая сама все нужные права бы ставила).


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
25.03.2021, 23:34
    #40057048
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER DEFAULT PRIVILEGES - разъясните поведение.
kupalinka,

Можно реализовать такую схему:
- при подключении пользователи имеют возможность только DML-ить таблицы
- для DDL-ов, пользователь должен сделать `SET ROLE master_of_universe;` (ну или как назовёте)
- также можно заморочиться и сделать так, что пока пользователь может DDL-ы, ему недоступны DML-ы, чтобы не было желания оставаться на высоких привилегиях всегда.

Тогда у вас все объекты будут иметь одного общего владельца и, соответственно, DEFAULT PRIVILEGES только ему нужны.
...
Рейтинг: 0 / 0
31.03.2021, 23:00
    #40058727
kupalinka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER DEFAULT PRIVILEGES - разъясните поведение.
Melkij, Maxim Boguk, vyegorov, большое спасибо за помощь!
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ALTER DEFAULT PRIVILEGES - разъясните поведение. / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]