В эпоху быстрого развития облачных технологий, когда инфраструктура как услуга (IaaS) и платформа как услуга (PaaS) являются неотъемлемой частью многочисленных проектов, потребность в бесшовной интеграции различных облачных сервисов неоспорима. Microsoft, крупный игрок на этом рынке, потратила много времени на создание удобного для пользователя сервиса Microsoft Entra ID. Однако, несмотря на тщательно составленные инструкции от вендоров, специалисты часто сталкиваются с проблемами при настройке интеграции с такими платформами, как Slack, Salesforce или Datadog. Документация не дает ответов на конкретные вопросы.
Команда Social Discovery Group также столкнулась с этими проблемами, и в этой статье мы предложим способы их решения и решения.
В своем портфолио, состоящем из более чем 50 платформ знакомств, Social Discovery Group использует различные технологии и облачные сервисы, чтобы гарантировать их безопасность и надежность. У нас большой опыт интеграции и настройки различных систем, в том числе одноранговых соединений между различными облаками.
Microsoft Entra ID — это облачное решение для управления идентификацией и доступом, служащее службой каталогов и аутентификации, работающей в облаке. Microsoft Entra ID предлагает услуги аутентификации и авторизации для различных служб Microsoft и сторонних производителей. В этой статье мы рассмотрим интеграцию следующих облачных систем: Slack, MongoAtlas, ElasticCloud, Salesforce и Datadog.
Из-за отсутствия точного руководства мы решили создать свое, подробно описав все возникающие на этом пути головные боли. Итак, давайте перейдем к разделу «Корпоративное приложение» в Azure.
Необходимо создать новое корпоративное приложение (это можно сделать в несколько кликов). Затем откройте приложение, которое мы только что создали, и настройте единый вход — SAML. Внесите изменения сверху вниз:
Создайте роль «Участник» (или выберите другое имя). Далее создаем тестового пользователя в Microsoft Entra ID и добавляем его в наше приложение. Затем перейдите в Центр администрирования в Slack. Выполните следующие действия: Администратор Slack — Аутентификация — Конфигурация SAML — Настройка.
Следующим шагом будет настройка SAML. Рекомендуем обратить внимание на настройку «Отображаемое имя». Далее в настройках снимите галочку «Обновлять профиль при входе», запретите менять адрес электронной почты и отображаемое имя.
Существует также возможность настроить текст на кнопке входа и запретить пользователям входить в систему любым другим способом, кроме SSO. После этого вы сможете войти в Slack, используя свою учетную запись Microsoft. Если необходимы какие-либо дополнительные поля или параметры, это можно сделать с помощью Azure AD Provision.
Чтобы добавить новый атрибут, перейдите в раздел «Атрибуты пользователя» и выберите «Добавить новое сопоставление». Выберите желаемый атрибут источника, который вы хотите отображать в Slack, и свяжите его с соответствующим атрибутом Slack.
После добавления необходимых атрибутов и сохранения настроек переходите к «Предоставлению по требованию» для проверки функциональности. При положительном результате вы получите следующее:
Далее вам нужно зайти в Slack и указать, какие атрибуты отображать в полном профиле пользователя и где их получить. Перейдите в «Профили» и выберите информацию, которая будет отображаться, и откуда она будет получена. В данном случае SCIM соответствует Azure AD.
Далее мы рекомендуем добавить необходимых пользователей из Active Directory в Slack, чтобы обеспечить плавную интеграцию. Мы также хотим обратить внимание на проблему, возникающую при удалении пользователей: если пользователь удаляется из Slack вручную (через центр администрирования Slack), ошибка будет сохраняться, указывая на то, что пользователя невозможно перенести в Slack из-за недостаточных разрешений. Это происходит потому, что Entra ID сохраняет информацию о пользователях в пределах области действия и присваивает им уникальный идентификатор. Удаление и повторное добавление пользователя в Slack воспринимается Entra ID как новый пользователь, что приводит к проблемам с разрешениями во время обновлений.
Проверьте документацию здесь .
В MongoAtlas процесс идет по аналогичному пути. Вам также потребуется создать новое корпоративное приложение; для удобства введите «MongoDB Atlas — SSO» в поле поиска. Более подробную инструкцию можно найти здесь.
Далее перейдите к настройкам единого входа, где вам нужно будет ввести следующее:
В текстовом поле «Идентификатор» введите URL-адрес по следующему шаблону: https://www.okta.com/saml2/service-provider/<Customer_Unique>
В текстовое поле «URL-адрес ответа» введите URL-адрес по шаблону:
https://auth.mongodb.com/sso/saml2/<Customer_Unique>
В текстовом поле «URL-адрес для входа» введите URL-адрес, используя шаблон: https://cloud.mongodb.com/sso/<Customer_Unique>
Рекомендуем обратить внимание на раздел «Атрибуты» и настроить его, как показано на скриншоте ниже (нужно было добавить «memberOf»).
Затем на странице «Настройка единого входа с помощью SAML» перейдите в раздел «Сертификат подписи SAML» и найдите метаданные XML для федерации. Выберите «Загрузить», чтобы загрузить сертификат и сохранить его локально (XML-файл метаданных Федерации). Он понадобится нам позже в MongoDB Atlas.
В разделе «Настройка MongoDB Atlas — SSO» скопируйте соответствующие URL-адреса. Затем перейдите в MongoDB Atlas -> Organization -> Settings -> Federated Authentication Settings .
Начните с добавления поставщика учетных данных Microsoft Entra ID в Atlas. Введите соответствующие URL-адреса, упомянутые на предыдущем шаге, с портала Microsoft (URI эмитента, URL-адрес входа, URL-адрес единого входа) , загрузите сертификат подписи поставщика удостоверений и настройте остальные параметры, как показано на снимке экрана ниже .
Нажмите «Далее» и сохраните файл метаданных локально, так как вам нужно будет загрузить его позже в Azure на странице конфигурации единого входа.
Затем добавьте, сопоставьте и проверьте домен, например, используя соответствующие записи TXT, созданные в MongoDB Atlas. После этого свяжите свой домен с поставщиком учетных данных и переходите к самой интересной части: настройке роли.
В качестве примера мы создали следующие роли, каждая из которых имеет определенные разрешения, предоставленные проектам. Затем вам необходимо сопоставить эти роли с ролями Azure. Перейдите в раздел «Роли приложения» для своего приложения, создайте и добавьте роли со значениями, точно совпадающими с именами, которые вы только что присвоили этим ролям в MongoAtlas.
После этого добавьте пользователей в приложение в приложении Microsoft Entra ID Enterprise и назначьте им соответствующие роли. Активируйте «Войти с помощью Azure SSO» в разделе «Управление федерацией» в MongoDB Atlas и проверьте правильность работы настроенных параметров.
Более подробные инструкции можно найти в документации здесь .
Перейдем к интеграции с Elastic Cloud. Основные шаги по созданию приложения в Enterprise Application Entra ID аналогичны предыдущим. Там вы можете найти информацию о том, где получить идентификатор или URL-адрес выхода из системы. Однако мы столкнулись с проблемой с атрибутами, поэтому предоставим снимок экрана нашей рабочей конфигурации.
Мы создали две роли — читателя и суперпользователя.
Здесь вы можете создать столько ролей, сколько вам нужно. Настройки ролей в Elasticsearch настраиваются в Role Mappings и выглядят следующим образом:
Теперь самое интересное. Необходимо сделать две вещи: добавить конфигурацию единого входа Azure для Kibana и Elasticsearch. Чтобы добиться этого, выполните следующие действия:
Перейдите в раздел редактирования вашего развертывания Elasticsearch Cloud, чтобы обновить конфигурацию elasticsearch.yml. Добавьте следующие строки:
“ xpack:
security:
authc:
realms:
saml:
saml-azure-ad:
order: 2
attributes.principal: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"
attributes.groups: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/role"
attributes.name: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"
attributes.mail: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
idp.metadata.path: "APP Federation metadata URL"
idp.entity_id: "Azure Entra ID Identifier"
sp.entity_id: "Kibana endpoint"
sp.acs: "Kibana endpoint/api/security/v1/saml"
sp.logout: "Kibana endpoint/logout" “
После добавления и изменения значений, выделенных красным, в соответствии с вашей конфигурацией, нажмите «Сохранить». Elastic Cloud проверит все изменения и инициирует обновление кластера. Этот процесс может занять несколько минут.
“ xpack.security.authc.providers:
saml.saml1:
order: 0
realm: saml-azure-ad
description: "Log in with Azure Entra ID"
basic.basic1:
order: 1 ”
После выполнения двух предыдущих шагов на вашей странице входа в Kibana должен появиться еще один вариант входа. Далее приступайте к добавлению пользователей в приложение Microsoft Entra ID Enterprise Application и назначению им необходимых ролей.
Дополнительную информацию можно найти в документации здесь.
Интеграция с Salesforce оказалась немного сложнее предыдущих. Начальные шаги аналогичны, но внимание следует уделить разделу «Предоставление». Есть нюансы относительно указания учетных данных администратора, под которым будет происходить синхронизация учетных записей, и необходимо включение Attribute Mapping.
Вот пример настроек нашей конфигурации на скриншоте. Мы не столкнулись с какими-либо серьезными проблемами с атрибутами, но мы также предоставим скриншот тех, которые мы использовали.
В самом Salesforce особых нюансов не было, и мы приступили к следующим шагам, изложенным в этом руководстве .
Во время интеграции с Datadog мы также столкнулись с некоторыми проблемами. Первичную документацию, которой мы руководствовались, можно найти здесь . По устранению нюансов мы обращались к этому руководству.
Все началось гладко, и поначалу казалось, что никаких проблем не будет. Как обычно, мы создали новое корпоративное приложение в Microsoft Entra ID.
В разделе «Настройка единого входа с помощью SAML» обратите внимание на местоположение, которое вы выбрали для своей учетной записи Datadog. В нашем случае это был регион Европы.
Как упоминалось ранее, для MongoAtlasDB мы добавляем дополнительный атрибутmemberOf для сопоставления ролей.
Сохраните все настройки и загрузите XML-файл метаданных федерации. Загрузите этот файл в настройки SAML в Datadog. Вот удобная ссылка для ознакомления. Настройки Datadog SAML (замените «EU» на соответствующую доменную зону, если ваше местоположение отличается). Это должно выглядеть как на скриншоте ниже.
В настройках способов входа организации оставьте только то, что необходимо (в моем случае я отключил вход по паролю и Google Authenticate). Добавьте роли в Azure при регистрации приложения для Microsoft Entra ID.
Здесь начинается самое интересное. Перейдите в раздел «Сопоставления групп SAML» -> «Сопоставления ролей» в Datadog и добавьте ключ, значение и роль. Это кажется простым. Смотрите скриншот ниже.
Но это не работает и продолжает выдавать ошибку «Для этого пользователя нет AuthNMappings».
Долгое время мы пытались понять, что мы делаем не так, просматривая всю документацию, логи и страницы устранения неполадок. К сожалению, об этом нигде не упоминалось. В конце концов, решение простое: следуйте конфигурации, показанной на скриншоте ниже.
В поле KEY введите строку: http://schemas.microsoft.com/ws/2008/06/identity/claims/role.
После этого все стало успешно работать.
«Это лишь малая часть систем, которые мы интегрировали с Microsoft Entra ID. Мы надеемся, что представленные здесь идеи послужат полезным ресурсом, упрощающим ваши процессы интеграции и экономящим драгоценное время. В заключение отметим следующие преимущества использования Microsoft В Entra ID можно выделить: Единый вход, не требующий многократного ввода пароля, отсутствие необходимости в дополнительных компонентах, простоту настройки и администрирования, групповые политики и группы, регистрацию устройств, высокий уровень безопасности.