| Termin | Definicja |
|---|---|
| Błędy uprawnień | Błędy uprawnień to zbiorcze określenie usterek związanych z brakiem wymaganego dostępu do wykonania operacji w bazie danych. Gdzie powstaje błąd uprawnieńBłędy uprawnień pojawiają się wtedy, gdy użytkownik, aplikacja albo proces systemowy próbuje wykonać operację, do której nie ma przyznanego dostępu. W przypadku bazy danych może chodzić o odczyt rekordów, dodanie nowego wiersza, zmianę istniejących danych, ich usunięcie, utworzenie tabeli albo wykonanie procedury. Sam fakt poprawnego zalogowania do systemu nie oznacza jeszcze prawa do korzystania z każdego obiektu. Uwierzytelnienie potwierdza tożsamość konta, natomiast autoryzacja określa zakres dozwolonych działań. Odmowa dostępu może wynikać z kilku poziomów kontroli. Konto może nie mieć uprawnienia do konkretnej bazy, schematu, tabeli, widoku lub procedury. Ograniczenie może także dotyczyć pojedynczej operacji, na przykład odczytu bez prawa zapisu. W wielu środowiskach prawa są nadawane przez role, grupy albo profile dostępu, dlatego użytkownik może dziedziczyć część uprawnień, a jednocześnie podlegać dodatkowym ograniczeniom. Znaczenie ma również konto techniczne, z którego korzysta aplikacja, ponieważ jego uprawnienia mogą różnić się od praw konta używanego ręcznie przez administratora. Autoryzacja, role i zakres dostępu do danychModel uprawnień w bazie danych zwykle rozdziela prawa na działania dotyczące danych i działania dotyczące struktury. Operacje na danych obejmują między innymi odczyt, dodawanie, modyfikowanie i usuwanie rekordów. Operacje strukturalne dotyczą tworzenia lub zmieniania tabel, indeksów, widoków, funkcji i innych obiektów. Konto może więc mieć możliwość odczytania tabeli, ale nie mieć prawa do jej zmiany. Takie rozdzielenie ogranicza ryzyko przypadkowej modyfikacji struktury podczas zwykłej pracy aplikacji. Istotny jest poziom, na którym nadano uprawnienie. Prawo przyznane dla jednej tabeli nie musi obowiązywać w całej bazie, a dostęp do widoku nie zawsze oznacza bezpośredni dostęp do tabel wykorzystywanych przez ten widok. Podobnie możliwość uruchomienia procedury nie musi obejmować swobodnego wykonywania wszystkich zapytań poza nią. Przy analizie odmowy trzeba ustalić dokładny obiekt wskazany w komunikacie, rodzaj wymaganej operacji oraz konto, które faktycznie ją wykonuje. Samo dodanie użytkownika do szerokiej roli może usunąć objaw, ale jednocześnie przyznać więcej praw, niż jest potrzebne. Typowe przyczyny odmowy wykonania operacjiJedną z częstych przyczyn jest użycie niewłaściwego konta połączenia. Aplikacja może uruchamiać się jako usługa systemowa, konto lokalne albo dedykowany użytkownik techniczny, podczas gdy test ręczny wykonywany jest na koncie administratora. W takiej sytuacji ręczne zapytanie działa, a aplikacja otrzymuje odmowę dostępu. Problem może również wystąpić po zmianie hasła, odtworzeniu bazy, przeniesieniu aplikacji na inny komputer lub zmianie konfiguracji połączenia. Nowe środowisko może nie rozpoznawać konta albo nie mieć przypisanych wcześniej praw. Odmowy bywają skutkiem różnicy między nazwą bazy, schematu lub obiektu używaną przez aplikację a nazwą istniejącą w środowisku. Błąd może pojawić się także po wdrożeniu aktualizacji, gdy aplikacja zaczyna korzystać z nowej tabeli, kolumny, widoku lub procedury, lecz migracja uprawnień nie została wykonana. Osobną kategorią są ograniczenia systemu operacyjnego: plik konfiguracyjny z danymi połączenia, certyfikat, katalog roboczy albo plik lokalnej bazy może być niedostępny dla konta uruchamiającego proces. Wtedy komunikat może wyglądać jak problem bazy, choć odmowa powstaje wcześniej, podczas inicjalizacji połączenia. Rozpoznanie i bezpieczne usunięcie problemuDiagnostykę należy rozpocząć od zapisania pełnego komunikatu błędu wraz z nazwą konta, nazwą bazy, obiektem i typem operacji. Skrócony komunikat z interfejsu może pomijać ważny fragment wskazujący, czy zabrakło prawa odczytu, zapisu, wykonania procedury albo dostępu do pliku. Następnie warto porównać konfigurację działającej i niedziałającej instancji aplikacji: adres połączenia, nazwę bazy, używany mechanizm logowania oraz konto procesu. Pomocne są dzienniki aplikacji i bazy, ponieważ mogą pokazać moment uzyskania połączenia oraz konkretną operację zakończoną odmową. Naprawa powinna polegać na przyznaniu minimalnego zestawu praw wymaganych przez konkretną funkcję. Najpierw ustala się, czy konto istnieje w danym środowisku, czy należy do właściwej roli i czy uprawnienia odnoszą się do aktualnej nazwy obiektu. Nie powinno się automatycznie używać konta administracyjnego ani nadawać pełnego dostępu całej bazie tylko po to, aby ukryć błąd. Po zmianie konfiguracji należy ponowić operację w warunkach odpowiadających rzeczywistej pracy programu, a następnie sprawdzić, czy odczyt, zapis lub wykonanie procedury działają bez rozszerzania dostępu do niepotrzebnych danych. W przypadku laptopa lub komputera PC objawy takie jak niedziałający program, brak zapisu ustawień albo komunikat o odmowie dostępu wymagają równoległego sprawdzenia aplikacji, konta systemowego i konfiguracji środowiska. |