172 похожих чатов

Всем привет. Помогите разобраться с ситуацией. Создал роль на сервере: DO $do$ DECLARE

sch text;
BEGIN
FOR sch IN SELECT nspname FROM pg_namespace
LOOP
EXECUTE format($$ GRANT usage, create ON SCHEMA %I TO role_rw$$, sch);
execute format($$ GRANT all PRIVILEGES ON ALL TABLES IN SCHEMA %I to role_rw$$, sch);
execute format($$ ALTER DEFAULT PRIVILEGES in schema %I GRANT all PRIVILEGES ON TABLES TO role_rw$$, sch);
execute format($$ grant all PRIVILEGES on all functions in schema %I to role_rw$$,sch);
execute format($$ grant all PRIVILEGES on all SEQUENCES in schema %I to role_rw$$,sch);
END LOOP;
END;
$do$;


Создал 2-ух пользователей и добавил в эту роль.

Ситуация:
1-ый пользователь создает таблицу, а 2-ой пользователь не имеет доступа к этой таблице.
Разве наследие берется не от роли ?

10 ответов

31 просмотр

версия PG 10.17

ALTER DEFAULT PRIVILEGES работает для роли которая его выполнила, если явно не указано FOR ROLE , Следовательно данная конструкция будет работать только в случае если таблицу создаёт указанная роль, в вашем случае тот кто выполнил данный запрос.

Denis
ALTER DEFAULT PRIVILEGES работает для роли которая...

оно навешивается на схемы, в схеме я вижу, для роли права по умолчанию.

Марсель Габдрахманов
оно навешивается на схемы, в схеме я вижу, для рол...

И да, и нет. Посмотрите как оно выглядит в дампе базы pg_dump database_name -s > 1.sql Там будет явно указана роль, и это будет та роль под который вы выполнили данный запрос.

Denis
И да, и нет. Посмотрите как оно выглядит в дампе б...

Скажем так, событие которое триггерит данный грант, это не просто создание объекта в схеме, а создание объекта в схеме определённым пользователем.

Denis
Скажем так, событие которое триггерит данный грант...

то есть по сути, запрос должен быть вот таким ? ALTER DEFAULT PRIVILEGES for role role_rw in schema public GRANT all PRIVILEGES ON tables to role_rw

Марсель Габдрахманов
то есть по сути, запрос должен быть вот таким ? A...

Да, всё верно. Но я не знаю насколько это корректно работает для роли, а не юзера, не проверял. Если работает успешно, просьба поделиться потом тут)

Марсель Габдрахманов
то есть по сути, запрос должен быть вот таким ? A...

Данная команда выглядит бессмысленно: даёте гранты на объекты, созданные из под роли role_rw для этой же роли, а эта роль в свою очередь и так имеет все права, если выступает в качестве владельца объекта. Мб вот это поможет: https://pcnews.ru/blogs/sahar_dla_slonenka____bystryj_start_c_postgresql_dla_komand_v_nlmk-1230872.html#gsc.tab=0 Суть в том, что у всех объектов схеме должен быть один владелец (техническая роль), для этой роли настраиваем default privileges на гранты для тех ролей, которые реально должны читать, писать и управлять объектами. Главное, чтобы при создании новых объектов - они создавались из под этой технической роли, так как если делать просто через смену владельца, дефолты не накатываются.

Sergey Pshenichnikov
Данная команда выглядит бессмысленно: даёте гранты...

спасибо, думаю проще перебрать на 14 версию и выше, и манипулировать встроенными ролями просто (read_data / write_data)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта