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

Słowa kluczowe: DCL w SQL DDL w SQL DELETE w SQL DML w SQL DROP TABLE w SQL GRANT i REVOKE w SQL

W bazie danych wykonano następujące polecenia dotyczące praw użytkownika adam

GRANT ALL PRIVILEGES ON klienci TO adam;
REVOKE DELETE, DROP ON klienci FROM adam;
Po wykonaniu poleceń użytkownik adam będzie miał prawa do
A. przeglądania tabeli klienci, wstawiania do niej rekordów i aktualizowania danych.
B. usunięcia tabeli klienci.
C. wyłącznie przeglądania tabeli klienci.
D. usuwania rekordów z tabeli klienci.
Polecenie GRANT ALL PRIVILEGES ON klienci TO adam nadaje użytkownikowi adam pełny zestaw uprawnień do obiektu klienci, czyli w praktyce między innymi możliwość odczytu danych, dodawania rekordów, modyfikowania danych, usuwania rekordów oraz wykonywania operacji administracyjnych, zależnie od systemu bazy danych. Potem jednak wykonano REVOKE DELETE, DROP ON klienci FROM adam, czyli odebrano dwa konkretne prawa: DELETE oraz DROP. DELETE dotyczy usuwania wierszy z tabeli, a DROP dotyczy usunięcia całej tabeli jako obiektu bazy danych. Po tej operacji adam nadal ma uprawnienia takie jak SELECT, INSERT i UPDATE, więc może przeglądać tabelę klienci, wstawiać nowe rekordy i aktualizować istniejące dane. Moim zdaniem to jest dobry przykład zasady minimalnych uprawnień: użytkownik powinien mieć tylko te prawa, których faktycznie potrzebuje do pracy. W realnej aplikacji webowej konto używane przez system sprzedaży często ma SELECT, INSERT i UPDATE, ale nie powinno mieć DROP, bo przypadkowe albo złośliwe usunięcie tabeli byłoby katastrofą. Tak samo DELETE warto dawać ostrożnie, bo usunięte rekordy trudniej potem odzyskać, nawet jak są kopie zapasowe.
W tym pytaniu łatwo pomylić dwa poziomy operacji: pracę na danych zapisanych w tabeli oraz operacje administracyjne na samej strukturze tabeli. Samo nadanie ALL PRIVILEGES nie jest końcem historii, bo zaraz po nim wykonano REVOKE, czyli odebranie wybranych uprawnień. To właśnie druga komenda zmienia końcowy wynik. Jeżeli ktoś uznał, że adam może usunąć tabelę klienci, to najpewniej zatrzymał się na pierwszym poleceniu GRANT ALL PRIVILEGES i nie uwzględnił, że prawo DROP zostało później wycofane. DROP nie usuwa pojedynczych klientów, tylko całą tabelę, jej definicję i zwykle też dane, więc jest to bardzo mocne uprawnienie administracyjne. Jeśli ktoś wskazał możliwość usuwania rekordów, to podobny błąd dotyczy prawa DELETE. DELETE pozwala kasować wiersze, na przykład jednego klienta z tabeli, ale ono również zostało odebrane przez REVOKE. Z kolei stwierdzenie, że użytkownik może wyłącznie przeglądać tabelę, jest zbyt ograniczone. Odebrano tylko DELETE i DROP, a nie odebrano INSERT ani UPDATE. W typowym SQL uprawnienia działają addytywnie i selektywnie: można nadać szeroki pakiet praw, a potem zabrać wybrane elementy. Z mojego doświadczenia to częsty błąd na testach, bo uczniowie widzą słowo ALL i już dopowiadają sobie odpowiedź, zamiast przeczytać całe polecenie do końca. Dobra praktyka w administracji bazami danych polega właśnie na dokładnym kontrolowaniu uprawnień użytkowników, szczególnie tych destrukcyjnych, takich jak DELETE, DROP, ALTER czy TRUNCATE.

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.