Realm (Область безопасности) в Keycloak — это изолированная среда, внутри которой управляются пользователи, клиенты (приложения), роли, политики аутентификации и авторизации.
Каждый realm полностью независим и не имеет доступа к пользователям и настройкам других realm’ов.
📌 1. Зачем нужны realm’ы?
Realm позволяет:
- Изолировать разные системы, приложения или организации внутри одного Keycloak.
- Гибко управлять пользователями и их правами.
- Использовать отдельные правила аутентификации (например, SSO или MFA) для разных групп пользователей.
💡 Пример:
Компания может создать отдельные realm’ы для разных продуктов:
ecommerce-realm
— для интернет-магазина.crm-realm
— для системы управления клиентами.internal-realm
— для сотрудников.
Каждый из этих realm’ов имеет свои наборы пользователей, клиентов, ролей и настроек.
🔹 2. Виды realm в Keycloak
🟢 1. Master Realm
- Создаётся по умолчанию при установке Keycloak.
- Используется для администрирования всех остальных realm’ов.
- В master-realm хранится администратор Keycloak, который может управлять другими realm’ами.
📌 Пример:
admin
— это пользователь внутри Master Realm, который управляет Keycloak.
🟢 2. Custom Realm (Пользовательский)
- Это realm, созданный администратором для конкретного приложения или организации.
- В нём настраиваются пользователи, роли, клиенты и политики безопасности.
📌 Пример:
Вы создаёте company-realm
, в котором:
- Пользователи — клиенты интернет-магазина.
- Клиенты —
ecom-web
,ecom-api
,mobile-app
. - Роли —
admin
,user
,manager
.
🔹 3. Как создать Realm в Keycloak
✅ Через Admin Console
- Перейдите в Keycloak Admin Console (
http://localhost:8080/admin
). - В меню слева выберите “Create Realm”.
- Введите имя realm (например,
ecommerce
). - Нажмите “Save”.
✅ Через REST API
curl -X POST "http://localhost:8080/auth/admin/realms" \
-H "Authorization: Bearer <admin_token>" \
-H "Content-Type: application/json" \
-d '{
"realm": "ecommerce",
"enabled": true
}'
✅ Теперь в Keycloak появится новый realm ecommerce.
🔹 4. Какие сущности управляются в realm?
Внутри realm создаются и управляются:
Сущность | Описание |
---|---|
Users | Пользователи, зарегистрированные в этом realm. |
Roles | Роли (например, admin , user ). |
Groups | Группы пользователей (например, customers , managers ). |
Clients | Приложения, которые используют Keycloak (frontend , api , mobile ). |
Identity Providers | Внешние IdP (например, Google, LDAP, Facebook). |
Authentication Flows | Настройки аутентификации (пароль, OTP, social login). |
📊 5. Разница между Realm и Tenant
Некоторые путают realm и multi-tenancy.
Параметр | Realm | Multi-Tenant |
---|---|---|
Изолированность | Полная | Частичная |
Доступ к данным | Realm’ы не могут видеть друг друга | В multi-tenant данные разделяются логически |
SSO между клиентами | Только внутри realm | Можно между tenant’ами |
Если вам нужно полное разделение пользователей и конфигурации, используйте отдельные realm’ы.
🔥 6. Итог
- Realm — это изолированная область в Keycloak, содержащая пользователей, клиентов и настройки безопасности.
- Keycloak поддерживает Master Realm (для админов) и Custom Realm (для приложений и компаний).
- В одном Keycloak можно создать несколько realm’ов для разных приложений или организаций.
- Пользователи из одного realm не могут авторизоваться в другом, если не настроен Cross-Realm Token Exchange.