W języku SQL wykonano przedstawione w ramce polecenia GRANT. Kto będzie miał prawo do przeglądania danych oraz ich zmiany?
GRANT ALL ON firmy TO 'adam'@'localhost'; GRANT ALTER, CREATE, DROP ON firmy TO 'anna'@'localhost'; GRANT SELECT, INSERT, UPDATE ON firmy TO 'tomasz'@'localhost';
A. Tomasz i Anna
B. Adam i Anna
C. Tomasz i Adam
D. Tylko Tomasz
Poprawna odpowiedź to Tomasz i Adam, bo trzeba rozróżnić uprawnienia do danych od uprawnień do struktury bazy. Adam otrzymał GRANT ALL ON firmy, czyli pełny zestaw uprawnień do wskazanego obiektu firmy. W praktyce oznacza to między innymi możliwość wykonywania operacji SELECT, INSERT, UPDATE, DELETE, a często także operacji administracyjnych zależnie od systemu bazodanowego i zakresu nadania. Czyli Adam może zarówno przeglądać dane, jak i je zmieniać. Tomasz dostał dokładnie te uprawnienia, które pasują do treści pytania: SELECT pozwala czytać rekordy, INSERT dodawać nowe dane, a UPDATE modyfikować istniejące rekordy. To wystarcza, żeby mówić o przeglądaniu oraz zmianie danych. Anna ma ALTER, CREATE i DROP, czyli uprawnienia typu DDL, związane raczej ze strukturą: tworzeniem tabel, zmianą definicji tabel, usuwaniem obiektów. Moim zdaniem to jest klasyczna pułapka egzaminacyjna, bo zmiana tabeli nie oznacza automatycznie zmiany danych w tabeli. W dobrych praktykach produkcyjnych zwykle nie daje się GRANT ALL zwykłym użytkownikom, tylko stosuje zasadę najmniejszych uprawnień: użytkownik dostaje tylko SELECT, INSERT, UPDATE lub inne prawa faktycznie potrzebne do pracy.
W tym pytaniu najłatwiej pomylić dwa różne światy SQL: operacje na danych i operacje na strukturze bazy. Prawo do przeglądania danych oznacza zwykle SELECT, natomiast prawo do ich zmiany wiąże się z poleceniami DML, takimi jak INSERT, UPDATE, ewentualnie DELETE. Tomasz ma SELECT, INSERT i UPDATE, więc może odczytywać rekordy oraz dodawać i modyfikować dane. Adam ma ALL, czyli szeroki komplet uprawnień, w którym zawierają się również prawa do odczytu i modyfikacji danych. Dlatego pominięcie Adama byłoby błędem, bo ALL nie jest osobnym, wąskim prawem, tylko zbiorem wielu uprawnień. Z drugiej strony Anna nie powinna być traktowana jako osoba mająca prawo do pracy na danych, mimo że jej uprawnienia wyglądają mocno. ALTER, CREATE i DROP dotyczą głównie obiektów bazy danych: tabel, indeksów, schematów czy innych elementów strukturalnych. Można powiedzieć, że Anna może przebudować magazyn, ale niekoniecznie ma prawo czytać i zmieniać towary leżące na półkach. To trochę uproszczenie, ale dobrze oddaje sens. Typowy błąd polega na tym, że ktoś widzi ALTER albo DROP i uznaje je za mocniejsze od SELECT oraz UPDATE w każdym kontekście. Technicznie są to uprawnienia wysokiego ryzyka, ale nie odpowiadają bezpośrednio na pytanie o przeglądanie i zmianę rekordów. W administracji bazami danych warto zawsze sprawdzać, czy mówimy o DDL, czyli definicji struktury, czy o DML, czyli manipulacji danymi. To rozróżnienie bardzo często decyduje o poprawnej interpretacji poleceń GRANT.