| Termin | Definicja |
|---|---|
| integracje z przestarzałymi lub porzuconymi systemami | Integracje z przestarzałymi lub porzuconymi systemami to ryzyko bezpieczeństwa wynikające z braku wsparcia i poprawek dla tych platform. Integracje z przestarzałymi systemami – czym jest to zagadnienieIntegracje z przestarzałymi lub porzuconymi systemami obejmują połączenia pomiędzy współczesnym oprogramowaniem a platformami, które nie są już rozwijane, mają ograniczoną dokumentację albo nie otrzymują poprawek od producenta. Taki system może nadal wykonywać ważne zadania: obsługiwać bazę danych, rejestrować operacje, sterować urządzeniem, przechowywać historię dokumentów lub przekazywać informacje do innego programu. Sam fakt, że aplikacja działa, nie oznacza jednak, że jej dalsze podłączanie do nowych narzędzi jest bezpieczne i przewidywalne. W praktyce integracja może polegać na wymianie plików, odczycie danych z bazy, wykorzystaniu starego interfejsu programistycznego, komunikacji przez protokół sieciowy albo automatycznym sterowaniu aplikacją za pomocą klawiatury i myszy. Im starszy system, tym większe prawdopodobieństwo, że zastosowane mechanizmy powstały w czasach innych wymagań dotyczących uwierzytelniania, szyfrowania i kontroli dostępu. Niekiedy stosowany jest również pośredni komputer, który uruchamia dawny program i przekazuje dane do nowszego środowiska. Najważniejsze ryzyko nie wynika wyłącznie z wieku programu. Problemem jest brak możliwości szybkiego usunięcia błędu, niejasny sposób działania, zależność od konkretnej wersji systemu operacyjnego oraz brak osoby lub podmiotu, który mógłby potwierdzić poprawność zmian. Porzucone rozwiązanie może używać nieaktualnych bibliotek, słabych metod logowania albo ustawień, których nie da się zmienić bez utraty zgodności z pozostałymi elementami. W rezultacie każde nowe połączenie staje się potencjalnym punktem wejścia dla awarii, wycieku danych lub niekontrolowanej modyfikacji informacji. Integracje z porzuconymi platformami – kontekst techniczny i porównaniaWspółczesne integracje projektuje się zwykle z myślą o jasno opisanych interfejsach, ograniczaniu uprawnień, rejestrowaniu zdarzeń oraz łatwej wymianie komponentów. W przypadku starej platformy często brakuje tych cech. Zamiast udokumentowanego interfejsu występuje katalog z plikami o nieznanej strukturze, lokalna baza danych bez kontroli dostępu albo moduł komunikacyjny, którego działanie zależy od określonego ustawienia. Różnica przypomina porównanie połączenia przez opisany punkt wymiany z połączeniem zbudowanym na obserwacji zachowania programu. Połączenie bezpośrednie jest zazwyczaj szybsze i prostsze do uruchomienia, lecz silnie wiąże nowe oprogramowanie ze szczegółami starego rozwiązania. Zmiana nazwy pola, formatu daty lub kolejności rekordów może wtedy zatrzymać cały przepływ danych. Bezpieczniejszy bywa pośredni moduł translacyjny, który odbiera dane ze starego systemu, sprawdza ich strukturę, usuwa niepotrzebne elementy i przekazuje dalej tylko informacje zgodne z określonym schematem. Taki moduł wymaga dodatkowego utrzymania, ale ogranicza wpływ nieprzewidywalnych zachowań źródła. Warto odróżnić system nieaktualny od systemu rzeczywiście porzuconego. Nieaktualny program może nadal otrzymywać ograniczone poprawki lub mieć dostępne procedury odtworzeniowe. Porzucona platforma może nie posiadać już producenta, aktualnych sterowników, działającej strony pomocy ani osoby znającej jej wewnętrzną logikę. W pierwszym przypadku możliwe jest zaplanowanie modernizacji. W drugim konieczne bywa najpierw odtworzenie sposobu działania, ustalenie właściciela danych i przygotowanie planu awaryjnego. Znaczenie ma również rodzaj przekazywanych informacji. Dane techniczne o niewielkiej wartości mogą być mniej wrażliwe niż dane osobowe, finansowe, medyczne lub informacje potrzebne do realizacji zamówień. Każde połączenie powinno więc być oceniane nie tylko pod kątem tego, czy działa, lecz także pod kątem skutków błędnego zapisu, opóźnienia, powtórzenia komunikatu i braku dostępu. Ta sama metoda integracji może być akceptowalna dla archiwum, a nieodpowiednia dla danych zmienianych codziennie. Problemy integracji z przestarzałymi systemamiJednym z częstych problemów jest niezgodność formatów. Starszy program może zapisywać daty w lokalnym układzie, używać znaków właściwych dla dawnego kodowania albo przechowywać liczby jako tekst. Nowe narzędzie może odczytać taki rekord bez zgłoszenia błędu, ale zinterpretować go nieprawidłowo. Pojawiają się wtedy przesunięte terminy, obcięte polskie znaki, nieprawidłowe wartości i duplikaty. Błąd może być trudny do zauważenia, ponieważ część danych nadal wygląda poprawnie. Drugą grupę stanowią ograniczenia sprzętowe i systemowe. Stara aplikacja może wymagać określonej rozdzielczości ekranu, konkretnego sterownika, dawnej wersji komponentu albo wyłączonej funkcji ochronnej. Próba uruchomienia jej na nowym komputerze może zakończyć się brakiem komunikacji z urządzeniem, losowym zamykaniem programu lub zawieszaniem operacji. Czasem występuje odwrotna sytuacja: aplikacja działa tylko na dawnym środowisku, którego nie da się już bezpiecznie podłączyć do pozostałych urządzeń. Ryzyko tworzą również konta techniczne i stałe hasła pozostawione po pierwotnej konfiguracji. Jeżeli integracja działa z uprawnieniami większymi, niż jest to potrzebne, przejęcie jednego elementu może umożliwić zmianę wielu danych. Niebezpieczne bywają także połączenia bez szyfrowania, pliki tymczasowe zawierające dane wrażliwe, automatyczne skrypty uruchamiane z szerokimi uprawnieniami oraz katalogi dostępne dla wszystkich użytkowników. W przypadku braku aktualizacji nie powinno się zakładać, że niewielka skala użycia sama ogranicza ryzyko. Trudności sprawia diagnostyka. Gdy przepływ danych obejmuje kilka programów, przyczyną problemu może być zmiana czasu systemowego, zapełnienie dysku, uszkodzony plik, blokada dostępu, przerwa w komunikacji albo niezgodność pojedynczego rekordu. Bez dzienników zdarzeń i kopii kontrolnych ustalenie źródła awarii opiera się na domysłach. W takich warunkach naprawa jednego objawu może ukryć problem, który powróci przy następnym imporcie. Jak bezpiecznie przygotować integracje z dawnymi rozwiązaniamiPierwszym krokiem powinno być sporządzenie mapy zależności. Należy ustalić, jakie dane są pobierane, dokąd trafiają, kto je zmienia, jak często odbywa się wymiana i co powinno nastąpić po błędzie. Przydatne jest rozdzielenie danych źródłowych, przetworzonych oraz wynikowych. Pozwala to uniknąć sytuacji, w której jeden plik lub jedna tabela pełni jednocześnie funkcję kopii zapasowej, bufora i bieżącego rejestru. Przed zmianą konfiguracji powinno się wykonać kopię danych oraz sprawdzić możliwość odtworzenia działania na odseparowanym stanowisku. Sama obecność kopii nie wystarcza, ponieważ kopia uszkodzona albo niekompletna nie zapewni ciągłości pracy. Test odtworzeniowy powinien obejmować uruchomienie aplikacji, odczyt kilku typowych rekordów, wykonanie przykładowej operacji i sprawdzenie, czy dalsza część przepływu otrzymała prawidłowe informacje. Wskazane jest ograniczenie uprawnień konta używanego przez integrację do niezbędnego minimum. Jeżeli program tylko odczytuje dane, nie powinien mieć prawa ich usuwania ani zmieniania. Jeżeli konieczny jest zapis, warto ograniczyć go do wyznaczonego katalogu lub tabeli. Dobrą praktyką pozostaje rejestrowanie czasu operacji, identyfikatora komunikatu, wyniku przetwarzania oraz informacji o odrzuconych danych. Log powinien być chroniony przed przypadkowym usunięciem, ale nie powinien przechowywać całych wrażliwych rekordów bez uzasadnienia. Wymiana danych powinna być odporna na powtórzenie i częściowe wykonanie. Jeżeli połączenie zostanie przerwane po zapisaniu informacji, ponowienie operacji nie powinno tworzyć drugiego identycznego wpisu. Pomocne są identyfikatory transakcji, kolejka plików oczekujących, oznaczanie statusów oraz mechanizm kwarantanny dla rekordów niezgodnych ze schematem. Dzięki temu pojedynczy błąd nie musi zatrzymywać całego procesu. Modernizację najlepiej dzielić na etapy. Najpierw warto objąć nadzorem sam przepływ danych, później ograniczyć uprawnienia, następnie zastąpić najbardziej ryzykowny mechanizm pośrednikiem, a dopiero potem planować wymianę starej platformy. Takie podejście pozwala mierzyć skutki każdej zmiany i szybciej cofnąć konfigurację, która powoduje niezgodność. Należy również opisać procedurę ręcznego działania na wypadek zatrzymania integracji, ponieważ awaria może wystąpić przed zakończeniem modernizacji. Kiedy zgłosić integracje z nieaktualnymi systemami do serwisuPomoc techniczna jest wskazana, gdy stary program przestaje się uruchamiać, nie widzi urządzenia, odrzuca pliki, zapisuje niepełne dane albo działa tylko po wielokrotnym ponownym uruchomieniu. Zgłoszenie powinno obejmować opis objawu, moment pojawienia się problemu, nazwę używanego programu, informację o ostatniej zmianie oraz przykład danych, które nie zostały przetworzone. Nie powinno się przekazywać pełnych danych wrażliwych, jeżeli do analizy wystarczy zanonimizowany fragment. Warto skorzystać z konsultacji również wtedy, gdy integracja jeszcze działa, ale zależy od komputera, którego nie da się już łatwo odtworzyć, nie ma znanej kopii konfiguracji lub wymaga wyłączania zabezpieczeń systemowych. Wczesne uporządkowanie zależności zwykle ułatwia przygotowanie kopii, opisanie procedur i ocenę, czy możliwe jest stopniowe odłączenie starego rozwiązania. Szczególną uwagę należy poświęcić sytuacji, w której jedna aplikacja jest jedynym miejscem przechowywania danych albo jedynym sposobem komunikacji z urządzeniem. W Warszawie analizę problemów z komputerami, systemami operacyjnymi i połączeniami między aplikacjami może prowadzić Warszawskie Pogotowie Komputerowe 24/7. Przed rozpoczęciem prac warto ustalić zakres dostępu do danych, sposób wykonania kopii oraz oczekiwany rezultat, na przykład przywrócenie odczytu, zabezpieczenie konfiguracji albo przygotowanie planu odejścia od starego programu. Takie przygotowanie ogranicza ryzyko przypadkowej utraty informacji i ułatwia ocenę, czy potrzebna jest doraźna naprawa, czy stopniowa przebudowa całego przepływu. |