Rozdział 18. Role i uprawnienia bazy danych
On 25 października, 2021 by adminRole bazy danych są koncepcyjnie całkowicie odrębne od użytkowników systemu operacyjnego. W praktyce może być wygodnie zachować zgodność, ale nie jest to wymagane. Role baz danych są globalne dla całej instalacji klastra baz danych (a nie dla poszczególnych baz danych). Aby utworzyć rolę, należy użyć polecenia CREATE ROLE SQL:
CREATE ROLE name;
nazwa odpowiada regułom identyfikatorów SQL: albo bez znaków specjalnych, albo z podwójnym cudzysłowem. (W praktyce, zazwyczaj będziesz chciał dodać dodatkowe opcje, takie jak LOGIN, do polecenia. Więcej szczegółów poniżej). Aby usunąć istniejącą rolę, należy użyć analogicznego polecenia DROP ROLE:
DROP ROLE name;
Dla wygody, programy createuser i dropuser są dostarczane jako wrappery wokół tych poleceń SQL, które można wywołać z wiersza poleceń powłoki:
createuser namedropuser name
Aby określić zestaw istniejących ról, należy zbadać katalog systemowy pg_roles, na przykład
SELECT rolname FROM pg_roles;
Meta-polecenie \udu programu psql jest również użyteczne do wypisania istniejących ról.
W celu uruchomienia systemu bazy danych, świeżo zainicjowany system zawsze zawiera jedną predefiniowaną rolę. Ta rola jest zawsze „superużytkownikiem” i domyślnie (chyba że zostanie zmieniona podczas uruchamiania initdb) będzie miała taką samą nazwę jak użytkownik systemu operacyjnego, który zainicjował klaster bazy danych. Standardowo rola ta będzie się nazywała postgres. Aby móc utworzyć więcej ról, musisz najpierw połączyć się jako ta początkowa rola.
Każde połączenie z serwerem bazy danych jest wykonywane w imieniu określonej roli, a rola ta określa początkowe uprawnienia dostępu do poleceń wydawanych przy tym połączeniu. Nazwa roli, której należy użyć dla danego połączenia z bazą danych jest określana przez klienta, który inicjuje żądanie połączenia w sposób specyficzny dla danej aplikacji. Na przykład, program psql używa opcji -U w wierszu poleceń, aby określić rolę, jako którą ma zostać wykonane połączenie. Wiele aplikacji domyślnie przyjmuje nazwę bieżącego użytkownika systemu operacyjnego (włączając w to createuser i psql). Dlatego często wygodnie jest zachować zgodność nazewnictwa między rolami a użytkownikami systemu operacyjnego.
Zbiór ról bazy danych, z którymi może się łączyć dany klient, jest określany przez konfigurację uwierzytelniania klienta, jak wyjaśniono w rozdziale 20. (Tak więc klient nie jest koniecznie ograniczony do łączenia się jako rola o tej samej nazwie co jego użytkownik systemu operacyjnego, podobnie jak nazwa logowania osoby nie musi odpowiadać jej prawdziwemu imieniu i nazwisku). Ponieważ tożsamość roli określa zestaw uprawnień dostępnych dla podłączonego klienta, ważne jest, aby starannie skonfigurować to podczas konfigurowania środowiska wieloużytkownikowego.
Dodaj komentarz