• Русский
  • Realm и Мультиарендность

    Что такое 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 обеспечивает полную изоляцию по следующим параметрам:

    ПараметрОбласть действия
    ПользователиУчетные записи пользователей, учетные данные и профили существуют только в рамках своего Realm
    КлиентыПриложения, зарегистрированные в Realm, недоступны из другого Realm
    РолиРоли на уровне Realm и клиентов ограничены своим Realm
    Потоки аутентификацииСтраницы входа, MFA и другие потоки настраиваются для каждого Realm
    Провайдеры идентификацииВнешние интеграции IdP (LDAP, OIDC, SAML) специфичны для Realm
    СессииСессии пользователей изолированы; SSO действует только внутри одного Realm

    Паттерны мультиарендности

    Keycloak поддерживает два распространенных паттерна мультиарендности:

    Один Realm на арендатора (рекомендуется)

    Каждому арендатору выделяется свой собственный Realm. Это обеспечивает максимальную изоляцию, позволяя каждому арендатору иметь полностью независимых пользователей, роли, клиентов и конфигурацию аутентификации.

    • Плюсы: Полная изоляция данных, независимая конфигурация, отсутствие риска утечки данных между арендаторами.
    • Минусы: Увеличение нагрузки на управление с ростом количества Realm; настройки на уровне Realm необходимо конфигурировать отдельно для каждого арендатора.

    Общий Realm с группами

    Несколько арендаторов используют один Realm, а разделение арендаторов осуществляется с помощью групп Keycloak или пользовательских атрибутов.

    • Плюсы: Меньшая операционная нагрузка, проще управлять в масштабах.
    • Минусы: Слабее изоляция; требуется тщательный контроль доступа для предотвращения доступа к данным между арендаторами. Не рекомендуется для сценариев с жесткими требованиями к соответствию.

    Конфигурация Realm через KeycloakRealmImport

    В Alauda Build Keycloak конфигурации Realm могут управляться декларативно с помощью Custom Resource KeycloakRealmImport. Это позволяет реализовать управление определениями Realm в стиле GitOps.

    apiVersion: k8s.keycloak.org/v2alpha1
    kind: KeycloakRealmImport
    metadata:
      name: my-realm-import
    spec:
      keycloakCRName: example-kc
      realm:
        realm: my-tenant
        enabled: true
        displayName: "My Tenant Realm"

    Полное описание API см. в KeycloakRealmImport API.