Создать SAML-приложение в Yandex Identity Hub для интеграции с OpenSearch
Примечание
Функциональность находится на стадии Preview.
OpenSearch
Чтобы пользователи вашей организации могли аутентифицироваться в OpenSearch с помощью технологии единого входа по стандарту SAML
Управлять SAML-приложениями может пользователь, которому назначена роль organization-manager.samlApplications.admin или выше.
Чтобы дать доступ пользователям вашей организации в OpenSearch:
Создайте приложение
- Войдите в сервис Yandex Identity Hub
. - На панели слева выберите
Приложения. - В правом верхнем углу страницы нажмите
Создать приложение и в открывшемся окне:-
Выберите метод единого входа SAML (Security Assertion Markup Language).
-
В поле Имя задайте имя создаваемого приложения:
opensearch-app. -
(Опционально) В поле Описание задайте описание приложения.
-
(Опционально) Добавьте метки:
- Нажмите Добавить метку.
- Введите метку в формате
ключ: значение. - Нажмите Enter.
-
Нажмите Создать приложение.
-
Настройте интеграцию
Чтобы настроить интеграцию OpenSearch с созданным SAML-приложением в Identity Hub, выполните настройки на стороне кластера OpenSearch и на стороне Identity Hub.
-
Получите метаданные для созданного ранее приложения:
- Войдите в сервис Yandex Identity Hub
. - На панели слева выберите
Приложения и выберите созданное ранее SAML-приложение. - На вкладке Обзор в блоке Конфигурация поставщика удостоверений (IdP) скопируйте значение параметра
Issuer / IdP EntityID, которое необходимо задать на стороне кластера OpenSearch. - На вкладке Обзор в блоке Конфигурация поставщика удостоверений (IdP) нажмите кнопку Скачать файл с метаданными.
Скачанный XML
-файл содержит необходимые метаданные и сертификат, который используется для проверки подписи SAML-ответов. - Войдите в сервис Yandex Identity Hub
-
Настройте SAML-аутентификацию для кластера OpenSearch.
Настройка производится путём изменения конфигурационных файлов
config.ymlиroles_mapping.ymlплагина OpenSearch Security Plugin, по умолчанию находящихся в каталоге/etc/opensearch/opensearch-security/, а также файла OpenSearch Dashboardsopensearch_dashboards.yml, по умолчанию расположенного в каталоге/etc/opensearch-dashboards/.-
Поместите ранее загруженный файл метаданных
idp-metadata.xmlв каталог плагина OpenSearch Security Plugin (например,/etc/opensearch/opensearch-security/saml/). -
Убедитесь, что пользователь OpenSearch (обычно
opensearch) имеет права на чтение этого файла.sudo chown opensearch:opensearch /etc/opensearch/opensearch-security/saml/idp-metadata.xml sudo chmod 644 /etc/opensearch/opensearch-security/saml/idp-metadata.xml -
Сгенерируйте ключ
exchange_keyдля подписи токенов JSON Web Tokens (JWT).Совет
Ключ JSON Web Tokens (JWT) должен представлять собой строку, сгенерированную с использованием алгоритма HMAC256. Вы можете использовать онлайн‑генераторы или утилиты командной строки, создающие криптографически надёжные строки с поддержкой данного алгоритма.
-
Добавьте новый домен аутентификации SAML
yandex_saml_auth_domainв секцииauthcфайлаconfig.ymlи укажите параметры как показано ниже.authc: # ... (оставьте существующий basic_internal_auth для служебного пользователя) ... # Домен аутентификации SAML для Yandex Identity Hub yandex_saml_auth_domain: order: 1 # Рекомендуется: 1 или 2 http_enabled: true transport_enabled: false http_authenticator: type: saml challenge: true config: # --- Настройки IdP (Yandex Identity Hub) --- idp: # Путь к загруженному XML-файлу метаданных metadata_file: "/etc/opensearch/opensearch-security/saml/idp-metadata.xml" # --- Настройки SP (OpenSearch) --- sp: # Параметр должен совпадать с SP EntityID, который указан в Yandex Identity Hub entity_id: "opensearch-saml-sso" # URL-адрес вашего Dashboards kibana_url: "https://<your-dashboards-url>/" # Ключ для подписи токенов JWT exchange_key: "5efe29a39306bed6bd4f67af06d54d813ff8b05692ef480204c917602ffdd9a9" # --- Настройка групп доступа --- # Имя атрибута в SAML-ответе, содержащего группы roles_key: "groups" # ...Совет
В современных версиях плагина OpenSearch Security Plugin добавлен параметр
metadata_url, позволяющий напрямую загружать файл метаданных из Yandex Identity Hub. Если ваша версия поддерживает этот параметр, вам не потребуется загружать и размещать файл метаданных на сервер. Для настройки достаточно заменить параметрmetadata_fileв конфигурационном файлеconfig.ymlна параметрmetadata_url.# ... # --- Настройки IdP (Yandex Identity Hub) --- idp: # URL XML-файла метаданных metadata_url: "https://auth.yandex.cloud/saml/metadata/ek0vbjom..." # ... -
Чтобы сопоставить группы пользователей Yandex Identity Hub с внутренними ролями OpenSearch при SAML-аутентификации, отредактируйте файл
roles_mapping.ymlплагина OpenSearch Security Plugin. Добавьте требуемые группы из Identity Hub в секциюbackend_rolesсоответствующих ролей в OpenSearch, как показано ниже.# ... # Группа "opensearch-users" из Yandex Identity Hub # сопоставляется с ролью "all_access" в OpenSearch all_access: reserved: false backend_roles: - "admin" - "opensearch-users" # группа созданная в Identity Hub description: "Allow full access for opensearch-users group from Identity Hub" # ...Совет
В качестве альтернативного варианта сопоставления ролей можно использовать веб‑интерфейс OpenSearch Dashboards.
Сопоставление ролей через веб‑интерфейс OpenSearch Dashboards
- Войдите в OpenSearch Dashboards под учётной записью
admin. - В левом боковом меню перейдите в раздел: Management → Security.
- В левой панели выберите пункт Roles.
- Настройте сопоставления ролей:
- Кликните на название необходимой роли (например,
all_access). - Перейдите на вкладку Mapped users.
- Нажмите кнопку Manage mapping.
- В поле Backend roles укажите группу пользователей Identity Hub, которую требуется сопоставить с ролью OpenSearch, например
opensearch-users. - Нажмите кнопку Map.
- Кликните на название необходимой роли (например,
- Войдите в OpenSearch Dashboards под учётной записью
-
После изменений в файлах
config.ymlиroles_mapping.ymlнеобходимо загрузить новую конфигурацию в кластер вашего OpenSearch. Для этого используйте скриптsecurityadmin.sh.# Убедитесь, что вы используете правильные пути к сертификатам и ключам # и что securityadmin.sh запущен с правами администратора. sudo "/usr/share/opensearch/plugins/opensearch-security/tools/securityadmin.sh" \ -cd "/etc/opensearch/opensearch-security" \ -icl \ -key "<путь_к_вашему_ключу>" \ -cert "<путь_к_вашему_сертификату>" \ -cacert "<путь_к_корневому_сертификату_CA>" \ -nhnv -
Внесите изменения в конфигурационный файл OpenSearch Dashboards
opensearch_dashboards.ymlследующим образом:# ... # Включите множественную аутентификацию opensearch_security.auth.multiple_auth_enabled: true # Укажите доступные типы аутентификации # (оставьте basic для служебного пользователя) opensearch_security.auth.type: [basicauth, saml] # ... -
Перезапустите сервисы OpenSearch.
sudo systemctl restart opensearch sudo systemctl restart opensearch-dashboards
-
Настройте SAML-приложение на стороне Yandex Identity Hub
Настройте эндпоинты поставщика услуг
- Войдите в сервис Yandex Identity Hub
. - На панели слева выберите
Приложения и выберите необходимое SAML-приложение. - Справа сверху нажмите
Редактировать и в открывшемся окне:- В поле SP EntityID укажите
opensearch-saml-sso. - В поле ACS URL укажите адрес
https://<your-dashboards-url>/_opendistro/_security/saml/acs. - Нажмите Сохранить.
- В поле SP EntityID укажите
Добавьте атрибут групп пользователей
Чтобы настроить механизм автоматической привязки пользователей к соответствующим ролям при входе в систему OpenSearch, добавьте атрибут группы пользователей. Для этого:
- В правом верхнем углу страницы нажмите
Добавить атрибут группы и в открывшемся окне: - В поле Имя атрибута оставьте значение
groups. - В поле Передаваемые группы выберите
Только назначенные группы. - Нажмите Добавить.
Подробнее о настройке атрибутов см. Настройте атрибуты пользователей и групп.
Добавьте пользователей
Чтобы пользователи вашей организации могли аутентифицироваться в OpenSearch Dashboards с помощью SAML‑приложения Identity Hub, необходимо явно добавить в это приложение пользователей и группы.
Примечание
Управлять пользователями и группами, добавленными в SAML-приложение, может пользователь, которому назначена роль organization-manager.samlApplications.userAdmin или выше.
-
После настройки сопоставления ролей на стороне OpenSearch создайте требуемые группы:
Интерфейс Cloud Center- Войдите в сервис Yandex Identity Hub
. - На панели слева выберите
Группы. - В правом верхнем углу страницы нажмите
Создать группу. - Задайте название группы (например,
opensearch-users). Оно должно полностью совпадать с именем группы, указанным при сопоставлении с ролью в OpenSearch. - Нажмите Создать группу.
- Добавьте пользователей в группу:
- Перейдите на вкладку Участники.
- Нажмите Добавить участника.
- В открывшемся окне выберите необходимых пользователей.
- Нажмите Сохранить.
- Войдите в сервис Yandex Identity Hub
-
Добавьте пользователей в приложение:
Интерфейс Cloud Center- Войдите в сервис Yandex Identity Hub
. - На панели слева выберите
Приложения и выберите необходимое приложение. - Перейдите на вкладку Пользователи и группы.
- Нажмите
Добавить пользователей. - В открывшемся окне выберите требуемого пользователя или группу пользователей.
- Нажмите Добавить.
- Войдите в сервис Yandex Identity Hub
Убедитесь в корректной работе приложения
Чтобы проверить корректность работы SAML‑приложения и его интеграцию с OpenSearch, выполните аутентификацию в OpenSearch Dashboards под учётной записью одного из пользователей, добавленных в приложение. Для этого:
- В браузере перейдите по адресу вашего экземпляра OpenSearch Dashboards.
- Если вы были авторизованы в OpenSearch Dashboards, выйдите из профиля.
- На странице аутентификации OpenSearch Dashboards нажмите Log in with single sign-on.
- На странице аутентификации Yandex Cloud укажите адрес электронной почты и пароль пользователя. Пользователь должен состоять в группе, добавленной в приложение.
- Убедитесь, что вы авторизовались в OpenSearch Dashboards.
- Если вы настроили сопоставление ролей, то:
- Нажмите на иконку пользователя в OpenSearch Dashboards.
- Перейдите в View roles and identities.
- Убедитесь, что в блоке Roles отображается роль
all_access, а в блоке Backend roles —opensearch-users.