дана роль А
Есть триггер, создающий зависимые таблицы, данный триггер запустил пользователь В, что в итоге привело, что у пользователей A и С не было доступов к свежим таблицам.
Можно ли данную проблему решить перекрестной передачи прав? Что то типа:
A -> B и С
B -> A и С
С -> A и B
Или есть более элегантное решение?
Версия PG 14
Можно передать триггер кому-нибудь конкретно (security definer). Дажэ полезно (только прочитайте раздел про безопасность securiy definer-функцый, в том числе обнулите в ней search_path). Ещё можно в триггере выставлять права или/и устанавливать дефолтные права для новосозданных таблиц.
А если выполнять триггер может любой пользователь, и в рамках триггер функций не описывать гранты, то как лучше поступить в теории?
Еще есть такая штука как set role, но не уверен, будет ли работать в триггере (скорее всего нет)
Обсуждают сегодня