Uprawnienia systemowe (globalne), nadawane użytkownikom serwera bazy danych, w odróżnieniu od uprawnień obiektowych mogą pozwalać lub zabraniać
A. wstawiać rekordy do jednej wskazanej tabeli.
B. wykonywać instrukcje administracyjne, takie jak tworzenie baz danych lub kont użytkowników.
C. odczytywać dane tylko z jednej wskazanej tabeli.
D. modyfikować dane tylko w jednym wskazanym widoku.
Uprawnienia systemowe, nazywane też globalnymi, dotyczą całego serwera bazy danych albo całej instancji systemu DBMS, a nie pojedynczej tabeli, widoku czy procedury. Dlatego odpowiedź o wykonywaniu instrukcji administracyjnych jest właściwa. Takie uprawnienia mogą pozwalać użytkownikowi na operacje typu CREATE DATABASE, CREATE USER, ALTER USER, DROP DATABASE, nadawanie ról, wykonywanie kopii zapasowych albo zarządzanie konfiguracją serwera. To jest zupełnie inny poziom dostępu niż zwykłe SELECT, INSERT, UPDATE czy DELETE na jednej tabeli. W praktyce administrator nie powinien dawać takich praw każdemu, bo jedno źle nadane uprawnienie globalne może narobić sporo bałaganu, np. użytkownik testowy mógłby utworzyć nowe konto albo usunąć bazę. Z mojego doświadczenia najrozsądniej jest stosować zasadę najmniejszych uprawnień: użytkownik dostaje tylko to, co faktycznie jest mu potrzebne do pracy. W SQL często realizuje się to przez role, np. osobna rola dla administratora, osobna dla aplikacji webowej i osobna dla użytkownika tylko do odczytu. To jest dobra praktyka branżowa i podstawa bezpiecznego zarządzania bazami danych.
W tym pytaniu łatwo pomylić dwa poziomy uprawnień: systemowe oraz obiektowe. Odczyt danych z jednej wskazanej tabeli, wstawianie rekordów do konkretnej tabeli albo modyfikowanie danych tylko w jednym widoku to typowe przykłady uprawnień obiektowych. Obiektem w bazie może być tabela, widok, procedura, funkcja, sekwencja czy schemat, zależnie od systemu bazodanowego. Takie prawa zwykle nadaje się poleceniami w stylu GRANT SELECT ON tabela albo GRANT INSERT ON tabela. One są dokładne, ograniczone i związane z konkretnym elementem struktury bazy. To dobre rozwiązanie dla aplikacji, użytkowników raportujących albo osób pracujących tylko na wybranym fragmencie danych.
Uprawnienia systemowe działają szerzej. One mówią, czy użytkownik może wykonywać czynności administracyjne w obrębie serwera lub całej instancji, na przykład tworzyć bazy danych, zakładać konta, zmieniać konfigurację, zarządzać rolami albo czasem wykonywać operacje utrzymaniowe. Typowy błąd myślowy polega na tym, że skoro każde uprawnienie jest jakimś pozwoleniem, to wszystkie traktuje się tak samo. A w administracji bazami danych ta różnica jest bardzo ważna. Dostęp do jednej tabeli nie oznacza prawa do zarządzania serwerem, tak samo jak możliwość dopisania rekordu nie oznacza prawa do tworzenia nowych użytkowników. Moim zdaniem to jedna z tych rzeczy, które trzeba dobrze rozumieć, bo bez tego łatwo nadać komuś zbyt szerokie prawa i osłabić bezpieczeństwo całego systemu.
Uprawnienia systemowe działają szerzej. One mówią, czy użytkownik może wykonywać czynności administracyjne w obrębie serwera lub całej instancji, na przykład tworzyć bazy danych, zakładać konta, zmieniać konfigurację, zarządzać rolami albo czasem wykonywać operacje utrzymaniowe. Typowy błąd myślowy polega na tym, że skoro każde uprawnienie jest jakimś pozwoleniem, to wszystkie traktuje się tak samo. A w administracji bazami danych ta różnica jest bardzo ważna. Dostęp do jednej tabeli nie oznacza prawa do zarządzania serwerem, tak samo jak możliwość dopisania rekordu nie oznacza prawa do tworzenia nowych użytkowników. Moim zdaniem to jedna z tych rzeczy, które trzeba dobrze rozumieć, bo bez tego łatwo nadać komuś zbyt szerokie prawa i osłabić bezpieczeństwo całego systemu.