1

Temat: Problem z uprawnieniami

Witam, napisałem funkcję (język plpgsql), w której wykonują się ze 2 selekty i insert. Operacje wykonywane są na różnych tabelach. Funkcja działa jeśli ją wykonuje jako administrator lecz gdy nadam prawa do jej wykonania innemu użytkownikowi (który nie powinien mieć innych uprawnień do bazy) funkcja nie działa. Serwer wskazuje, że powinienem nadać dodatkowe uprawnienia do tabel z których funkcja korzysta.

Uprawnienia nadaje w następujący sposób:
GRANT EXECUTE ON „Nazwa_Funkcji”(...) TO „Nazwa_Użytkownika”;

Co mam zrobić jeśli chcę nadać użytkownikowi uprawnienia tylko do funkcji lecz nie do tabel?.

2

Odp: Problem z uprawnieniami

SECURITY DEFINER

3

Odp: Problem z uprawnieniami

Witam.
Według mnie SECURITY DEFINER jest opcją niebezpieczną i należy ją stosować po absolutnym upewnieniu się, że użytkownik nie-administrator niczego nam - przez nadanie tak wysokiego uprawnienia - nie popsuje.
Ja w takich przypadkach używam widoków i poprzez zdefiniowane na nich reguły (rules) korzystam do woli z poleceń DML.
Uważam to za znacznie bezpieczniejszy, choć bardziej pracochłonny pomysł od pomysłu mojego szanownego przedmówcy rski'ego
Pozdrawiam.

P.S. Zagadnienia bazodanowe zacząłem zgłębiać od marca 2009, więc przepraszam za ewentualny niski poziom porad.

4

Odp: Problem z uprawnieniami

Marek ma jak najbardziej racje, ze SECURITY DEFINER moze okazac sie niebezpieczne (swego czasu byly nawet bug'i zwiazane z SECURITY DEFINER). Jakkolwiek jesli funkcja robi INSERT albo SELECT, to wydaje sie ze poziom bezpieczenstwa jest taki sam jak w przypadku widokow i reguł (no chyba ze sa jakies jeszcze nie poprawione dziury w silniki bazodanowym).

5

Odp: Problem z uprawnieniami

6

Odp: Problem z uprawnieniami