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

Доброе время суток! Вопрос о event trigger. Для теста сделал это: CREATE

TABLE public.ddl_history (id serial primary key,ddl_ts timestamptz,ddl_user text,ddl_application text,ddl_tg_tag text,ddl_object_identity text);

CREATE FUNCTION test_event_trigger_for_ddl_commands() RETURNS event_trigger LANGUAGE plpgsql AS $$
DECLARE obj record;
BEGIN IF tg_tag <> 'DROP TABLE' THEN
FOR obj IN SELECT * FROM pg_event_trigger_ddl_commands() WHERE object_type IN ('table', 'view')
LOOP INSERT INTO public.ddl_history (ddl_ts,ddl_user,ddl_application,ddl_tg_tag,ddl_object_identity)
VALUES (statement_timestamp(),current_user,current_setting('application_name'),tg_tag,obj.object_identity);
END LOOP;
END IF;
END;
$$;

CREATE EVENT TRIGGER test_event_trigger_for_ddl_commands ON ddl_command_end EXECUTE FUNCTION test_event_trigger_for_ddl_commands();

Понятно что есть проблема с permissions для таблицы public.ddl_history для остальных позователей у кого есть права на создание таблицы если у пользователя нет прав писать в public.ddl_history.
Как можно решить эту задачку?
P.S. идея использовать event trigger для создания обычных triggers в новых таблицах и создания views из вновь созданной таблицы.

5 ответов

14 просмотров

SECURITY DEFINER?

SECURITY DEFINER. Если security на самом деле важна, внимательно прочитайте (и тщательно следуйте): https://www.postgresql.org/docs/current/sql-createfunction.html#SQL-CREATEFUNCTION-SECURITY

Denis-M Автор вопроса
Pavel Chernoskutov
SECURITY DEFINER?

Спасибо. Судя по тому что прочитал очень страшная вещь. Но действительно решает проблему. Но появится много новых 😁

Denis-M Автор вопроса

Возможно ли допустим только grant insert для моей ddl_history таблицы в public схеме для пользователя у которого уже есть права на ddl команды.

Denis M
Возможно ли допустим только grant insert для моей ...

Какого именно пользователя (Вы всю схему прав покажите, так ничего непонятно). Но вот это (со стандартными правами до v15): > для моей ddl_history таблицы в public схеме намекает нам, что Вы уже проиграли. ;) "Keep the default search path, and grant privileges to create in the public schema. ... However, this is never a secure pattern."

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта