Bezpieczeństwo Dynamics NAV cz. 2

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

Kolejną warstwą dostępu są filtry zabezpieczeń, zwane też filtrami rekordów, które pozwalają redukować uprawnienia tylko do tych rekordów, które spełniają zadany warunek. Wyobraźmy sobie, że mamy dwa oddziały: Warszawa i Katowice. Jeśli chcemy handlowcom z tych oddziałów nadać uprawnienia takie, aby widzieli tylko dokumenty sprzedaży ze swoich regionów, wówczas właśnie użyjemy filtrów zabezpieczeń. Załóżmy, że separacja regionalna jest oparta o centra kompetencyjne. Najlepiej stworzyć dedykowane zestawy zabezpieczeń, które dla przykładu będą oparte o niezaksięgowane dokumenty sprzedaży oraz zaksięgowane faktury, korekty, wydania itp.

BezpieczenstwoNAV5

Najlepszym rozwiązaniem, jest stworzenie następujących zestawów zabezpieczeń:

  • Sprz-wszyscy – uprawnienia do tych elementów sprzedaży, do których wszyscy handlowcy musza mieć dostęp: ustawienia sprzedazy, wymiary, nabywcy, kontakty itp. Moga tu być tabele na których stosujemy filtry zakresu tylko z opcją “pośredni”;
  • Sprz-Warszawa – wyłącznie tabele na których stosujemy filtr Warszawa;
  • Sprz-Katowice – tylko tabele na których stosujemy filtr Katowice;
  • Sprz-Centrala – tabele wcześniej filtrowane, ale bez filtrów – dla centrali.

Teoretycznie centrala mogłaby otrzymać role Sprz-Warszawa i Sprz-Katowice zyskując dostęp do wszystkich rekordów z Katowic i z Warszawy, ale nie jest to wydajnościowo optymalne – znacznie lepiej użyć roli Sprz-Wszyscy, która nie wprowadza żadnego filtrowania.

W tym modelu konieczna jest kontrola, aby żadna inna rola przypisana do handlowca z Warszawy lub Katowic nie posiadała uprawnień do filtrowanych tabel, ponieważ pozwalałoby to ominąć ograniczenia narzucane przez filtry.

BezpieczenstwoNAV6

Zestawienie zabezpieczeń „Sprz-wszyscy” powinno mieć pośredni dostęp do odczytu do filtrowanych tabel (pod żadnym pozorem nie może być pełny – „tak”) – dzięki temu przy tworzeniu nowych dokumentów, mechanizm generowania kolejnego dokumentu, będzie mógł ustalić ostatnio użyty numer niezależnie, w jakim dziale został on wystawiony. Oczywiście mechanizm ten musi mieć także uprawnienia do czytania z tych tabel, co ustala się w jego właściwościach „Permissions”.

Wadą tej metody zabezpieczeń jest dość duży narzut obliczeniowy – zwiększa obciążenie serwera SQL, co może wpłynąć na ogólną wydajność systemu, np. czas wczytywania listy zamówień może znacząco się wydłużyć.

Ostatnim i najnowszym mechanizmem zabezpieczeń jest możliwość ograniczania dostępu do kolumn i poleceń, dostępna od wersji Dynamics NAV 2015, wprowadzona w ramach grupy rozwiązań o nazwie „UI Elements Removal” – Redukcji elementów interfejsu. Pozwala nie tylko ograniczać dostępność kolumn, ale także elementów menu, powiązanych informacji typu linki, komentarze itp.

Dostępne są dwa tryby redukcji elementów:

  • Redukcja elementów niedostępnych w licencji – czyli gdy np. w naszej licencji nie mamy dostępu do tabeli „Centra kompetencyjne”, to na stronie nie wyświetli się pole odwołujące się do tej tabeli, ponieważ system wywnioskuje, że nie ma sensu go wyświetlać, skoro użytkownik i tak nie może go użyć. Wywnioskuje to także dzięki temu, że pole jest powiązane relacją we właściwościach z tabelą poza licencją, oraz w ustawieniach Instancji jest ustawiona opcja „UI Elements Removal” na wartość „LicenseFile” lub „LicenseFileAndUserPermissions”.
  • Redukcja elementów wskazanych przez użytkownika oraz wyżej opisanych – niedostępnych w licencji. Zadzieje się to wówczas, jeśli w ustawieniach Instancji jest ustawiona opcja „UI Elements Removal” na wartość „LicenseFileAndUserPermissions” oraz we właściwościach pola lub polecenia, które chcemy ukryć, ustawimy odpowiednio właściwość AccessByPermission.

Dla przykładu załóżmy, że chcemy ukryć w tabeli „Wiersz faktury sprzedaży (113)” pole „Rabat wiersza % (27)” przed osobami, które nie maja prawa edycji tabeli „Rabaty wiersza (7004)”

BezpieczenstwoNAV7

Ustawiamy się na właściwym polu jak na zrzucie powyżej i konfigurujemy właściwość AccessByPermission, wskazując który obiekt chcemy sprawdzić i które uprawnienia. Jeśli co najmniej jeden warunek będzie spełniony, widoczność nie zostanie ograniczona.

Metoda ta jest dostępna na stronach, stronach opcji raportów, poleceniach menu, kontenerach z informacjami stowarzyszonymi ze stroną jak wymiary, notatki, linki itp.

 

Mirosław Malinowski

Acrebit S.A.