| Termin | Definicja |
|---|---|
| Uprawnienia do procedury | Uprawnienia do procedury określają, kto może ją wykonać niezależnie od uprawnień do leżących pod nią tabel. Zakres uprawnień nadawanych procedurzeUprawnienia do procedury składowanej określają, które konto, użytkownik albo rola może wywołać zapisany w bazie zestaw instrukcji. Jest to osobny poziom kontroli dostępu niż uprawnienia do tabel, widoków lub innych obiektów używanych wewnątrz procedury. Użytkownik może więc otrzymać możliwość wykonania procedury, mimo że nie ma bezpośredniego prawa do odczytu albo modyfikowania tabel wykorzystywanych przez jej kod. Takie rozdzielenie pozwala udostępnić konkretną operację bez otwierania całego modelu danych. Samo prawo wykonania nie oznacza automatycznie możliwości zmiany definicji procedury, usunięcia jej ani nadawania uprawnień innym kontom. Są to odrębne czynności administracyjne, zwykle chronione prawami do modyfikowania obiektu, schematu lub bazy danych. W praktyce należy rozróżnić co najmniej trzy zakresy: uruchamianie procedury, przeglądanie jej definicji oraz zarządzanie jej uprawnieniami. Nadanie szerszego prawa niż wymagane przez aplikację zwiększa powierzchnię ataku i utrudnia ustalenie, kto mógł wykonać daną operację. Przepływ wywołania i sprawdzanie dostępuPodczas wywołania procedury silnik bazy danych najpierw identyfikuje konto wykonujące żądanie, a następnie sprawdza, czy konto lub jedna z przypisanych mu ról ma prawo uruchomienia wskazanego obiektu. Jeżeli tego prawa brakuje, wykonanie zostaje przerwane przed realizacją instrukcji albo na etapie dostępu do chronionego obiektu, zależnie od reguł konkretnego silnika. W komunikacie błędu może pojawić się nazwa procedury, użytkownika, tabeli lub operacji, której dotyczy odmowa. Po dopuszczeniu wywołania silnik ocenia również dostęp do obiektów używanych przez procedurę. W wielu systemach działa mechanizm łańcucha własności: jeżeli procedura i odwoływana tabela należą do tego samego właściciela lub są objęte spójnym schematem, użytkownik może wykonać procedurę bez bezpośredniego prawa do tabeli. Jeżeli własność zostanie przerwana, obiekty znajdują się w innych schematach albo procedura korzysta z dynamicznie tworzonego zapytania, kontrola dostępu może wymagać dodatkowych uprawnień. Dlatego samo nadanie prawa wykonania nie gwarantuje poprawnego działania w każdej implementacji. Role, dziedziczenie i ograniczenie operacjiUprawnienia najczęściej przypisuje się roli związanej z funkcją aplikacji, a nie każdemu użytkownikowi osobno. Przykładowo rola może mieć prawo wywołania procedury zapisującej zgłoszenie, ale nie otrzymywać prawa bezpośredniej aktualizacji tabeli klientów. Konto aplikacji dziedziczy wtedy tylko operacje potrzebne do obsługi określonego formularza lub procesu. Przy odbieraniu dostępu trzeba sprawdzić zarówno prawa nadane bezpośrednio, jak i prawa wynikające z członkostwa w kilku rolach, ponieważ odebranie jednego wpisu nie musi usunąć faktycznej możliwości wykonania. Bezpieczna procedura powinna przyjmować jasno określone parametry, sprawdzać ich typy i zakres oraz wykonywać tylko przewidziane operacje. Szczególnej kontroli wymagają procedury, które budują zapytania dynamicznie na podstawie tekstu przekazanego przez użytkownika. Jeżeli silnik na to pozwala, wartości powinny być przekazywane jako parametry, a nazwy obiektów powinny pochodzić z zamkniętej listy dopuszczonych wartości. Warto też ograniczać możliwość wykonywania procedury do określonego schematu, roli lub konta aplikacyjnego i regularnie usuwać nieużywane nadania. Weryfikacja procedury w środowisku roboczymPodczas diagnostyki problemu z procedurą należy ustalić pełną ścieżkę żądania: konto używane przez program, jego role, nazwę procedury, schemat oraz obiekty, do których procedura się odwołuje. Następnie warto porównać zachowanie tego samego wywołania z kontem administracyjnym i z kontem aplikacyjnym. Jeżeli administrator może wykonać operację, a aplikacja otrzymuje odmowę, przyczyną jest zwykle brak prawa wykonania, brak dostępu do zależnego obiektu albo różnica między schematem użytym w kodzie a schematem wskazanym w konfiguracji. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, a przy problemach z aplikacją może również pomóc ustalić, czy błąd wynika z konfiguracji programu, połączenia z bazą danych lub niewłaściwego konta używanego przez klienta. W przypadku procedury szczególnie ważne jest zachowanie zasady najmniejszych uprawnień: konto programu powinno otrzymać wyłącznie prawa wymagane do zaplanowanych operacji, natomiast uprawnienia administracyjne powinny pozostać poza codziennym procesem użytkownika. |