Ogólna architektura
Ogólna architektura zabezpieczenia klucza HASP składa się z 5 warstw:
Warstwa 1 – klient usług zabezpieczeń – stanowią ją algorytmy w programie ERP XL, służące w ogólnym rozumieniu do zabezpieczenia programu przed nielegalnym używaniem. Klient usług zabezpieczeń dokonuje logowania i pobrania licencji z serwera zabezpieczeń (poprzez warstwę 2), odpowiada za zwrot pobranych licencji przy zamykaniu programu. Od v 2020 możliwe jest bezpośrednie połączenie warstwy 1 z warstwą 3 za pomocą protokołu http standardowo odbywa się to poprzez port 5150.
Warstwa 2 – stanowi ją MS SQL Server, na którym są zainstalowane procedury wbudowane (extended stored procedures) służące do komunikacji klienta usług zabezpieczeń z serwerem usług zabezpieczeń.
Warstwa 3 – to właściwy serwer zabezpieczeń – tzw. usługa HASP. Rolą tej usługi jest zarządzanie licencjami, czyli:
-
-
-
-
- kontrola liczby pobranych licencji,
- obsługa żądań pobrania i zwolnienia licencji,
- zwalnianie licencji zablokowanych przez instancje systemu, która zakończyła swoje działanie, a z różnych przyczyn nie zwolniła zablokowanych licencji.
-
-
-
Warstwa 4 – to sprzętowy klucz HASP, który służy do przechowywania informacji o zakupionej puli licencji oraz do weryfikacji jej wykorzystania w trakcie pracy klienta (systemu ERP XL) oraz serwer zabezpieczeń (serwisu HASP)
Warstwa 5 – to połączenie do klucza wirtualnego, podczas gdy do instalacji może być podłączony jeden klucz HASP kluczy wirtualnych może być zarejestrowanych w instalacji większa ilość. Gdy do instalacji zostanie dodany klucze wirtualne warstwa 3 łączy się do serwera Comarch o adresie ml.comarch.pl – https i pobiera informacje o przypisanych do danego klucza licencjach, warstwa 3 co kilka godzin łączy się do serwera Comarch i pobiera ponownie informacje o kluczach maksymalnie czas ten może wynosić do 3 dni
Klient usług zabezpieczeń
Algorytm działania klienta usług zabezpieczeń jest następujący:
W momencie uruchomienia przez operatora programu ERP XL (dowolnego modułu), następuje zalogowanie klienta usług zabezpieczeń do serwera zabezpieczeń i pobranie wszystkich licencji przypisanych do operatora, który uruchomił system. Licencje są pobierane zgodnie z ustawieniami na zakładce {Parametry/Uprawnienia} karty operatora w module: Administrator (Rysunek 2). W celu poprawnego zalogowania aplikacji do serwera zabezpieczeń, muszą zostać pobrane wszystkie licencje ustawione dla danego operatora. Brak możliwości pobrania jakiejkolwiek licencji spowoduje, że dowolny moduł systemu, uruchomiony przez operatora będzie działał bez licencji. W takiej sytuacji zostanie wyświetlony komunikat informujący o tym, że nie udało się pobrać licencji i zalogować do serwera zabezpieczeń.
Wszystkie pobrane licencje w danej sesji są blokowane do wyłącznego użytku przez danego operatora, nawet jeśli w trakcie sesji nie uruchamia wszystkich modułów, na które pobrał licencje.
Wyjątek od powyższego opisu stanowi pobieranie licencji na moduł obsługi drukarek fiskalnych za pośrednictwem usług terminalowych. W tym przypadku licencja jest pobierana w przypadku pierwszego użycia terminalowych sterowników fiskalnych (FP600T.dll, DF300T.dll, DF300_1T.dll oraz INNOWAT.dll).
Jeżeli licencje zostały pobrane z serwera poprawnie, w trakcie pracy programu ERP XL następuje okresowa komunikacja z serwerem zabezpieczeń w celu sprawdzenia, czy serwis HASP pracuje poprawnie (np. czy ktoś nie wyjął klucza HASP z portu serwera), a także „poinformowanie” serwisu o tym, że aplikacja ERP XL nadal działa.
Po zakończeniu pracy programu następuje wylogowanie z serwisu zabezpieczeń i zwolnienie pobranych licencji.
Jeżeli przy uruchamianiu programu nie udało się pobrać licencji z klucza, praca z systemem ERP XL będzie możliwa tylko w ograniczonym zakresie, pozwalającym tylko i wyłącznie na przeglądanie danych, bez możliwości ich modyfikacji np. wystawiania i przekształcania dokumentów lub ich księgowania.
Procedury wbudowane na serwerze SQL
Warstwa ta służy w rzeczywistości do komunikowania się klienta usług zabezpieczeń z serwerem usług zabezpieczeń. Klient wywołuje procedury wbudowane, które zostały zainstalowane na serwerze SQL poprzez standardowe mechanizmy komunikacji aplikacji z serwerem bazy danych. Za pośrednictwem procedur, żądania klienta są przekazywane do serwera zabezpieczeń.
Dzięki takiemu rozwiązaniu zapewniona została bezproblemowa komunikacja sieciowa pomiędzy klientem, a serwerem usług zabezpieczeń – poprawne skonfigurowanie sieci dla potrzeb komunikacji z bazą danych gwarantuje równocześnie komunikację z serwerem zabezpieczeń.
Procedury te zwykle znajdują się na serwerze SQL, na którym znajdują się bazy danych programu ERP XL. Na tym samym komputerze co procedury wbudowane, musi znajdować się serwer zabezpieczeń. Istnieje jednakże możliwość zainstalowania procedur wbudowanych i serwera zabezpieczeń na innym komputerze niż serwer baz danych ERP XL. Warunkiem jest zainstalowanie na tym komputerze silnika bazy danych MS SQL Server (może to być bezpłatny silnik MSDE lub SQL Express). Równocześnie należy skonfigurować program ERP XL w taki sposób, aby odwoływał się do innego serwera zabezpieczeń niż serwer bazy danych. Należy to zrobić w oknie konfiguracji komputera:
W podanym powyżej przykładzie procedury wbudowane będące elementem systemu zabezpieczeń zostały zainstalowane na serwerze KASTOR.
Nazwa serwera klucza jest zapamiętywana w rejestrze systemowym, w kluczu HKEY_LOCAL_MACHINE\SOFTWARE\ERP\HASP w wartości „Serwer”.
W przypadku braku określenia nazwy serwera klucza w aplikacji ERP XL, domyślnie zakłada się, że serwerem klucza jest serwer bazy danych.
Serwer usług zabezpieczeń
Serwer usług zabezpieczeń odpowiada za zarządzanie licencjami – sprawdzanie liczby pobranych licencji, obsługę żądań zalogowania i wylogowania.
Działanie serwera usług zabezpieczeń opisuje poniższy schemat:
Po uruchomieniu serwer zabezpieczeń komunikuje się z kluczem HASP bądź z serwerem kluczy wirtualnych dla kluczy wirtualnych w celu odczytania maksymalnej puli licencji, którą dysponuje.
W momencie pobrania przez klienta licencji, serwer zapamiętuje ten fakt i „odejmuje” pobraną licencję z dostępnej puli.
W momencie wylogowania się klienta, zwalniane są pobrane wcześniej przez niego licencje.
Dla właściwego zrozumienia zachowania programu w pewnych szczególnych przypadkach, pomocne będą poniższe uwagi.
Okresowa kontrola Klucza HASP
W trakcie pracy, co pewien czas, serwer zabezpieczeń sprawdza obecność klucza HASP. Oznacza to, że jeśli w trakcie pracy serwera zabezpieczeń zostanie wyjęty klucz HASP, praca wszystkich zalogowanych do serwera aplikacji ERP XL zostanie zablokowana.
Wielokrotne logowanie
Jeżeli Użytkownik na tym samym komputerze uruchomi wielokrotnie program ERP XL (różne moduły), to pobierze z serwera każdą licencję tylko jeden raz.
Awaryjne zakończenie pracy
Jeżeli Użytkownik aplikacji ERP XL zakończy jej pracę inaczej niż poprzez wybranie opcji: Koniec pracy i nie nastąpi wylogowanie z serwera zabezpieczeń, to licencje pobrane przez tego Użytkownika będą zablokowane jeszcze przez pewien określony czas (domyślnie 1800 sekund). Po tym czasie licencje zostaną zwrócone do puli i inny Użytkownik będzie mógł je pobrać.
Blokowanie licencji dotyczy wyłącznie Użytkowników uruchamiających program ERP XL z innych komputerów. Zgodnie z zasadą opisaną w rozdziale Wielokrotne logowanie, jeżeli Użytkownik zakończy pracę programu ERP XL inaczej niż poprzez wybranie opcji: Koniec pracy, to będzie mógł na tym samym komputerze ponownie uruchomić program ERP XL, wykorzystując wcześniej pobraną licencję, która nie została jeszcze automatycznie zwolniona
Klucz HASP
Serwer zabezpieczeń komunikuje się bezpośrednio z kluczem HASP, który stanowi sprzętowe zabezpieczenie, służące do weryfikacji posiadanej puli licencji.
Zabezpieczenie może być realizowane za pomocą kluczy typu: MemoHasp lub NetHasp. Klucze te są dostępne dla portów USB lub LPT. Dostępne są również klucze na karcie PCIMCIA. Mają one zastosowanie w komputerach przenośnych stosowanych w celach prezentacyjnych lub testowych.
W przypadku klucza MemoHasp musi być on wpięty w lokalny port komputera, na którym znajduje się serwer zabezpieczeń.
Modele instalacji ERP XL z serwerem klucza HASP
Instalacja jednostanowiskowa
Instalacja sieciowa
Instalacja sieciowa z wyodrębnionym serwerem zabezpieczeń
Współpraca XL-a z Menadżerem Kluczy
Instalacja Menadżera kluczy
Aplikacja Comarch ERP Menadżer Kluczy dostępna jest na stronach walidowanych dla Partnerów w sekcji Comarch ERP XL, podsekcja Pobierz wersję. Szczegółowy opis instalacji zawarty jest w dokumentacji do aplikacji Comarch ERP Menadżer Kluczy.
Ogólna konfiguracja
Odwołanie do klucza
W Menadżerze Kluczy może znajdować się więcej, niż jeden klucz. Może być to jeden klucz fizyczny HASP i klucze wirtualne bądź same klucze wirtualne. W systemie Comarch ERP XL należy więc wskazać odwołanie do konkretnego klucza z którego mają być pobierane licencje. Pełny wpis powinien mieć format:Nazwa serwera\nazwa instancji::numer klucza, zgodnie z poniższym zrzutem:
Od v 2020.1 wprowadzono możliwość łączenia się bezpośrednio z menadżerem klucza bez pośrednictwa serwera SQL za pomocą protokołu http , domyślnym portem po którym odbywa się komunikacja jest port 5150 , ponieważ łączymy się bez pośrednictwa serwera SQL nie podajemy nazwy instancji a jedynie nazwy serwera i po :: nr klucza lub gdy w instalacji jest obecny jeden klucz zabezpieczający samą nazwę serwera.
Wartości te zapisywane są w rejestrze systemu Windows pod ścieżką:
HKEY_CURRENT_USER\Software\CDN\HASPXL:
Informacje o pobranych licencjach
Informacje o aktualnie pobranych licencjach możemy uzyskać z poziomu interfejsu programu ERP XL, wykorzystując funkcje serwera zabezpieczeń lub używając procedury serwerowej xp_HASPSetIdleTime lub z poziomu Monitora Menadżera Kluczy.
Aby wyświetlić informację o pobranych licencjach z poziomu programu ERP XL należy wybrać z menu polecenie: Pomoc/O programie/Informacje o kluczu sprzętowym:
Wyświetlone informacje zawierają: nazwę modułu, aktualną ilość dostępnych licencji, początkową ilość licencji, status oraz datę pobrania licencji.
Drugą możliwością sprawdzenia informacji o pobranych licencjach z klucza HASP jest wywołanie procedury xp_HASPLicenceStateInfo z bazy master:
Trzecią możliwością sprawdzenia ilości pobranych licencji jest Monitor Menadżera Kluczy. W tym celu z menu kontekstowego należy wybrać opcję: Pokaż konfigurację i przejść do zakładek: Dostępne moduły (informacje ogólne dotyczące ilości dostępnych oraz pobranych licencji) oraz: Pobrane moduły (informacje szczegółowe uwzględniające pobranie licencji przez poszczególnych operatorów):
Informację tę można również wywołać na dowolnym komputerze w sieci wpisując adres serwera na którym zainstalowany został Menadżer Kluczy w przeglądarce internetowej wraz z numerem portu TCP/IP:
http://Nazwa_Serwera:5150 lub http://IP_Adres_Serwera:5150:
W przypadku, gdy w Menadżerze Kluczy znajduje się więcej, niż jeden klucz należy do powyższych wpisów dodać odwołanie: http://Nazwa_Serwera:5150/numer klucza.
Ustawienie czasu zwolnienia licencji
Serwer HASP posiada zabezpieczenie przed zablokowaniem licencji pobranych, a niezwróconych przez program ERP XL. System ten jest oparty o okresową komunikację programu ERP XL z serwerem zabezpieczeń. Jeżeli program nie skomunikuje się z serwerem przez pewien określony czas, serwer uznaje proces za „martwy” i zwalnia pobrane przez tego klienta licencje.
System ten może powodować problemy podczas przetwarzania przez program długotrwałych operacji wsadowych. Jeśli czas trwania operacji przekroczy czas oczekiwania serwera na zwolnienie licencji, serwer wyloguje klienta i program ERP XL wyświetli komunikat o braku licencji.
Z kolei ustawienie zbyt dużej wartości będzie blokować możliwość uruchamiania programu na innych stanowiskach w przypadku niepoprawnego zakończenia pracy z programem ERP XL (patrz: Awaryjne zakończenie pracy).
Domyślny czas oczekiwania na zwolnienie licencji przez serwer wynosi 30 minut. Czas ten możemy zmienić bezpośrednio w rejestrze Windows w kluczu: HKEY_LOCAL_MACHINE\SOFTWARE\ERP\HASP\IdleTime (patrz: Konfiguracja serwisu HASP) lub wykorzystując procedurę serwerową xp_HASPSetIdleTime, podając czas oczekiwania w sekundach. Aby dokonać ustawienia tego czasu na pół godziny można wykonać następujące polecenie SQL:
execute xp_HASPSetIdleTime @IdleTime=1800
Równocześnie aktualne ustawienie czasu oczekiwania można sprawdzić poprzez procedurę xp_HASPGetIdleTime, poleceniem:
execute xp_HASPGetIdleTime
Ustalając czas oczekiwania, należy pamiętać o tym, że ustawienie zbyt małej wartości będzie powodować problemy przy wykonywaniu długotrwałych operacji wsadowych (niezalecane jest ustawienie tego czasu poniżej 300 sekund).
IdleTime można również ustawić w poziomu Menadżera kluczy, zakładka Konfiguracja, okno Zaawansowane:
Czas, jaki upłynął od ostatniej komunikacji systemu ERP XL z serwerem zabezpieczeń, można skontrolować w oknie przeglądarki www w kolumnie „Zalogowani użytkownicy” (ostatni człon wpisu) lub bezpośrednio w programie ERP XL (należy wybrać z menu polecenie: Pomoc/O programie/Informacje o kluczu sprzętowym i ikonką lupy wybrać interesującą nas licencje).
Informacja taka zawarta jest także w Menadżerze Kluczy, zakładka Pobrane Moduły:
Programowanie klucza HASP
Klucz HASP programuje się celem aktualizacji posiadanej puli licencji bądź w celu aktualizacji daty ważności prawa do aktualizacji wersji systemu Comarch ERP XL. Do programowania klucza służy plik RUS, który można uzyskać w dziale Sprzedaży COMARCH bądź na stronach iZam. W celu wykonania czynności programowania należy z menu kontekstowego Menadżera Kluczy wywołać polecenie: