Bezpieczeństwo architektury multi-tenant
W architekturze multi-tenant grupa użytkowników posiada wspólny dostęp (wraz z określonymi uprawnieniami) do danego oprogramowania. Aplikacja jest zaprojektowana sposób zapewniający użytkownikowi jej dane, konfigurację, zarządzanie użytkownikami, indywidualną funkcjonalność oraz właściwości niefunkcjonalne. Aplikacja ta ma świadomość istnienia różnych korzystających z niej odbiorców (na etapie ich identyfikacji). Tak zaprojektowany system nazywany jest często systemem współdzielonym i stanowi przeciwwagę dla systemów dedykowanych, czy izolowanych. Rozwiązanie takie wymaga też bardziej wyrafinowanej architektury niż model single-tenant.
Obsługiwanym są przez ten sam serwer i korzystającym z tej samej bazy danych użytkownikom należy zagwarantować bezpieczeństwo. To naczelna zasada dobrze zaprojektowanego kodu, która przekłada się na tańszy rozwój oraz utrzymanie; daje również większą swobodę w obszarze skalowalności, dzięki zastosowaniu skalowania horyzontalnego i wertykalnego – zależnie od potrzeb.
Określone rozwiązania powinny być implementowane w sposób deklaratywny, spełniając wymóg projektowania ich jako aspektu systemu, a nie jego wrodzonej części. Dbałość o te elementy zagwarantuje, że logika związana ze specyfiką aplikacji nie będzie przenikała do logiki biznesowej – a tym samym do samego kodu. Dbałość o oddzielenie wielo-tenantowości od logiki biznesowej stanowi niezwykle istotny aspekt bezpieczeństwa. Dane architektury multi-tenant można podzielić na mechanizm bazy danych, pamięci podręcznej (umożliwia szybki dostęp do danych z ich bazy lub innych zasobów), asynchroniczności (kontekst tananta). Mechanizmy te, jak zostało wspomniane, muszą być świadome istnienia różnych odbiorców. Ważne jest aby API, które te mechanizmy udostępniają dla logiki biznesowej, nie miało już aspektów wielo-tenantowości.
Kolejnym istotnym elementem, znacznie podnoszącym bezpieczeństwo takiej aplikacji, jest szczelne zabezpieczenie całego systemu funkcjonalnym wspieraniem prawidłowego przepływu żądań od użytkowników. Przy każdym żądaniu użytkownika, na czas trwania tego żądania, system powinien przestawić się na środowisko danego tenanta. Warstwa, na którą składają się wszystkie punkty wejściowe do sytemu to system Endpoint, którego rolą jest konfiguracja danego środowiska – dlatego kluczowe jest jego szczelne zaprojektowanie.
autor: RSS data: 25.11.2020