Bezpieczeństwo Dynamics NAV cz. 1

O zabezpieczeniach, uprawnieniach i dobrych praktykach językiem „prawie” laika

Bezpieczeństwo, a co za tym idzie dostęp do danych systemu Dynamics NAV ma strukturę wielowarstwową i związany jest z jego architekturą, wersją oraz stosowanymi wewnątrz niego rozwiązaniami, ponieważ nie wszystkie są obowiązkowe, a część zależy od przyjętej architektury.

BezpieczenstwoNAV1Pierwszą i najbardziej zewnętrzną warstwą jest Tenant, który łączy się jeden do jednego z bazą danych i można go traktować jako jej odpowiednik. Dynamics NAV od wersji 2013 wprowadził pojęcie tenantów, które pozwala rozdzielić jedną instalację systemu Dynamics NAV na wiele tenantów, czyli baz danych. Może to mieć istotne znaczenie dla wydajności systemu, szczególnie gdy każda baza zlokalizowana zostanie na innym serwerze. Rozdzielenie na tenanty następuje na linii firm – gdy mamy wiele firm, część z nich może znajdować się na jednym tenancie, inny ich zbiór na kolejnym, a reszta na jeszcze innym.

Wraz z wersją Dynamics NAV 2016 „Corfu”, tenanty powalają na separację funkcjonalności. Oznacza to, że firmy z różnych branż mogą mieć wgrane różne aplikacje (rozszerzenia funkcjonalności) i działać zupełnie inaczej. To bardzo ważna nowa cecha systemów Dynamics NAV, wprowadzająca zupełnie nową jakość w zarządzaniu różnorodnością danych. Tenanty nie są elementem obowiązkowym lecz opcjonalnym. Gdy nie stosuje się tenantów, najbardziej zewnętrznym poziomem zabezpieczeń pozostaje baza danych. BezpieczenstwoNAV2Druga warstwa dostępowa to Instancja, serwer aplikacji Dynamics NAV – w niej wykonywane są procesy biznesowe i z nią ma kontakt użytkownik, gdy przy logowaniu system wymaga od niego podania, gdzie się chce zalogować. Ewentualna autoryzacja (podanie loginu i hasła) zależą od wdrożonej metody autoryzacji. w przypadku autoryzacji opartej o Active Directory nie jest potrzebne logowanie się do klienta RTC. Po zalogowaniu do instancji serwera, wyświetli się lista firm dostępnych w ramach tej Instancji, do których użytkownik ma dostęp, o czym szerzej poniżej.

Konfigurując instancję Dynamics NAV, wskazujemy bazę danych i opcjonalnie tenanty z której instancja ma korzystać, jeśli są wdrożone. Instancje, poza łączeniem z bazą danych Dynamics NAV, mogą określać wiele dodatkowych parametrów takich jak poziomy bezpieczeństwa, porty, maksymalne obciążenie itp. Baza danych czy też Tenant może mieć wiele instancji serwera, zaś każda instancja działa jako niezależny proces. Posiadanie wielu instancji ma sens wówczas, gdy chcemy zwiększyć bezpieczeństwo i stabilność systemu lub konfigurować go w nietypowy sposób.

Przykład: Sklep internetowy korzysta z instancji eCommerce, zaś pracownicy z instancji Dynamics NAV. Gdyby któryś użytkownik przeciążył instancję Dynamics NAV lub doprowadził do jej zablokowania, sprzedaż internetowa nadal działałaby na niezależnej instancji eCommenrce. W ramach instancji możemy także określać akceptowalne metody autoryzacji, jak Windows (AD, local), Nazwa użytkownika „UserName” (podanie loginu i hasła weryfikowanego w Windows, AD), Nazwa użytkownika NAV „NavUserPassword” (podanie loginu i hasła weryfikowanego w Dynamics NAV), usługa kontroli dostępu – pozwalająca na autoryzację np. przez Facebook, Google, Windows Azure lub inne serwisy. O tych metodach nieco później.

BezpieczenstwoNAV3Trzecia metoda, określająca prawa dostępu do firmy jest najprostsza w konfiguracji. Polega ona na tym, że w momencie przypisywania uprawnień użytkownikowi, jednocześnie należy wskazać, do jakich firm ma mieć dostęp. Należy pamiętać, że jeśli ktoś przy zestawie uprawnień nie ma przypisanej firmy, to zyskuje uprawnienia do wszystkich firm. Na powyższym zrzucie widać, że użytkownik ma uprawnienia BASIC tylko do firmy “CRONUS International Ltd.” – tylko do niej może się zalogować. Inne firmy widoczne w prawym dolnym rogu zrzutu jak “PrintVis Unlimited” czy “PrintVis Unlimited US” są dla niego niedostępne, a nawet niewidoczne na liście firm do wyboru. Gdyby kolumna Firma była pusta, wówczas użytkownik mógłby się zalogować do każdej z firm.

Kontrola dostępu do obiektów następuje po zalogowaniu się do firmy, kiedy to system na podstawie zestawu uprawnień określa, do jakich obiektów i jaki zakres uprawnień ma otrzymać użytkownik: jakie tabelki może przeglądać, edytować, tworzyć i kasować, jakie raporty generować, które strony otwierać, jakie kody wykonywać itd. Uprawnienia te są określane na karcie użytkownika w sekcji “Zestaw uprawnień użytkownika”. Chcąc nadać komuś uprawnienie np. do przeglądania dostawców, wybiera się z kolumny “Zestaw uprawnień” potrzebny rekord – tutaj “P&P-VENDOR”. Opcjonalnie wskazujemy w której firmie dane uprawnienie ma obowiązywać, a gdy nie wskażemy, będzie obowiązywać we wszystkich. Czasem może się zdarzyć, że żaden z dostępnych zestawów uprawnień nie spełnia naszych oczekiwań. Wówczas najlepiej stworzyć nowy dedykowany dla nas zestaw uprawnień. Klikając polecenie “Nowy”, po wypełnieniu kodu i opisu nowego zestawu uprawnień, klikamy na wstążce polecenie “Uprawnienia”.

BezpieczenstwoNAV4Wyświetli się lista, na której będziemy mogli wpisać typ obiektu i zakres uprawnień. Tutaj dodaliśmy zestaw nadający uprawnienia tylko i wyłącznie odczytu do listy kont księgi głównej (tabela 15), oraz tabeli zapisów księgi głównej (tabela 17). Dodatkowo nadaliśmy prawo zapisu do tabeli zapisów księgi głównej pośrednio. Oznacza to, że za pomocą dedykowanych funkcji (np. polecenia księguj) będzie możliwe dodawanie nowych pozycji. Użytkownik przy uprawnieniu pośrednim, nie ma żadnej możliwości dokonać zmian w tabeli zapisów księgi głównej poprzez manualną edycję.

Nadając uprawnienia użytkownikom poprzez dodawanie kolejnych zestawów uprawnień, należy pamiętać, że w NAV działa metoda zachłanna przydzielenia praw – jeśli w jakimkolwiek zestawieniu uprawnień jest jakieś uprawnienie, to użytkownik to uprawnienie zyskuje. Nie jest dostępna eliminacja uprawnień.

Mirosław Malinowski

W dalszej części artykułu m.in:

  • Przykład użycia filtrów zabezpieczeń, które ograniczają dostęp do części danych,
  • Ukrywanie elementów interfejsu użytkownika na podstawie uprawnień.