Wyjaśnienie modelu multi-tenancy Logto
Zobacz, jak zaprojektowaliśmy model multi-tenancy Logto i jakie korzyści przynosi on aplikacjom SaaS.
Zamieszanie
Być może słyszałeś o niektórych produktach, które używają terminu "multi-tenancy" do reprezentowania izolacji tożsamości: każdy najemca ma własny zestaw użytkowników, ról, uprawnień i danych.
Może to być nieintuicyjne, ale w rzeczywistości "multi-tenancy" oznacza coś przeciwnego: wielu najemców dzieli zasoby w jednej instancji. Dla użytkowników tożsamość w aplikacji jest jak prawo jazdy. Na przykład, mając jedno prawo jazdy, możesz jeździć w różnych stanach (jedna tożsamość dla wielu organizacji), zamiast ubiegać się o nowe prawo jazdy dla każdego stanu.
Model Logto
W Logto zauważyliśmy to zamieszanie na początku naszego projektowania i dążyliśmy do tego, aby było ono właściwe dla twoich aplikacji i twoich użytkowników. Oto nasz projekt:
- Najemca może być traktowany jako pojedyncza instancja Logto, która ma własny zestaw użytkowników, uprawnień i danych.
- W najemcy może znajdować się wiele organizacji. Użytkownik może być członkiem wielu organizacji.
- Dla każdej organizacji stosuje się wzorzec kontroli dostępu opartej na rolach (RBAC) i korzysta się z tego samego zestawu ról oraz uprawnień organizacji. Ten zestaw nazywa się szablonem organizacji.
- Role organizacji i uprawnienia organizacji są skuteczne tylko w kontekście organizacji.
- Na przykład, użytkownik może być "administratorem" (rola) w jednej organizacji, ale "członkiem" (rola) w innej organizacji.
- Bez kontekstu organizacji role organizacji i uprawnienia organizacji są bez znaczenia.
- Używaj uprawnień organizacji, aby kontrolować dostęp w organizacji, zamiast używania ról organizacji.
Ten model zapewnia elastyczność i możliwość ponownego wykorzystania zarządzania tożsamościami, szczególnie w aplikacjach SaaS. Jeśli przyjrzymy się niektórym popularnym aplikacjom SaaS, możemy stwierdzić, że wszystkie mogą pasować do tego modelu. Termin "organizacja" może się różnić w różnych aplikacjach, na przykład "workspace", "zespół" itd., ale koncepcja pozostaje ta sama.
Na przykład, w Notion (popularne narzędzie do współpracy):
- Możesz tworzyć i dołączać do wielu workspace'ów za pomocą jednego konta, zamiast rejestrować się dla każdego workspace'a za pomocą różnych kont.
- Dla każdego workspace Notion definiuje ten sam zestaw poziomów dostępu: "Właściciel workspace" i "członek", podczas gdy możesz spodziewać się różnych poziomów dostępu w różnych workspace'ach.
Dlatego użytkownicy mogą łatwo przełączać się między workspace'ami, nie zmieniając konta ani nie zalogowując się ponownie, a jednocześnie zachowując izolację workspace'ów. Przekładając to na model Logto, oznacza to:
- Szablon organizacji definiuje dwie role: "właściciel" i "członek".
- Jeśli użytkownik dołączył do workspace'a, oznacza to, że jest on członkiem organizacji i ma rolę "członka" w organizacji.
- Jeśli użytkownik stworzył workspace, oznacza to, że jest członkiem organizacji i ma rolę "właściciela" w organizacji.
Zgodnie z różnymi rolami, użytkownik może mieć różne uprawnienia w różnych workspace'ach (organizacjach).
Korzyści
Doświadczenie użytkownika
Dla użytkowników umożliwia to korzystanie z prawdziwego doświadczenia single sign-on. Przełączanie się między organizacjami jest tak proste, jak przełączanie się między zakładkami.
Ponowne użycie
Jedną z zalet aplikacji SaaS jest to, że są one standaryzowane i skalowalne. Na przykład, możesz w kilka kliknięć utworzyć nowy workspace w Notion, a jest on gotowy do użycia.
Kiedy twoja aplikacja rośnie, możesz chcieć dodać więcej ról i uprawnień do każdej organizacji. Na przykład nową rolę "gość" i nowe uprawnienie "zaproszenie:gość". Może to być koszmar, jeśli będzie trzeba zaktualizować wszystkie istniejące organizacje jedna po drugiej.
Z Logto możesz zaktualizować szablon organizacji, a wszystkie istniejące organizacje zostaną automatycznie zaktualizowane.
Jeden model kontroli dostępu, wiele przypadków użycia
W Logto używamy tego samego modelu kontroli dostępu (RBAC) zarówno dla organizacji, jak i dla zasobów API. Oznacza to, że nie musisz uczyć się nowego modelu kontroli dostępu, jeśli znasz już RBAC. Jednocześnie są one od siebie izolowane, więc możesz ich używać do różnych przypadków użycia.
Najbardziej ekscytującą częścią jest to, że możesz ich używać jednocześnie. Rozwińmy przykład Notion:
- Do dostępu do workspace'ów możesz użyć organizacyjnego RBAC Logto.
- Do dostępu i aktualizacji zasobów na poziomie konta (takich jak profil i informacje rozliczeniowe) możesz użyć zasobów RBAC Logto.
Większość SDK Logto obsługuje oba typy RBAC.
Różnice
Organizacyjny RBAC i RBAC zasobów API różnią się w następujących aspektach:
- Organizacyjny RBAC wymaga kontekstu organizacji, podczas gdy RBAC zasobów API nie.
- Organizacyjny RBAC jest używany do kontrolowania dostępu w organizacji, podczas gdy RBAC zasobów API służy do kontrolowania dostępu do zasobów API.
- Użytkownik może mieć różne role organizacyjne w różnych organizacjach, podczas gdy role dla zasobów API są uniwersalne w całej instancji najemcy.
- Role i uprawnienia dla tych dwóch typów RBAC są od siebie odizolowane.
Uwagi końcowe
Budowanie aplikacji SaaS jest trudne, i mamy nadzieję, że Logto pomoże ci skupić się na twoim głównym biznesie. Nie wahaj się dać nam swojej opinii, jeśli masz jakieś pytania lub sugestie.