Privilégios no INSERT no PostGIS / QGIS

12

Estou tentando definir privilégios no meu banco de dados para os usuários, para que eles possam apenas ATUALIZAR, INSERIR, EXCLUIR e, é claro, SELECIONAR em tabelas geográficas.

Como estou usando alguns tipos de SÉRIE para meus IDs, prefiro nem mesmo dar aos usuários a possibilidade de editar manualmente esse campo. Então, eu estou definindo privilégios em colunas. Funciona bem na parte UPDATE, mas o botão no QGIS, que permite a criação de um novo objeto, fica acinzentado. A única maneira que parece estar funcionando é quando não especifico nenhum campo na definição de privilégios. Mesmo quando eu escolho todos os campos, ele não funciona (mesmo que eu pensasse que não especificar nenhuma coluna e especificar todas elas seria a mesma).

Parece ser algo que eu não entendo ou há uma limitação na definição de privilégios para a interação adequada entre o DB e o QGIS. Alguém tem alguma informação ou conselho que possa me ajudar a entender o que está acontecendo e / ou (melhor ainda) me ajudar a alcançar meu objetivo?

Sempre posso lidar com isso definindo o campo como não editável na definição de estilo, mas como qualquer pessoa pode defini-lo como quiser, prefiro uma alternativa mais segura.

Executando o QGIS 2.14, PostGIS 2.3 para PostgreSQL 9.5.

GuiOm Clair
fonte
Você usa o comando GRANT SQL para definir direitos do usuário (privilégios)? Você concedeu INSERÇÃO na sua mesa?
Zoltan
@Zoltan Sim, minha consulta parece #GRANT INSERT (col2, col3, col4) ON table TO users
GuiOm Clair
5
O usuário que deve ter direitos INSERT deve ter direitos totais para a coluna da chave primária. Caso contrário, ela não poderá fazer a inserção. Eu não acho que haja alguma maneira de contornar isso. Você só pode limitar a visibilidade dessa coluna no QGIS, como você já mencionou.
precisa
1
@Micha Ok, então, na verdade, faz todo o sentido dizer assim ... Acho que também tenho outra solução alternativa por um gatilho específico da coluna ON INSERT DO NADA e ON UPDATE DO NADA da chave primária, o que impediria qualquer edição manual de a chave primária. Obrigado.
Guiom Clair
3
Ou você cria uma visão da sua tabela excluindo a coluna SERIAL e apenas fornece acesso a essa visão.
21417 JoeBe

Respostas:

0

O usuário que deve ter direitos INSERT deve ter direitos totais para a coluna da chave primária. Caso contrário, ela não poderá fazer a inserção. Eu não acho que haja alguma maneira de contornar isso. Você só pode limitar a visibilidade dessa coluna no QGIS, como você já mencionou.

Em relação ao seu comentário: column-specific trigger ON INSERT DO NOTHING and ON UPDATE DO NOTHING for the primary keynão tenho certeza de que funcionaria. Ao inserir uma nova linha, uma nova chave primária deve ser criada, obviamente. Você não quer contornar isso.

Micha
fonte