Настройка SAML-аутентификации
Важно
Сервис Yandex Managed Service for Elasticsearch недоступен с 11 апреля 2024 года.
Вы можете создать кластер OpenSearch в Yandex Cloud в качестве альтернативы Elasticsearch.
SAML (Security Assertion Markup Language) — это язык разметки для обмена данными аутентификации и авторизации между сторонами. SAML позволяет реализовать систему единого входа (Single Sign-On, SSO), с помощью которой можно переключаться между приложениями без повторной аутентификации.
При работе с SAML и SSO кластер Managed Service for Elasticsearch получает сведения от провайдера идентификации (Identity Provider, IdP).
Подробнее о SAML и SSO см. в документации OASIS
Managed Service for Elasticsearch поддерживает всех SAML 2.0-совместимых провайдеров идентификации.
Важно
Использование SSO поддерживается для кластеров Managed Service for Elasticsearch редакции Platinum с включенным публичным доступом для всех хостов с ролью Data node. При понижении редакции Elasticsearch функция SSO будет отключена.
Чтобы настроить SAML-аутентификацию:
- Настройте провайдер идентификации.
- Настройте кластер Managed Service for Elasticsearch на использование этого провайдера для SSO.
- Настройте роли кластера для пользователей SSO на стороне провайдера.
Настройте провайдер идентификации
-
Создайте приложение на стороне провайдера.
-
Укажите Assertion Consumer Service (ACS) URL.
Используйте URL со специальным FQDN кластера:
https://c-<идентификатор_кластера_Elasticsearch>.rw.mdb.yandexcloud.net/api/security/saml/callback
Идентификатор кластера можно запросить со списком кластеров в каталоге.
Пример:
https://c-e4ut2....rw.mdb.yandexcloud.net/api/security/saml/callback
-
Укажите SP Entity ID (Audience URI).
Используйте URL со специальным FQDN кластера:
https://c-<идентификатор_кластера>rw.mdb.yandexcloud.net
Пример:
https://c-e4ut2....rw.mdb.yandexcloud.net
-
Укажите Name ID Format —
persistent
. -
Из предоставленных провайдером данных:
- Скопируйте информацию об эмитенте провайдера идентификации (Identity Provider Issuer).
- Сохраните файл с метаданными провайдера в формате XML.
Эти данные потребуются при настройке SSO для кластера.
Настройте SSO для кластера
Важно
Некорректные настройки могут привести к неработоспособности кластера.
-
В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for Elasticsearch. -
Нажмите на имя нужного кластера и выберите вкладку Контроль доступа.
-
Нажмите кнопку Создать.
-
Создайте провайдер аутентификации:
-
Тип провайдера —
Saml
. -
Имя — имя провайдера.
-
Описание — описание провайдера.
-
Подсказка — подсказка для входа.
-
Иконка — иконка провайдера.
-
Выберите опцию Активирован.
-
Настройки SAML:
-
idp_entity_id — информация об эмитенте провайдера идентификации (Identity Provider Issuer), которая получена при настройке провайдера идентификации.
-
idp_metadata_file — файл с метаданными провайдера в формате XML, который получен при настройке провайдера идентификации.
-
sp_entity_id — URI-идентификатор приложения SP Entity ID (Audience URI). Должен соответствовать указанному при настройке провайдера идентификации.
-
kibana_url — URL со специальным FQDN кластера. Значение совпадает с sp_entity_id.
-
attribute_principal — формат параметра
nameid
, например,nameid:persistent
. Значение совпадает с Name ID Format провайдера идентификации. -
attribute_groups — группы привилегий пользователя (рекомендуется).
-
attribute_name — имя пользователя (опционально).
-
attribute_email — адрес электронной почты пользователя (опционально).
-
attribute_dn — идентификатор пользователя
X.500 Distinguished Name
(опционально).
-
-
-
Нажмите кнопку Создать.
-
Сконвертируйте файл с метаданными, полученный от эмитента провайдера идентификации, в формат Base64.
-
Чтобы задать настройки провайдера идентификации на стороне кластера, воспользуйтесь методом REST API addProviders для ресурса Auth или вызовом gRPC API AuthService/AddProviders и передайте в запросе:
-
Идентификатор кластера в параметре
clusterId
.Идентификатор кластера можно получить со списком кластеров в каталоге.
-
Значение
SAML
в параметреtype
. -
Имя провайдера в параметре
name
. -
Значение
true
в параметреenabled
. -
Описание провайдера в параметре
description
. -
Идентификатор эмитента провайдера аутентификации (Identity Provider Issuer), который был получен при настройке провайдера идентификации, в параметре
idpEntityId
. -
Путь к файлу с метаданными в формате Base64 в параметре
idpMetadataFile
. -
URI приложения SP Entity ID (Audience URI) в параметре
spEntityId
. URI должен соответствовать указанному при настройке провайдера идентификации. -
URL со специальным FQDN кластера в параметре
kibanaUrl
. Значение совпадает сspEntityId
. -
Формат параметра
nameid
, например,nameid:persistent
в параметреattributePrincipal
. Значение совпадает с Name ID Format провайдера идентификации.
-
Примечание
Подробнее о SAML-атрибутах см. в документации Elasticsearch
Настройте роли для SSO
Чтобы получить доступ к кластеру через SSO, свяжите роли кластера с пользователями SSO на стороне провайдера. Для этого:
- Сопоставьте роли
пользователей Elasticsearch на стороне провайдера идентификации с ролями в кластере. Выполните эту операцию от имени пользователяadmin
одним из способов:- С помощью Kibana
. - С помощью Security API Elasticsearch
.
- С помощью Kibana
- На стороне провайдера идентификации создайте пользователя, который удовлетворяет указанным сопоставлениям ролей в Elasticsearch.
- Разрешите этому пользователю доступ к созданному ранее приложению.
Чтобы авторизоваться в кластере Elasticsearch под новым пользователем, перейдите на страницу Kibana.
Примеры
Подключение SAML SSO с Okta
Чтобы настроить SSO Okta для кластера с идентификатором c9qmc1lmo2k0********
:
- Настройте провайдера идентификации Okta.
- Настройте SSO для кластера Managed Service for Elasticsearch.
- Настройте роли для SSO с Okta.
Настройте провайдера идентификации Okta
- Создайте новое приложение:
- Выберите вкладку Applications.
- Нажмите кнопку Create App Integration.
- Выберите опцию SAML 2.0.
- Нажмите кнопку Next.
- В разделе General Settings укажите имя приложения в параметре App name и нажмите кнопку Next.
- В разделе SAML Settings:
-
Укажите Single sign on URL:
https://c-c9qmc1lmo2k0********.rw.mdb.yandexcloud.net/api/security/saml/callback
-
Включите опцию Use this for Recipient URL and Destination URL.
-
Укажите Audience URI (SP Entity ID):
https://c-c9qmc1lmo2k0********.rw.mdb.yandexcloud.net
-
Укажите Name ID Format —
Persistent
. -
Нажмите кнопку Next.
-
- В разделе Feedback:
- Выберите I'm an Okta customer adding an internal app и This is an internal app that we have created.
- Нажмите кнопку Finish.
- На вкладке Sign On нажмите View Setup Instructions:
-
Скопируйте Identity Provider Issuer:
http://www.okta.com/exkv2pzpvigX********
-
Содержимое поля Provide the following IDP metadata to your SP provider скопируйте и сохраните, например, под именем
okta.xml
.
-
Подробнее об остальных параметрах, см. в документации Okta
Настройте SSO для кластера
Пусть после настройки провайдера был предоставлен idp_entity_id: http://www.okta.com/exkv2pzpvigX********
.
Настройте SSO для кластера. При настройке укажите:
- idp_entity_id:
http://www.okta.com/exkv2pzpvigX********
. - idp_metadata_file: файл метаданных, предоставленный Okta.
- sp_entity_id:
https://c-c9qmc1lmo2k0********.rw.mdb.yandexcloud.net
. - kibana_url:
https://c-c9qmc1lmo2k0********.rw.mdb.yandexcloud.net
. - attribute_principal:
nameid:persistent
.
Настройте роли для SSO с Okta
Чтобы получить доступ к кластеру через SSO, свяжите роли кластера с пользователями SSO на стороне провайдера. Для этого:
- Настройте роли для кластера Managed Service for Elasticsearch:
-
В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for Elasticsearch. -
Нажмите на имя нужного кластера и выберите вкладку Kibana.
-
В окне авторизации укажите пользователя
admin
и пароль, заданный при настройке кластера. -
Перейдите в раздел Management → Stack Management → Security → Role Mappings.
Примечание
Функция Role Mappings доступна в редакции Elasticsearch
Platinum
. -
Нажмите кнопку Create role mapping.
-
Чтобы создать сопоставление ролей, заполните поля:
- Mapping name — уникальное имя для сопоставления роли.
- Roles — выбранная роль.
- Mapping rules — правила, по которым будет осуществляться сопоставление.
Например, чтобы задать правило, которое сопоставит пользователей с доменом
example.com
с рольюeditor
:- Выберите роль
editor
. - Добавьте правило All are true.
- Добавьте в правило поле
username
типаtext
со значением*@example.com
.
- Создайте пользователя на стороне Okta:
-
Перейдите в раздел Directory → People
-
Нажмите кнопку Add person.
-
Укажите параметры пользователя:
First name
,Last name
,username
,password
.Они должны удовлетворять указанным правилам сопоставления ролей в Managed Service for Elasticsearch.
-
Нажмите кнопку Save.
-
- Перейдите в раздел Applications.
- Нажмите кнопку Assign User to App.
- Назначьте приложение
нужному пользователю. - Нажмите кнопку Next.
- При необходимости скорректируйте указанный
username
. Так будет отображаться имя пользователя в Kibana. - Нажмите кнопку Confirm Assignments.
Чтобы авторизоваться в кластере Managed Service for Elasticsearch под новым пользователем:
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for Elasticsearch. - Нажмите на имя нужного кластера и выберите вкладку Kibana.
- В окне авторизации выберите вариант, который был указан при настройке SSO в пункте Описание провайдера.
- Укажите Имя пользователя и Пароль.