| Termin | Definicja |
|---|---|
| brak rejestrowania działań API | Brak rejestrowania działań API to luka uniemożliwiająca prześledzenie żądań kierowanych do interfejsu programistycznego. Na czym polega brak rejestrowania działań APIInterfejs programistyczny API umożliwia wymianę danych i wywoływanie operacji pomiędzy aplikacjami, usługami lub modułami jednego systemu. Każde żądanie kierowane do API może zawierać między innymi metodę HTTP, adres zasobu, parametry, nagłówki, dane wejściowe oraz informacje o uwierzytelnieniu. Brak rejestrowania działań API oznacza, że system nie zapisuje wystarczających informacji o tych żądaniach i odpowiedziach. W efekcie po wystąpieniu błędu nie ma wiarygodnego śladu pozwalającego ustalić, jakie wywołanie zostało wykonane, kiedy nastąpiło i jaki rezultat zwrócił interfejs. Nie chodzi wyłącznie o brak pełnego zapisu treści każdego żądania. Problem może dotyczyć także pomijania kodów odpowiedzi HTTP, czasu obsługi, identyfikatora żądania, adresu klienta, nazwy użytej trasy lub informacji o błędzie. Dziennik może istnieć, ale być zbyt ubogi, aby odtworzyć przebieg zdarzeń. Przeciwieństwem takiej luki jest kontrolowane rejestrowanie zdarzeń API, w którym zapisuje się dane potrzebne do diagnostyki, monitorowania i wykrywania nieprawidłowości, jednocześnie ograniczając informacje wrażliwe. Jak brak logów utrudnia odtworzenie przepływu danychBez dzienników nie można łatwo ustalić, czy problem powstał po stronie klienta, aplikacji obsługującej API, połączenia sieciowego czy systemu przechowującego dane. Przykładowo użytkownik może otrzymać komunikat o nieudanej operacji, ale bez zapisu żądania nie wiadomo, czy wysłano właściwy adres zasobu, poprawną metodę HTTP i oczekiwane parametry. Brak kodu odpowiedzi uniemożliwia rozróżnienie takich sytuacji jak błąd autoryzacji oznaczany zwykle kodem 401, brak uprawnień oznaczany kodem 403, nieistniejący zasób oznaczany kodem 404 oraz błąd po stronie aplikacji oznaczany kodem 500. Brak rejestrowania może również ukryć błędy kolejności operacji. Jeżeli aplikacja najpierw tworzy rekord, następnie pobiera jego identyfikator, a później wysyła kolejne żądanie zależne od tego identyfikatora, dziennik pozwala sprawdzić, czy wszystkie etapy rzeczywiście się odbyły. Gdy zapisów nie ma, trudniej wykryć przerwanie procesu pomiędzy żądaniami, wielokrotne wysłanie tej samej operacji albo użycie nieaktualnych danych. Szczególnie istotny jest identyfikator korelacyjny, czyli wspólna wartość przypisana żądaniom należącym do jednego przepływu. Bez niego połączenie wpisów z wielu komponentów może być niemożliwe. Skutki diagnostyczne i bezpieczeństwa niepełnego rejestrowaniaNiepełne logowanie wydłuża analizę awarii, ponieważ osoba diagnozująca musi opierać się na objawach pośrednich, komunikatach wyświetlanych użytkownikowi albo późniejszych skutkach nieudanej operacji. Utrudnia to ustalenie, czy błąd jest powtarzalny, zależy od konkretnego zasobu, występuje tylko przy określonych danych wejściowych lub pojawił się po zmianie konfiguracji. Bez czasu rozpoczęcia i zakończenia obsługi żądania nie da się także rzetelnie ocenić opóźnień API ani stwierdzić, czy problem wynika z przekroczenia limitu czasu. Brak śladów operacji ogranicza również możliwość wykrywania nietypowego użycia interfejsu. W dziennikach można analizować nagłe zwiększenie liczby żądań, powtarzające się nieudane próby uwierzytelnienia, odwołania do nieistniejących tras lub nietypowe kody odpowiedzi. Jeżeli takie zdarzenia nie są zapisywane, późniejsze ustalenie zakresu problemu jest znacznie trudniejsze. Rejestrowanie nie powinno jednak oznaczać bezkrytycznego zapisywania tokenów, haseł, kluczy API ani całych danych przesyłanych przez użytkownika. W praktyce wrażliwe wartości należy maskować, pomijać albo zastępować bezpiecznym identyfikatorem, aby sam dziennik nie stał się dodatkowym źródłem ryzyka. Sprawdzanie rejestrowania API podczas diagnostyki systemuDiagnostykę należy rozpocząć od ustalenia, czy komponent obsługujący API w ogóle generuje zdarzenia dla poprawnych i błędnych żądań. Warto wykonać kontrolne wywołanie istniejącego zasobu, żądanie z niepoprawną metodą, próbę dostępu bez wymaganych uprawnień oraz zapytanie do nieistniejącej ścieżki. Następnie porównuje się oczekiwane zdarzenia z zapisami w dzienniku aplikacji, systemie monitorowania lub narzędziu zbierającym logi. Każdy wpis powinien pozwalać powiązać zdarzenie z konkretnym czasem i żądaniem, a komunikat błędu powinien wskazywać przyczynę na poziomie użytecznym dla diagnostyki. Należy także sprawdzić, czy logi są kompletne, chronologiczne i dostępne po ponownym uruchomieniu aplikacji. Istotne jest określenie miejsca zapisu, czasu przechowywania, sposobu rotacji plików oraz zachowania systemu po zapełnieniu przestrzeni. Sama obecność pliku dziennika nie potwierdza poprawności mechanizmu, jeżeli wpisy są nadpisywane zbyt szybko albo nie zawierają identyfikatora korelacyjnego. W przypadku podejrzenia problemu z komputerem lub aplikacją analizuje się konfigurację poziomu logowania, działanie usługi odpowiedzialnej za zapis oraz zgodność czasu systemowego. Taka weryfikacja pozwala odróżnić brak rejestrowania od błędu w wyszukiwaniu, filtrowaniu albo przechowywaniu już wygenerowanych informacji. |