2011-12-13 14 views
21

Od the PostgreSQL docs:Dlaczego PostgreSQL scala użytkowników i grupy w role?

Koncepcja ról podsumowuje pojęcia „użytkownicy” i „grupy”. W wersjach PostgreSQL przed 8.1 użytkownicy i grupy były odrębnymi gatunkami podmiotów, ale teraz są tylko role. Każda rola może działać jako użytkownik, grupa lub jedno i drugie.

Dlaczego wprowadzono tę zmianę w wersji 8.1?

Być może łatwiej z punktu widzenia programistów C, z jedną klasą ról (struct)?

More details:

CREATE USER is equivalent to CREATE ROLE except that CREATE USERdaje pozwolenie zalogować się na użytkownika/roli.

(mam zamiar zaprojektować system uprawnień dla mojego webapp, dlatego jestem tym zainteresowany.)

Odpowiedz

27

Połączenie ma wiele zalet i nie ma wad. Na przykład możesz teraz bezproblemowo przekonwertować "użytkownika" na "grupę" i na odwrót, dodając/usuwając przywilej LOGIN.

ALTER ROLE myrole LOGIN; 
ALTER ROLE myrole NOLOGIN; 

lub można GRANT członkostwa w inny login ("Użytkownika") lub roli bez logowania ("Grupa") do roli:

GRANT joe TO sue; 

Można jeszcze:

CREATE USER james; 

Teraz to tylko role with login privilege. Lub:

CREATE GROUP workers; 

To jest obecnie the same as CREATE ROLE teraz.

Ma wszystko, co trzeba: manual.

3

Z manual:

Standard SQL definiuje pojęcia użytkowników i Role, ale to traktuje je jako odrębne pojęcia i pozostawia wszystkie polecenia definiujące użytkowników, które mają być określone przez każdą implementację bazy danych. W PostgreSQL postanowiliśmy ujednolicić użytkowników i role w jeden rodzaj encji. Role mają zatem o wiele więcej atrybutów opcjonalnych niż w standardzie .

+2

to naprawdę nie odpowiedzieć * * dlaczego mimo ... –

+0

To jest coś, o co powinieneś zapytać hakerów, którzy to zrobili, a nie takie forum jak SO. –

+0

Wystarczająco fair :) Po prostu mówiąc, że tak czytałem pytanie. –

3

Posiadanie rozróżnienia między użytkownikami i grupami nic Ci nie zyskuje.

AFAIK motywacji zmiany było uproszczenie zastosowań jak: maskowania jako kolejny

  • jeden użytkownik, na przykład administrator symulującej obniżoną użytkownikowi uprawnienia.W przypadku zunifikowanych ról staje się to kolejną zmianą obecnej roli, nie różniącą się od zmiany grupy podstawowej.

  • Grupy, które są członkami innych grup w celu implementacji granularnych uprawnień dostępu.

Jeśli chcesz szczegóły, choć jesteś najlepiej wyłączyć sprawdzanie archiwów listy pgSQL-hakerów na lata, a historia git (przeliczona z CVS).

+0

Dzięki za sugestię archiwów listy hakerów pgsql. Znalazłem odpowiedni wątek i dodałem kolejną odpowiedź na to pytanie. – KajMagnus

5

Znalazłem this thread in the PostgreSQL-Hackers list, od 6 czerwca 2003 r., Co sugeruje, że użytkownicy i grupy oraz role są skonsolidowane. (Dziękuję Craigowi Ringerowi za sugestię, że sprawdzam archiwa listy haseł pgsql.)

Oto kilka wspomnianych korzyści (tych, które znalazłem).

pozwalają grupy mają grupy jak członków

kod ACL będzie uproszczone

grantu/REVOKE składni i formatu wyświetlania listy ACL może być uproszczone, ponieważ nie byłoby potrzeba znacznika syntaktycznego co do nazwy danej użytkownika lub grupy.

W pewnych okolicznościach może to widzę sensu, aby umożliwić rejestrowanie w bezpośrednio jako grupy/roli/whatchacallit

to również rozwiązać problem, który information_schema poglądy będą pokazać tylko posiadane obiekty

[ Dzięki temu łatwiej] reprezentujące przywileje grupom [od chcesz po prostu ponowne wykorzystanie kodu związanego rola?]

Powiązane problemy