| Termin | Definicja |
|---|---|
| Uprawnienia do bazy danych | Uprawnienia do bazy danych określają zakres operacji dostępnych użytkownikowi w obrębie konkretnej bazy. Zakres operacji dostępnych w bazieUprawnienia do bazy danych są regułami autoryzacji, które określają, jakie czynności może wykonywać uwierzytelniony użytkownik lub konto aplikacji. Samo zalogowanie do serwera bazy nie oznacza jeszcze prawa do odczytu albo modyfikowania danych. System zarządzania bazą sprawdza uprawnienia przy wykonywaniu operacji i może zezwolić na dostęp do całej bazy, wybranego schematu, tabeli, widoku, procedury lub pojedynczych kolumn, zależnie od możliwości konkretnego silnika. Do typowych uprawnień należą między innymi odczyt danych, dodawanie rekordów, zmiana istniejących rekordów i ich usuwanie. Oddzielnie mogą być kontrolowane uprawnienia do tworzenia tabel, indeksów, widoków oraz innych obiektów. W wielu implementacjach SQL spotyka się polecenia Użytkownicy, role i dziedziczenie uprawnieńUprawnienia można przypisać bezpośrednio do konta albo przekazać za pośrednictwem roli. Rola jest zbiorem uprawnień, który można przypisać wielu użytkownikom lub kontom aplikacji. Takie rozwiązanie ogranicza liczbę indywidualnych wyjątków i ułatwia zmianę dostępu, ponieważ modyfikacja roli może objąć wszystkich jej członków. W praktyce osobno definiuje się często rolę przeznaczoną do odczytu, rolę do obsługi danych oraz rolę administracyjną. Efektywne uprawnienia użytkownika mogą wynikać z kilku źródeł: przypisań bezpośrednich, członkostwa w rolach, uprawnień właściciela obiektu oraz reguł odziedziczonych z wyższego poziomu. Mechanizm ten nie jest identyczny we wszystkich silnikach baz danych. Dlatego przy analizie problemu trzeba sprawdzić dokumentację konkretnego produktu, aktywne role, właścicieli obiektów oraz reguły domyślne. Częstym błędem jest odebranie jednego uprawnienia bez uwzględnienia faktu, że użytkownik nadal otrzymuje je przez inną rolę. Różnica między odczytem a modyfikacją danychUprawnienie do odczytu nie powinno automatycznie oznaczać prawa do zmiany zawartości tabel. Konto raportowe może potrzebować wyłącznie dostępu do zapytań odczytujących dane, natomiast aplikacja zapisująca zamówienia może wymagać dodawania i aktualizowania rekordów. Operacje te są niezależne: możliwość wykonania zapytania odczytującego nie daje sama w sobie prawa do wykonania instrukcji modyfikującej. Bezpośredni dostęp do tabeli nie zawsze jest konieczny. Aplikacja może korzystać z widoku ograniczającego zakres zwracanych kolumn albo z procedury wykonującej tylko dozwolone operacje. Takie rozdzielenie zmniejsza ryzyko przypadkowej zmiany danych i pozwala kontrolować sposób korzystania z bazy. Przy diagnozowaniu błędu należy odróżnić brak uprawnienia od błędu zapytania, nieistniejącego obiektu, niewłaściwego schematu oraz problemu z połączeniem do innej instancji lub bazy. Sprawdzanie uprawnień podczas diagnostykiGdy aplikacja otrzymuje komunikat o odmowie dostępu, należy ustalić dokładne konto użyte przez połączenie, nazwę serwera, instancję, bazę oraz obiekt wskazany w błędzie. Test wykonany z konta administratora może dać mylący rezultat, ponieważ administrator posiada szerszy zakres dostępu niż konto używane przez aplikację. Między środowiskiem testowym i produkcyjnym mogą występować różnice w rolach, właścicielach obiektów albo konfiguracji domyślnych. Bezpieczna konfiguracja powinna przyznawać kontom tylko uprawnienia wymagane do wykonywania ich zadań. Warto okresowo przeglądać członkostwo w rolach, nieużywane konta oraz uprawnienia nadane bezpośrednio. Przy naprawie problemu należy zmienić konkretną regułę dostępu i ponownie sprawdzić zarówno operację, która wcześniej kończyła się błędem, jak i operacje, które powinny pozostać zablokowane. Taki test potwierdza, że korekta rozwiązała problem bez niezamierzonego rozszerzenia dostępu. |