Возможно ли настроить базу данных Postgres таким образом, чтобы конкретная таблица могла обновляться только триггером. У меня есть таблица истории, обновленная триггером, поэтому я хочу предотвратить несанкционированный доступ к этой таблице. Я хочу, чтобы таблица истории обновлялась только из триггера.

1
Irakli Ugulava 10 Ноя 2017 в 09:22

3 ответа

Лучший ответ

Конечно. И таблица истории, и таблица с триггером принадлежат пользователю, который не имеет прав входа в систему. Затем вы предоставляете права доступа к последней таблице пользователю приложения.

0
Laurenz Albe 10 Ноя 2017 в 11:52

Чтобы предотвратить несанкционированный доступ к таблице, вы можете изменить владельца таблицы на пользователя, который должен получить доступ с помощью следующего запроса:

alter table yourschema.yourtable owner to youruser;

Теперь вы можете отключить триггер для всех остальных пользователей, используя запрос:

alter table yourschema.yourtable disable trigger triggername all;

Здесь all означает, что триггер отключен для всех пользователей. Теперь только владелец сможет использовать триггер для обновления таблицы.

0
clemens 10 Ноя 2017 в 07:45

Триггер всегда срабатывает по событию, по которому он определен. Таким образом, если триггер обновления определен для обновлений, никто не может обойти триггер во время обновления, если триггер включен.

Если у вас есть разные группы пользователей с разными правами доступа к вашей базе данных, вам следует сопоставить это с пользователями в базе данных. Например, вы можете запретить пользователю отключать триггеры на столе.

0
clemens 10 Ноя 2017 в 07:53