Привилегии на INSERT в PostGIS / QGIS


12

Я пытаюсь установить привилегии в своей базе данных для пользователей, чтобы они могли только ОБНОВИТЬ, ВСТАВИТЬ, УДАЛИТЬ и, конечно, ВЫБРАТЬ для географических таблиц.

Поскольку я использую некоторые типы SERIAL для своих идентификаторов, я бы предпочел даже не давать пользователям возможность вручную редактировать это поле. Поэтому я определяю привилегии по столбцам. Он отлично работает в части ОБНОВЛЕНИЕ, но кнопка в QGIS, позволяющая создать новый объект, остается серой. Единственный способ, которым это работает, - это когда я не указываю никаких полей в определении привилегий. Даже когда я выбираю все поля, это не работает (хотя я бы подумал, что не указав ни одного столбца и указав все из них, будет то же самое).

Кажется, это что-то, чего я не понимаю, или в определении привилегий есть ограничение для правильного взаимодействия между БД и QGIS. Есть ли у кого-нибудь какая-либо информация или совет, который мог бы помочь мне понять, что происходит, и / или (даже лучше) помочь мне достичь моей цели?

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

Запуск QGIS 2.14, PostGIS 2.3 для PostgreSQL 9.5.


Используете ли вы команду GRANT SQL для установки прав (привилегий) пользователя? Вы ДЕЙСТВИТЕЛЬНО ВСТАВИЛИ на своем столе?
Золтан

@Zoltan Да, мой запрос выглядит какGRANT INSERT (col2, col3, col4) ON table TO users
GuiOm Clair

5
Пользователь, который должен иметь права INSERT, должен иметь полные права на столбец первичного ключа. В противном случае она не сможет сделать вставку. Я не думаю, что есть способ обойти это. Вы можете только ограничить видимость этого столбца в QGIS, как вы уже упоминали.
Мика

1
@Micha Ладно, действительно, в общем-то это имеет смысл сказать вот так ... Я думаю, у меня есть еще один обходной путь - триггер, специфичный для столбца: ON INSERT DO Ничего и ON UPDATE Ничего не делать для первичного ключа, что предотвратит любое ручное редактирование первичный ключ. Благодарю.
GuiOm Clair

3
Или вы создаете представление своей таблицы, исключая столбец SERIAL, и предоставляете доступ только к этому представлению.
JoeBe

Ответы:


0

Пользователь, который должен иметь права INSERT, должен иметь полные права на столбец первичного ключа. В противном случае она не сможет сделать вставку. Я не думаю, что есть способ обойти это. Вы можете только ограничить видимость этого столбца в QGIS, как вы уже упоминали.

Что касается вашего комментария: column-specific trigger ON INSERT DO NOTHING and ON UPDATE DO NOTHING for the primary keyя не уверен, что это сработает. При вставке новой строки , очевидно, должен быть создан новый первичный ключ . Вы не хотите обойти это.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.