Realm и Мультиарендность
Содержание
Что такое RealmRealm masterИзоляция RealmПаттерны мультиарендностиОдин Realm на арендатора (рекомендуется)Общий Realm с группамиКонфигурация Realm через KeycloakRealmImportЧто такое Realm
Realm — это базовая единица изоляции в Keycloak. Каждый Realm управляет своим собственным набором пользователей, учетных данных, ролей, групп, клиентов и политик аутентификации независимо от других Realm. Realm не разделяют базы данных пользователей или конфигурации, что делает их основным механизмом мультиарендности в Keycloak.
Можно рассматривать Realm как выделенную доменную область идентификации — аналогично арендатору (tenant) в многопользовательском SaaS-приложении.
Realm master
Каждая установка Keycloak включает встроенный Realm с именем master. Realm master является административным доменом верхнего уровня и используется исключительно для:
- Управления другими Realm (создание, настройка и удаление)
- Управления настройками сервера Keycloak на уровне всей системы
- Хостинга консоли администратора Keycloak
Не используйте Realm master для управления пользователями приложений или размещения клиентов приложений. Создавайте выделенные Realm для каждого приложения или арендатора, чтобы обеспечить надлежащую изоляцию.
Изоляция Realm
Каждый Realm обеспечивает полную изоляцию по следующим параметрам:
Паттерны мультиарендности
Keycloak поддерживает два распространенных паттерна мультиарендности:
Один Realm на арендатора (рекомендуется)
Каждому арендатору выделяется свой собственный Realm. Это обеспечивает максимальную изоляцию, позволяя каждому арендатору иметь полностью независимых пользователей, роли, клиентов и конфигурацию аутентификации.
- Плюсы: Полная изоляция данных, независимая конфигурация, отсутствие риска утечки данных между арендаторами.
- Минусы: Увеличение нагрузки на управление с ростом количества Realm; настройки на уровне Realm необходимо конфигурировать отдельно для каждого арендатора.
Общий Realm с группами
Несколько арендаторов используют один Realm, а разделение арендаторов осуществляется с помощью групп Keycloak или пользовательских атрибутов.
- Плюсы: Меньшая операционная нагрузка, проще управлять в масштабах.
- Минусы: Слабее изоляция; требуется тщательный контроль доступа для предотвращения доступа к данным между арендаторами. Не рекомендуется для сценариев с жесткими требованиями к соответствию.
Конфигурация Realm через KeycloakRealmImport
В Alauda Build Keycloak конфигурации Realm могут управляться декларативно с помощью Custom Resource KeycloakRealmImport. Это позволяет реализовать управление определениями Realm в стиле GitOps.
Полное описание API см. в KeycloakRealmImport API.