Что такое язык разметки деклараций безопасности (SAML)?
- Глоссарий IAM
- Что такое язык разметки деклараций безопасности (SAML)?
SAML (Security Assertion Markup Language) — открытый стандарт на основе XML. Он позволяет поставщику удостоверений (IdP) безопасно передавать поставщику услуг (SP) данные для аутентификации и авторизации пользователя. SAML входит в число основных технологий, благодаря которым пользователю достаточно авторизоваться один раз. После этого он может работать с различными приложениями без повторного ввода учетных данных.
Для чего используется SAML?
SAML обычно используется там, где пользователям нужен безопасный и удобный доступ к нескольким приложениям. Наиболее распространенные сценарии использования:
- Единый вход (SSO): один вход в систему предоставляет доступ к нескольким приложениям, поэтому пользователю не приходится повторно вводить учетные данные для каждого сервиса.
- Федеративная идентификация: SAML позволяет организации доверять удостоверениям, выданным партнерской или материнской компанией. Благодаря этому пользователи из доверенного домена могут получать доступ без создания отдельных учетных записей.
- Управление корпоративным доступом: ИТ-отделы централизованно управляют доступом к приложениям. Все запросы на вход проходят через единого поставщика удостоверений (IdP), что позволяет применять согласованные политики безопасности, такие как многофакторная аутентификация (MFA), сразу во всех системах.
В каждом из сценариев IdP создает подписанное XML-утверждение, которое через браузер пользователя передается поставщику услуг. Так данные аутентификации безопасно передаются между системами, а пользователю не приходится входить повторно.
Ключевые компоненты SAML
В обмене данными по протоколу SAML участвует несколько компонентов. Следующие базовые термины помогут лучше понять процесс аутентификации.
- Субъект — пользователь, который проходит аутентификацию. Обычно это человек, пытающийся открыть конкретное приложение.
- Поставщик удостоверений (IdP) — система, которая проверяет пользователя и выдает декларацию для входа. Примерами служат Microsoft Entra ID или Okta.
- Поставщик услуг (SP) — приложение или сайт, к которому обращается пользователь. SP не управляет учетными данными сам, а доверяет проверку личности поставщику удостоверений.
- Декларация SAML — подписанное XML-сообщение. IdP отправляет его поставщику услуг, чтобы передать информацию о пользователе и его правах доступа (подробнее об этом ниже).
- Метаданные — параметры конфигурации, которыми обмениваются стороны. Они включают конечные точки, сертификаты и другие параметры, помогающие IdP и SP установить доверие и настроить связь.
- Сертификат подписи — цифровой сертификат с открытым ключом. С его помощью поставщик услуг проверяет подпись декларации. Это гарантирует, что данные не изменили при передаче, и подтверждает доверие между SP и IdP.
Как работает аутентификация SAML?
При аутентификации SAML поставщик удостоверений (IdP) передает поставщику услуг (SP) подписанное утверждение, подтверждающее личность пользователя. Чаще всего используется сценарий, инициированный поставщиком услуг. Он начинается, когда пользователь открывает сайт или приложение, которым хочет воспользоваться. Если приложение использует для входа внешний IdP, браузер пользователя перенаправляется к нему вместе с запросом на SAML-аутентификацию. Затем IdP проверяет учетные данные пользователя и выполняет аутентификацию. Если у пользователя уже есть активный сеанс, этот этап пропускается. После успешной проверки IdP создает подписанное утверждение и через браузер передает его обратно поставщику услуг. Наконец, SP проверяет подпись утверждения, убеждается в его подлинности и предоставляет пользователю доступ без отдельного входа. Хотя чаще всего SAML-аутентификацию инициирует поставщик услуг, существует и сценарий, инициированный IdP. В этом случае пользователь начинает вход у поставщика удостоверений, например нажав плитку приложения на корпоративной панели.
Что такое утверждение SAML?
Утверждение SAML — подписанный XML-документ, который поставщик удостоверений (IdP) отправляет поставщику услуг (SP), чтобы подтвердить сведения о пользователе. Каждое утверждение может содержать один или несколько типов сведений. Именно на них SP опирается, когда решает, предоставлять ли пользователю доступ. Существует три типа утверждений.
- Утверждения об аутентификации подтверждают личность пользователя, время входа и способ авторизации (например, использование MFA).
- Утверждения об атрибутах передают дополнительные сведения, такие как должность или отдел пользователя. С помощью этих атрибутов SP определяет, что человек может видеть и делать в системе.
- Утверждения о решении по авторизации указывают, разрешен ли доступ к конкретному ресурсу. Этот тип утверждений используется редко, поскольку более сложные задачи авторизации обычно решаются с помощью расширяемого языка разметки контроля доступа (XACML).
SAML и другие стандарты аутентификации
SAML часто упоминают вместе с другими протоколами управления идентификацией и доступом, однако они решают разные задачи. Главная цель SAML — аутентификация. Протокол проверяет личность пользователя и решает, пускать ли его на сайт или в приложение. Именно фокус на аутентификации отличает его от OAuth — протокола авторизации, который выдает приложениям права на доступ к конкретным ресурсам. SAML и OAuth не конкурируют, а дополняют друг друга. SAML подтверждает личность, а OAuth предоставляет доступ.
Протокол OpenID Connect (OIDC) больше похож на SAML, так как оба стандарта аутентифицируют пользователей и поддерживают технологию единого входа (SSO). При этом OIDC работает поверх OAuth и использует веб-токены JSON (JWT), что делает его удобным для современных веб- и мобильных приложений. SAML, в свою очередь, опирается на XML. Этот подход по-прежнему широко востребован в корпоративных системах SSO, хотя для новых приложений все чаще по умолчанию выбирают OIDC. Для сравнения, облегченный протокол доступа к каталогам (LDAP) — это более старый протокол каталогов, созданный для локальной инфраструктуры еще до эпохи облачных технологий. LDAP не заменяет SAML, а часто работает в связке с ним. Поставщик удостоверений (IdP) SAML использует LDAP как базу учетных данных пользователей.
| SAML | OAuth | OIDC | LDAP | |
|---|---|---|---|---|
| Что делает | Аутентификация и SSO | Авторизация | Аутентификация (через OAuth) | Доступ к каталогам |
| Формат | Подписанное XML-утверждение | Токен доступа | JWT | Запросы к каталогам |
| Лучше всего подходит для | Единого входа в корпоративные веб-приложения | Делегированного доступа к API | Мобильных и облачных приложений | Локальных каталогов |
SAML
OAuth
OIDC
LDAP
Преимущества и недостатки SAML
SAML дает множество преимуществ, но перед внедрением важно учесть и его ограничения.
Преимущества SAML
Пользователям больше не нужно управлять десятками паролей. Единый вход сокращает поверхность атаки и снижает риск кражи учетных данных. Вся аутентификация проходит через единого поставщика удостоверений (IdP). Это дает организациям централизованный контроль. Команды безопасности могут настроить многофакторную аутентификацию (MFA) в одном месте и применить ее сразу ко всем подключенным приложениям. Централизованный подход разгружает службу поддержки. Пользователи реже теряют данные для входа, поэтому количество запросов на сброс паролей резко падает.
Недостатки SAML
Протокол надежен только при безошибочной настройке. Чтобы защитить сообщения и данные при передаче, SAML опирается на стандарты XML Signature, XML Encryption и TLS. Ошибки конфигурации, например неверная проверка подписей, создают серьезные уязвимости. Структура на основе XML уступает в гибкости современным форматам токенов. Из-за этого SAML сложнее внедрять в мобильные и одностраничные приложения.