Предприятия, использующие различные бизнес-приложения, должны поддерживать конфиденциальность данных и предоставлять права доступа в соответствии с ролями пользователей во всей инфраструктуре. Сделать это достаточно сложно. SAML (Security Assertion Markup Language) значительно помогает в этом плане.
Давайте посмотрим, что же это такое и как оно работает, в чем его преимущества, чем оно отличается от SSO, а в чем оно похоже, и как оно помогает в проверке доступа к API для обеспечения максимального уровня безопасности.
Что такое SAML?
Основная работа SAML заключается в том, чтобы позволить IdP (поставщикам удостоверений - identity details providers) делиться учетными данными, связанными с аутентификацией, с соответствующими органами. Это открытый стандарт, который позволяет предоставить унифицированный доступ для всех видов приложений без ущерба для безопасности данных.
Вот еще несколько фактов, которые вы должны знать о SAML:
- Он использует XML для завершения стандартного соединения между IdP и поставщиками услуг для обеспечения надежной связи.
- Процесс аутентификации SAML подтверждает личность конечного пользователя, а авторизация SAML определяет, какие ресурсы должны быть доступны для пользователя.
- Он проверяет SP (поставщиков услуг), IdP (поставщиков удостоверений) и конечных пользователей, если пользователь имеет право на требуемое действие.
- Это стандарт OASIS.
- Обеспечивает безопасный обмен данными.
- Он поддерживает активацию SSO. Однако данная процедура требует подключения к внешнему поставщику удостоверений и совместного с ним использования XML-токенов.
Кратко о SSO (Single Sign-on – система однократного входа)
SSO считается одним из самых эффективных механизмов аутентификации и объединяет несколько экранов входа. Это значит, что вам не нужно самостоятельно входить в систему в своих приложениях. Вместо этого для приложений SaaS (Software as a Service) будет работать всего один набор данных для входа для всех ваших учетных записей.
Это обеспечивает более быстрый доступ к приложению, делает его более простым и подконтрольным. Это является ключевым аспектом IAM-стратегий компаний, стремящихся к беспрепятственной проверке доступа к приложениям и наилучшей реализации безопасности.
Включение SSO дает следующие возможности:
- Надежные пароли, так как нет необходимости создавать несколько схожих паролей. Достаточно иметь один сложный и надежный пароль.
- Пользователям не нужно запоминать различные пароли.
- Простое использование MFA (Многофакторная аутентификация), которое проверяет несколько факторов, так как его активация в одной точке обеспечивает защиту различных приложений.
- Политика быстрого повторного ввода пароля, поскольку у администраторов есть единственная точка применения политики.
- Удобное внутренне управление учетными данными, поскольку SSO хранит пароли пользователей внутри и предоставляет IT-специалистам гораздо больший контроль над базой данных.
- Мгновенное восстановление пароля пользователя, поскольку IT-команда должна работать над восстановлением одного пароля.
Аутентификация SAML – пошагово
Давайте рассмотрим всю процедуру в нескольких шагах.
- Прежде всего, служба идентификации передает входные данные, связанные со входом пользователя в систему, поставщику услуг. Для бесперебойной передачи параметров SAML поставщикам услуг каждый конечный пользователь обязан один раз войти в систему через SSO.
- Затем, SP связывается с IdP для подтверждения достоверности запроса. Этот процесс также требует предоставления согласия на настройку системы однократного входа SAML. Это гарантирует то, что для проверки личности и авторизации пользователя/запроса используются одни и те же параметры SAML.
Преимущества SAML
- Данный подход имеет стандартный формат, поэтому он предоставляет предприятиям открытый подход, не зависящий от совместимости платформ и реализаций поставщиков.
- Он использует слабосвязанные каталоги, что означает, что нет необходимости хранить и синхронизировать пользовательские данные с локальными каталогами.
- Так как он поддерживает SSO, то конечные пользователи получат доступ к приложениям.
- SAML позволяет предприятиям повторно использовать интеграции для регистрации/входа, сохраняя при этом тот же уровень безопасности. Это значительно сокращает расходы на управление аккаунтом.
- Обязанность обслуживания удостоверений пользователей переносится на IdP, когда работает SAML. Это освобождает поставщиков услуг от лишних проблем, связанных с регистрацией и входом в систему.
Что такое SAML Assertion?
Выражаясь простым языком, это документ в формате XML, который содержит в себе информацию о статусе авторизации пользователя. Эта информация предоставляется IdP поставщику услуг.
Есть утверждения трех типов:
- Authentication – это проверка личности пользователя, связанных с ней методов и сведения об отслеживании продолжительности сеанса.
- Assigned обеспечивает успешную передачу SAML-токенов поставщику услуг. IdP и SP используют одни и те же атрибуты для подтверждения личности создателя запроса.
- И последнее, утверждение типа Authorization-decision объясняет, где пользователю предоставляется доступ в соответствии с его запросом. Если будет отказано в доступе, то также будет предоставлена подробно описанная причина этого отказа.
Пример SAML
Ниже приведен самый простой пример того, как SAML обрабатывает свои операции:
Пусть конечный пользователь по имени Джон пытается получить доступ к бизнес-приложению в служебных целях.
- Джон начинает сеанс с SSO и завершает часть процедуры проверки личности.
- Zoho CRM запрашивает у IdP информацию о пользователе для подтверждения.
- Программное средство SaaS получает доступ к результатам для завершения этапа проверки полномочий.
- IdP отвечает по этому запросу в формате SAML. На нем будут цифровые подписи Джона. На основании сходства между идентифицированными данными, которые предоставил Джон и IdP, в ответном сообщении могут содержаться и другие сведения.
- Программное средство SaaS получает ответ и предоставляет доступ или отказывает в доступе в соответствии с инструкциями IdP.
- Если доступ был разрешен, то Джон может использовать свою учетную запись Zoho.
SAML vs SSO
SAML помогает в проверке личности пользователя и делает возможным использование системы однократного входа (SSO). SSO может существовать отдельно и позволяет конечным пользователям использовать различные приложения с унифицированными данными для входа. SSO может задействовать стандартные протоколы SAML при обмене информацией, поскольку у него нет собственным специальных протоколов. Помимо этого, он может использовать сторонние протоколы, такие как <и>OpenIDи>, для эффективной междоменной проверки личности пользователя. SAML имеет же широкий спектр собственных протоколов.
SAML vs oAuth2
Из-за сходства основного назначения SAML 2.0 и oAuth 2.0 часто принимают за одно и то же программное средство. Хотя они и имеют некоторое сходство, но они также имеют и различия в некоторых аспектах.
Сходства
- И то, и другое необходимо для обеспечения безопасного взаимодействия приложений.
- Оба поддерживают простое управление доступом и быструю интеграцию.
Различия
- oAuth 2.0 больше уделяет внимание на авторизацию, тогда как SAML отдает приоритет аутентификации.
- SAML основан на XML, а oAuth 2.0 – на JSON.
- SAML поддерживает данные сеанса с помощью файлов cookie, в то время как oAuth использует вызовы API.
Аутентификация API с помощью SAML
Несмотря на то, что одним из самых распространенных вариантов применения SAML является поддержка проверка личности пользователя и включение SSO, он также может оказаться полезным для проверки подлинности запроса в API. Проверка прав доступа пользователя для проверки подлинности запроса является ключевой с точки зрения безопасности API и может быть проведена путем отправки SAML-запроса, который в свою очередь должен предусматривать следующее:
- SAML подготавливает запрос аутентификации API на основе API-интерфейса.
- Запрос должен содержать SAML-сообщение, которое может поддерживать процесс SSO, автоматически инициируемый IdP.
Очень важно, чтобы сообщение SAML-запроса основывалось на закодированном XML-документе с корневым элементом <Response>
.
Тело запроса должно содержать текстовое наполнение, идентификаторы и область. Первые два аспекта являются обязательными, третий – нет.
Ответ SAML включает в себя access_token
(маркер SAML, предоставляющий или запрещающий доступ), username
(имя пользователя), expires_in
, refresh_token
и realm
(область).
Заключение
SAML и SSO тесно связаны друг с другом. Это критически важно для обеспечения безопасности данных без каких-либо компромиссов. Надеюсь, эта статья поможет вам разобраться в теме и больше узнать об этих двух программных средствах.