Uprawnienia do INSERT w PostGIS / QGIS

12

Próbuję ustawić uprawnienia w mojej bazie danych dla użytkowników, aby mogli aktualizować, WSTAWIAĆ, USUWAĆ i oczywiście WYBIERAĆ w tabelach geograficznych.

Ponieważ używam niektórych typów SERIAL dla moich identyfikatorów, wolałbym nawet nie dawać użytkownikom możliwości ręcznej edycji tego pola. Definiuję więc uprawnienia kolumnowe. Działa dobrze w części UPDATE, ale przycisk w QGIS pozwalający na utworzenie nowego obiektu pozostaje wyszarzony. Jedynym sposobem, w jaki wydaje się działać, jest to, że nie określam żadnego pola w definicji uprawnień. Nawet gdy wybiorę wszystkie pola, to nie działa (nawet gdybym pomyślał, że nieokreślenie żadnej kolumny i podanie wszystkich z nich byłoby takie samo).

Wydaje się, że jest to coś, czego nie rozumiem, lub w definicji przywileju istnieje ograniczenie dla właściwej interakcji między DB a QGIS. Czy ktoś ma jakieś informacje lub porady, które mogłyby pomóc mi zrozumieć, co się dzieje i / lub (jeszcze lepiej) pomóc mi osiągnąć mój cel?

Zawsze mogę sobie z tym poradzić, ustawiając pole jako nieedytowalne w definicji stylu, ale ponieważ każdy może ustawić to, co chce, wolałbym bezpieczniejszą alternatywę.

Uruchamianie QGIS 2.14, PostGIS 2.3 dla PostgreSQL 9.5.

GuiOm Clair
źródło
Czy używasz polecenia GRANT SQL do ustawiania praw użytkownika (uprawnień)? UDZIELIŁEŚ SIĘ na swoim stole?
Zoltan
@Zoltan Tak, moje zapytanie wygląda jakGRANT INSERT (col2, col3, col4) ON table TO users
GuiOm Clair
5
Użytkownik, który powinien mieć uprawnienia INSERT, musi mieć pełne uprawnienia do kolumny klucza podstawowego. W przeciwnym razie nie będzie mogła wykonać wstawki. Nie sądzę, żeby było na to jakikolwiek sposób. Jak już wspomniałeś, możesz ograniczyć widoczność tej kolumny w QGIS.
Micha
1
@Micha Ok, więc to ma sens, mówiąc tak ... Myślę, że mam też inne obejście dla specyficznego dla kolumny wyzwalacza NA WSTAWIE NIE NIC i NA AKTUALIZACJI NIE NIC dla klucza podstawowego, co uniemożliwiłoby jakąkolwiek ręczną edycję klucz podstawowy. Dzięki.
GuiOm Clair
3
Lub tworzysz widok swojej tabeli z wyłączeniem kolumny SERIAL i dajesz dostęp tylko do tego widoku.
JoeBe

Odpowiedzi:

0

Użytkownik, który powinien mieć uprawnienia INSERT, musi mieć pełne uprawnienia do kolumny klucza podstawowego. W przeciwnym razie nie będzie mogła wykonać wstawki. Nie sądzę, żeby było na to jakikolwiek sposób. Jak już wspomniałeś, możesz ograniczyć widoczność tej kolumny w QGIS.

Jeśli chodzi o twój komentarz: column-specific trigger ON INSERT DO NOTHING and ON UPDATE DO NOTHING for the primary keynie jestem pewien, czy to zadziała. Po włożeniu nowego wiersza, nowy klucz podstawowy musi zostać utworzony, oczywiście. Nie chcesz tego obchodzić.

Micha
źródło