Кейс: Создание мультитенантности с Logto Organizations
Узнайте, как настроить надежную и масштабируемую основу идентификации для мультитенантности с Logto Organizations.
Сегодня мультитенантность становится важной частью приложения или SaaS. Это часто включает в себя сложные отношения между пользователями, организациями, ролями и разрешениями. Например, пользователь может быть участником нескольких организаций, и наоборот; пользователь также может иметь разные роли в разных организациях.
Проблема
Это может привести к головной боли не только в начале, но и при долгосрочной поддержке приложения. Традиционная модель ролевого управления доступом (RBAC) может частично решить эту проблему, но быстро становится кошмаром, когда количество пользователей и организаций растет.
Например, в начале у вас может быть только две роли в каждой организации: admin
и member
. Когда у вас есть 10 организаций, вы будете управлять 20 ролями; когда у вас есть 1,000 организаций, вы будете управлять 2,000 ролей.
С ростом бизнеса, вам может понадобиться добавить больше ролей, таких как guest
, developer
и т.д. Сложность модели RBAC будет расти в геометрической прогрессии.
У нас была та же проблема, когда мы ст роили Logto Cloud. Мы вскоре поняли, что это распространенная проблема для отрасли, и нам нужно решить её. И Logto Organizations приходит на помощь.
Шаблон организации
Быстрый вопрос: почему SaaS-приложения являются SaaS? Мы считаем, что масштабируемость является одной из самых важных причин. Другими словами, что работает для одного клиента, должно работать для всех клиентов.
Это приводит к концепции "шаблон организации". Шаблон организации — это план модели управления доступом для каждой организации: он определяет роли и разрешения, применимые ко всем организациям.
Скажем, у нас есть две роли для каждой организации:
admin
: может управлять организацией, включая добавление / удаление участников, изменение ролей и т.д.member
: может получать доступ к ресурсам организации и приглашать новых участников.
Мы можем создать шаблон организации со следующей конфигурацией: