Paweł Łąka

Head of Security Solutions

Dlaczego warto zbudować system uwierzytelniający w oparciu o mikroserwisy?

Od sprawnego działania systemu Single Sign On (SSO) zależy działanie całej firmy: brak możliwości zalogowania paraliżuje inne aktywności.

Aby tę niezawodność zapewnić, trzeba myśleć o systemach SSO jak o żyjących maszynach, które muszą być regularnie rozwijane i dopasowywane do aktualnych standardów.

Dziś skuteczne i bezpieczne systemy uwierzytelniania i autoryzacji użytkowników buduje się w oparciu o mikroserwisy. SSO nie powinno być wielkim, trudno-zarządzalnym monolitem z dostępem do Active Directory (AD). Jakie korzyści płyną z wykorzystania mikroserwisów w tym obszarze?

1. Elastyczność

Trwa bezustanny wyścig hakerów i specjalistów od bezpieczeństwa, a to właśnie systemy uwierzytelniania są najbardziej narażone na ataki. Dlatego wymagają ciągłych aktualizacji i ulepszeń. Nieustannie pojawiają się też nowe standardy uwierzytelniania, np. tokeny, aplikacje mobilne, czy biometria (rozpoznawanie odcisku palca, twarzy, gesty).

System SSO musi być przygotowany na konieczność wprowadzania takich zmian i na tyle elastyczny, by można było sprawnie wprowadzić nowe rozwiązanie, gdy zajdzie taka potrzeba. Zmiana standardu metod autoryzacji w przypadku mikroserwisów nie wiąże się z przebudową całej aplikacji.

2. Wydajność

System SSO musi być wydajny, co przekłada się na doświadczenie użytkownika - proces logowania jest wtedy dla niego ledwie zauważalny. Gdy zajmuje zbyt długo czasu, staje się barierą w korzystaniu z serwisu.

SSO oparte na mikroserwisach jest bardziej wydajne ze względu na ich wielkość. Istnieje pogląd, w którym mikroserwis powinien być taki, aby dwóch developerów potrafiło zaimplementować go w przeciągu 2-3 tygodni. Mikroserwisy powinny być nie tylko małe, ale także niezależne od siebie na poziomie interfejsu, kodu czy modelu danych. Tak budowane farmy pozwalają na dowolne skalowanie aplikacji w miejscach, które faktycznie są wąskimi gardłami.

Z perspektywy firmy budowanie farm mikroserwisów zamiast monolitów pozwala na uniezależnienie się od pojedynczych specjalistów czy jednego dostawcy oprogramowania. Umożliwia to także zmniejszenie wymaganych kompetencji w zespołach tworzących i zarządzających takimi systemami. Jest to szczególnie ważne przy tak newralgicznych systemach jakimi są systemy uwierzytelniające.

3. Bezpieczeństwo

Wystarczy mała luka w systemie, by mogła przejąć nad nim kontrolę niepożądana osoba. Gdy taki wypadek wydarzy się w architekturze mikroserwisów, przejęty zostanie jedynie jeden mikroserwis, odpowiadający za cząstkę działania systemu, zaś pozostałe pozostaną nietknięte. Inaczej w wypadku monolitu, gdzie przestępca zyskuje od razu dostęp do całego systemu i może poczynić nieporównywalnie większe szkody.

Przejęcie systemu takiego jak SSO byłoby katastrofalne w skutkach. Umożliwienie poprawnego zalogowania do innych systemów firmowych spowodowałoby w szybki sposób kolejne ataki i przejęcie dużego zakresu infrastruktury a także poufnych danych firmy.

4. Szybsze rozwiązywanie problemów

Każdemu z nas zdarza się, że nie możemy zalogować się do aplikacji lub musimy prosić o reset hasła, ponieważ wystąpił błąd w systemie uwierzytelniającym. Często zespół utrzymaniowy spędza długie godziny na poszukiwaniu źródła błędu. Uporządkowana farma mikroserwisów pozwala na szybszą analizę oraz naprawienie problemu. Zazwyczaj poprawka dotyczy jednej funkcji, a więc jednego mikroserwisu - nie trzeba przebudowywać całej farmy. Monolit zaś buduje się i wstaje jako całość, czasem z nowymi błędami.

Struktura rozwiązań monolitycznych sprawia, że często występuje tam tzw. efekt motyla. Tak jak trzepot skrzydeł motyla może wywołać tornado na innej półkuli, tak w monolicie zmiana jednego parametru może spowodować paraliż całej sieci. Analiza zależności wewnątrz rozległego systemu budowanego przez lata wymaga wielu długich dni, spędzonych na studiowaniu dokumentacji (której często brakuje) oraz poszukiwaniu pracowników, którzy posiadają wiedzę na ten temat.

Dlatego mikroserwisy nie tylko pozwalają szybciej zidentyfikować problem, ale także podnoszą komfort psychiczny członków zespołu, podejmujących decyzję i implementujących zmianę metody logowania.

5. Szybsze wprowadzanie zmian

Nad zarządzaniem farmy serwisów możemy panować w czasie rzeczywistym dzięki narzędziom do ciągłego instalowania (ang. Continous Deployment), np. Ansible". Wówczas możemy małe zmiany wdrażać bez oczekiwania na kolejny duży release. Wystarczy powoli, stale monitorując sytuację, przerzucać użytkowników na bieżąco na nowe rozwiązanie, a nawet na nowy mikroserwis. Takie projektowanie systemów - w paradygmacie Continuous Delivery and Deployment - pozwala w pełni korzystać z pozytywów podejścia DevOps. Małe zespoły potrafią jednocześnie wdrażać i utrzymywać swoje mikroserwisy, co nie jest możliwe przy dużych systemach.

Podsumowanie

Monolity są trudno skalowalne, drogie w utrzymaniu i nie sprzyjają wprowadzaniu zmian. Ponadto nowej osobie zapoznanie się z takim systemem zajmuje dużo czasu, co negatywnie wpływa na bezproblemowe utrzymanie i rozwój takiego systemu - zwłaszcza tak kluczowego jak SSO.

To dlatego mikroserwisy wypierają monolity w coraz większej ilości projektów. Z tego rozwiązania korzystają firmy takie jak Amazon, Spotify czy Walmart.