Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Bazy danych Administracja serwerem i bezpieczeństwo

GRANT ALL PRIVILEGES ON klienci TO jan; REVOKE SELECT, INSERT, UPDATE, DELETE ON klienci FROM jan; Jakie uprawnienia będzie miał użytkownik jan po...

GRANT ALL PRIVILEGES ON klienci TO jan;
REVOKE SELECT, INSERT, UPDATE, DELETE ON klienci FROM jan;
Jakie uprawnienia będzie miał użytkownik jan po wykonaniu na bazie danych przedstawionych poleceń?
A. Będzie mógł wyszukiwać dane w tabeli klienci.
B. Będzie mógł zmienić strukturę tabeli klienci.
C. Będzie mógł usuwać rekordy z tabeli klienci.
D. Będzie mógł wstawiać rekordy do tabeli klienci.

Pytanie z egzaminu CKE, styczeń 2020 (arkusz EE.09-SG-20.01).

Po wykonaniu tych poleceń użytkownik jan nadal będzie mógł zmienić strukturę tabeli klienci, czyli w praktyce wykonać operacje typu ALTER TABLE, o ile dany system bazodanowy zalicza takie uprawnienie do ALL PRIVILEGES na poziomie tabeli. Najpierw polecenie GRANT ALL PRIVILEGES ON klienci TO jan nadaje mu pełny zestaw uprawnień do tej tabeli. Potem REVOKE SELECT, INSERT, UPDATE, DELETE odbiera tylko konkretne uprawnienia związane głównie z pracą na danych w rekordach: odczyt, dopisywanie, modyfikację i usuwanie wierszy. Nie odbiera natomiast uprawnień strukturalnych, takich jak ALTER. Dlatego jan nie powinien móc przeglądać danych klientów ani dodawać nowych rekordów, ale może mieć możliwość np. dodania kolumny telefon, zmiany typu pola albo modyfikacji definicji tabeli. Moim zdaniem to dobry przykład, że w SQL trzeba bardzo dokładnie czytać listę uprawnień w REVOKE, bo odebranie części praw nie oznacza automatycznie cofnięcia wszystkiego. W praktyce administracyjnej stosuje się raczej zasadę najmniejszych uprawnień: użytkownik dostaje tylko to, co faktycznie jest mu potrzebne, a nie najpierw wszystko, a potem część się zabiera.
W tym zadaniu łatwo pomylić uprawnienia do danych z uprawnieniami do struktury tabeli. Polecenie GRANT ALL PRIVILEGES nadaje użytkownikowi jan szeroki pakiet praw do tabeli klienci, ale następne polecenie REVOKE nie cofa całego pakietu. Ono usuwa tylko te uprawnienia, które zostały jawnie wymienione: SELECT, INSERT, UPDATE oraz DELETE. To są typowe operacje DML, czyli dotyczące zawartości tabeli, a niekoniecznie jej definicji. SELECT odpowiada za wyszukiwanie i odczytywanie danych, więc po jego odebraniu jan nie powinien móc wykonywać zwykłych zapytań pobierających rekordy z tabeli klienci. INSERT pozwala na wstawianie nowych wierszy, więc ta możliwość też znika. DELETE służy do usuwania rekordów, a UPDATE do zmiany istniejących wartości w rekordach, chociaż UPDATE nie występuje wśród podanych odpowiedzi jako osobna czynność. Typowy błąd myślowy polega na założeniu, że skoro użytkownik dostał wcześniej ALL PRIVILEGES, to nadal może robić wszystko, mimo późniejszego REVOKE. Drugi częsty błąd to traktowanie REVOKE jak cofnięcia całego nadania, a nie jak selektywnego odebrania wybranych praw. W SQL uprawnienia są ziarniste, czyli można osobno kontrolować odczyt danych, dopisywanie rekordów, usuwanie rekordów oraz operacje administracyjne lub strukturalne. Z mojego doświadczenia warto zapamiętać prostą zasadę: patrzymy, co zostało odebrane po REVOKE, a wszystko z wcześniejszego GRANT, czego nie odebrano, może nadal pozostać aktywne.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.