Аутентификация в OpenSearch Dashboards с помощью Keycloak
Вы можете использовать Keycloak
Чтобы настроить аутентификацию:
- Настройте провайдер идентификации.
- Настройте SSO для кластера.
- Настройте роли для SSO.
- Проверьте работу SSO.
Примечание
Это практическое руководство проверялось для кластера OpenSearch 2.8 и Keycloak 24.0.
Перед началом работы
-
Убедитесь, что вы можете подключиться к OpenSearch Dashboards с использованием реквизитов пользователя
admin
.В этом практическом руководстве предполагается, что веб-интерфейс OpenSearch Dashboards доступен по URL:
https://c-cat0adul1fj0********.rw.mdb.yandexcloud.net/
-
Убедитесь, что вы можете работать с Keycloak:
-
Проверьте, что есть доступ к Keycloak.
-
Проверьте, что есть доступ к нужному realm
. -
Проверьте, что есть достаточные права в этом realm для управления:
- Ролями.
- Пользователями и группами.
- Клиентами (так в терминологии Keycloak называются приложения, с помощью которых происходит аутентификация).
В этом практическом руководстве предполагается, что:
-
Для управления Keycloak используется аккаунт суперадминистратора
, который позволяет выполнять любые операции в любом realm. -
Все операции выполняются в realm с именем
master
. -
Keycloak доступен по URL:
http://keycloak.example.com:8080
-
Консоль администратора Keycloak доступна по URL:
http://keycloak.example.com:8080/admin/
-
Настройте провайдер идентификации
-
Подключитесь к консоли управления Keycloak и выберите realm с именем
master
. -
Создайте клиент:
-
На панели слева выберите Clients. Нажмите кнопку Create client.
-
В поле Client type выберите вариант SAML.
-
В поле Client ID укажите идентификатор клиента.
Этот идентификатор должен совпадать с URL для подключения к OpenSearch Dashboards:
https://c-cat0adul1fj0********.rw.mdb.yandexcloud.net/
-
Нажмите кнопку Next.
-
Укажите ACS URL в полях:
- Home URL;
- Valid redirect URIs;
- IDP Initiated SSO Relay State.
ACS URL имеет вид:
https://c-cat0adul1fj0********.rw.mdb.yandexcloud.net/_opendistro/_security/saml/acs
-
Нажмите кнопку Save.
-
-
Убедитесь, что использование клиента разрешено: опция в правом верхнем углу должна быть включена (Enabled).
-
На вкладке Settings настройте параметры клиента следующим образом:
-
SAML Capabilities:
- Name ID format —
email
. - Force name ID format — убедитесь, что эта опция включена.
- Force POST binding — убедитесь, что эта опция включена.
- Include AuthnStatement — убедитесь, что эта опция включена.
- Name ID format —
-
Signature and Encryption:
- Sign documents — убедитесь, что эта опция включена.
- Sign assertions — убедитесь, что эта опция включена.
- Signature algorithm —
RSA_SHA256
. - SAML signature key name —
CERT_SUBJECT
. - Canonicalization method —
EXCLUSIVE
.
-
-
Нажмите кнопку Save.
-
На вкладке Keys отключите требование подписи сообщений от клиента.
Для этого отключите опцию Client signature required.
-
На вкладке Client scopes настройте сопоставление ролей для клиента:
-
Нажмите на URL для подключения к OpenSearch Dashboards с суффиксом
-dedicated
. -
На вкладке Mappers нажмите Configure a new mapper. Выберите из списка маппер Role list.
-
Укажите следующие настройки маппера:
- Name — любое имя маппера, например
OpenSearch Mapper
. - Role attribute name —
roles
. - SAML Attribute NameFormat —
Basic
; - Single Role Attribute — убедитесь, что эта опция включена.
- Name — любое имя маппера, например
-
Нажмите кнопку Save.
-
Настройте SSO для кластера
-
Получите метаданные для созданного ранее клиента:
-
Подключитесь к консоли управления Keycloak и выберите realm с именем
master
. -
На панели слева выберите Clients.
-
Нажмите на URL для подключения к OpenSearch Dashboards.
-
В правом верхнем углу раскройте меню Action и выберите пункт Download adapter config.
-
Выберите формат
Mod Auth Mellon Files
и нажмите кнопку Download.Будет загружен архив.
-
Извлеките файл
idp-metadata.xml
из этого архива. В этом файле содержатся необходимые метаданные.
-
-
Настройте SSO для кластера.
Совет
Далее приведены инструкции для консоли управления, но можно использовать и другие доступные интерфейсы Yandex Cloud.
Чтобы настроить источник аутентификации Keycloak:
-
В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for OpenSearch. -
Нажмите на имя нужного кластера и выберите вкладку Источники аутентификации.
-
Нажмите кнопку Настроить.
-
Укажите нужные значения настроек:
-
idp_entity_id — идентификатор провайдера.
Для Keycloak этот идентификатор совпадает с URL, который указывает на realm с именем
master
:http://keycloak.example.com:8080/realms/master
-
idp_metadata_file — выберите и загрузите файл с метаданными, извлеченный из архива.
-
sp_entity_id — идентификатор поставщика услуг.
Используйте тот же идентификатор, который был указан при настройке клиента Keycloak в поле Client ID:
https://c-cat0adul1fj0********.rw.mdb.yandexcloud.net/
-
kibana_url — URL для подключения к OpenSearch Dashboards.
-
roles_key — атрибут, в котором хранится перечень ролей.
Укажите тот же атрибут, который был настроен для маппера Keycloak —
roles
. -
subject_key — оставьте поле пустым.
-
Таймаут сессии — оставьте значение
0
. -
Активировать — убедитесь, что эта опция включена.
-
-
Нажмите кнопку Сохранить.
-
-
Дождитесь, когда статус кластера изменится на
Running
. Применение настроек может занять несколько минут.
Настройте роли для SSO
-
Настройте Keycloak так, чтобы его пользователям назначались нужные роли:
-
Подключитесь к консоли управления Keycloak и выберите realm с именем
master
. -
Создайте роль:
-
На панели слева выберите Realm roles. Нажмите кнопку Create role.
-
Введите имя роли в поле Role name.
Далее используется имя роли
kc_demo_role
. -
Нажмите кнопку Save.
-
-
Создайте пользователя и настройте его:
-
На панели слева выберите Users. Нажмите кнопку Add user.
-
Укажите реквизиты пользователя:
-
Username — имя аккаунта.
Далее используется имя аккаунта
kc_demo_user
. -
Email — адрес электронной почты.
Далее используется адрес
kc_demo_user@example.com
. -
Email verified — убедитесь, что эта настройка включена.
Примечание
Для упрощения изложения в этом практическом руководстве эта настройка включена, чтобы не проходить верификацию по email при первом логине.
-
-
Нажмите кнопку Create.
-
На вкладке Credentials нажмите кнопку Set password и задайте пароль.
Также отключите настройку Temporary.
Примечание
Для упрощения изложения в этом практическом руководстве эта настройка отключена, чтобы не менять пароль при первом логине.
-
-
Создайте группу и настройте ее:
-
На панели слева выберите Groups и нажмите кнопку Create group.
-
Введите имя группы и нажмите кнопку Create.
Далее используется имя группы
kc_demo_group
. -
Нажмите на имя группы, чтобы открыть ее свойства.
-
На вкладке Members нажмите кнопку Add member, выберите пользователя
kc_demo_user
, затем нажмите кнопку Add. -
На вкладке Role mapping нажмите кнопку Assign role, включите фильтр Filter by realm roles, выберите роль
kc_demo_role
из списка, затем нажмите кнопку Assign.
-
-
-
Сопоставьте роли кластера OpenSearch с ролями на стороне Keycloak. Это позволит получить доступ к кластеру через SSO.
Чтобы сопоставить роли:
-
Подключитесь к OpenSearch Dashboards от имени пользователя
admin
. -
В меню слева выберите OpenSearch Plugins → Security.
-
На панели слева выберите Roles.
-
Настройте сопоставления ролей:
-
Нажмите на имя нужной роли.
Далее предполагается, что была выбрана роль
kibana_user
. -
Перейдите на вкладку Mapped users.
-
Нажмите кнопку Manage mapping.
-
В блоке Backend roles введите имя роли в Keycloak, с которой будет сопоставлена роль в OpenSearch, и нажмите кнопку Map.
Далее предполагается, что была выбрана роль
kc_demo_role
.
-
-
Теперь пользователи Keycloak, добавленные в группу kc_demo_group
, будут получать роль kc_demo_role
.
Если при подключении к OpenSearch Dashboards аутентификация пройдет успешно, то пользователь с ролью kc_demo_role
получит роль kibana_user
в OpenSearch.
Проверьте работу SSO
-
Откройте браузер в гостевом режиме или режиме инкогнито.
Это действие нужно выполнять с компьютера, который имеет доступ к Keycloak.
-
Подключитесь к OpenSearch Dashboards.
На странице логина нажмите кнопку Log in with single sign-on вместо ввода имени пользователя и пароля.
Если все настроено правильно, браузер перенаправит вас на страницу аутентификации в Keycloak.
-
Введите реквизиты пользователя
kc_demo_user
и нажмите кнопку Sign in.После успешной аутентификации Keycloak перенаправит вас на ACS URL, затем вы будете перенаправлены на главную страницу OpenSearch Dashboards.
-
Убедитесь, что пользователю назначена роль
kibana_user
в OpenSearch.Для этого нажмите на аватар пользователя в верхнем правом углу и выберите пункт View roles and identities. Будут показаны назначенные пользователю роли.
-
Убедитесь, что вы можете выполнять все действия, которые разрешены для роли
kibana_user
.