Для большинства корпоративных систем разумный выбор такой: единый вход через OpenID Connect для новых приложений, SAML для готовых продуктов, где он есть, шлюз перед системами без внешнего входа, а второй фактор в виде одноразовых кодов в приложении для всех сотрудников и аппаратных ключей для администраторов. Пароль при этом остаётся только у каталога пользователей. Но выбор зависит от того, что умеют ваши системы, а не от моды.

Выбирать нужно не один продукт, а четыре решения: где живут пользователи, как система подключается к входу, чем подтверждается личность и что происходит, когда вход недоступен. Услуга описана на странице «SSO и MFA для корпоративных систем», здесь только логика выбора.

Коротко. Начните со списка систем и того, как каждая умеет входить. Пользователей держите в одном месте, второй фактор включайте сначала для администраторов и доступа извне, а перед запуском проверьте, как отзывается доступ и что будет, если сервер входа остановится.

Четыре решения, из которых состоит выбор

Спор «Keycloak или что-то другое» обычно идёт не про то. Продукт выбирается последним, когда ясны четыре вещи:

РешениеВопросОт чего зависит ответ
Источник пользователейГде хранится список сотрудников и их группЕсть ли каталог, кто ведёт его, сколько систем читают из него
Способ подключенияКак конкретная система проверяет, кто вошёлЧто умеет система: OpenID Connect, SAML, LDAP или только свой пароль
Второй факторЧем подтверждается личность помимо пароляКто входит, откуда, с чем работает, есть ли корпоративные телефоны
Поведение при сбоеЧто работает, если сервер входа недоступенТребования к доступности и наличие запасного пути

Пока эти ответы не записаны, любое сравнение продуктов превращается в сравнение интерфейсов. Именно поэтому работа начинается с обследования списка систем, а не с установки сервера.

Протокол подключения: OpenID Connect, SAML, LDAP или шлюз

Протокол определяется не вашим вкусом, а тем, что поддерживает система. Для одной компании обычно нужны два-три способа сразу.

СпособКогда выбиратьПлюсыМинусы
OpenID ConnectНовые веб-приложения, кабинеты, внутренние сервисы, APIСовременный, удобен для веб-приложений и мобильных клиентов, прост в настройке у разработчикаСтарые системы его не поддерживают
SAMLГотовые корпоративные продукты, в которых он естьШироко поддерживается в коробочных системахГромоздкий формат; подпись держится на сертификате, срок которого легко пропустить
LDAP и KerberosСистемы на доменных учётных записях, старые приложенияРаботает почти везде, где есть вход по паролюПриложение видит пароль; второй фактор встраивается плохо
Шлюз перед системойСамописные утилиты и системы без внешнего входаСистему не нужно менятьСервис должен быть недоступен напрямую; нужна проверка, что обход закрыт

Практическое правило: если система умеет OpenID Connect, берите его; если нет, но умеет SAML, берите SAML; если умеет только LDAP, подключайте через LDAP, но второй фактор тогда реализуйте на шлюзе перед ней или в самом каталоге. Шлюз остаётся запасным вариантом для того, что ничего не умеет. Для старой 1С и самописных утилит нужно отдельное решение, и его выбирают после разбора конкретной системы.

Где хранить пользователей: каталог или сервер входа

Единый вход не заменяет каталог пользователей, он стоит над ним. Вариантов обычно три:

  • Каталог уже есть и в порядке. Оставляем его источником истины, а сервер входа читает записи и группы из него. Это самый дешёвый путь.
  • Каталога нет или он устарел. Разворачиваем новый: FreeIPA, ALD Pro или другой каталог на отечественной ОС. Это отдельная работа, описанная на странице замены Active Directory.
  • Пользователи живут в кадровой системе и в нескольких базах. Нужно решить, какая из них главная, и автоматизировать приём, перевод и увольнение. Без этого единый вход только перенесёт беспорядок.

Сервер входа (Keycloak и аналоги) нужен, когда системы умеют OpenID Connect или SAML, а каталог — только LDAP и Kerberos. Он переводит одно в другое, хранит сессии и подключает второй фактор. Если системы немногочисленны и все читают LDAP, отдельный сервер входа может оказаться лишним: проверьте, что без него вы получите единый вход и второй фактор, а не только общий каталог.

Второй фактор: какой способ подойдёт какой группе

Универсального способа нет: у сотрудников, администраторов и внешних клиентов разные риски и разные возможности. Ниже сравнение по тому, что выбирают на практике.

СпособПодходитРиски и ограниченияЧто нужно решить
Одноразовые коды в приложенииСотрудники, подрядчикиПотеря телефона; поддельная страница входа может выманить кодПроцедура восстановления при смене телефона
Подтверждение в приложенииСотрудники с корпоративными телефонамиУсталость от запросов, подтверждение «на автомате»Сопоставление числа на экране, ограничение числа запросов
Аппаратный ключАдминистраторы, финансы, доступ к персональным даннымНужны выдача, учёт и запасной ключКто выдаёт, что делать при потере
Код по SMSВнешние клиенты, где ничего устанавливать нельзяПерехват и перевыпуск номера, зависимость от оператораДля кого допустим, а для кого нет
Сертификат на рабочем местеДоверенные рабочие станции в контуреПривязка к устройству, а не к человекуКак отзывается при потере устройства

Типичная схема для компании: одноразовые коды или подтверждение в приложении для всех, аппаратный ключ для администраторов и ролей с деньгами, SMS только для внешних пользователей, которым ничего иного не предложить. Для каждого способа заранее нужна процедура восстановления: самая слабая точка второго фактора не сам фактор, а то, как человек возвращает доступ после потери телефона.

Что делать с системами, которые единый вход не умеют

В каждой компании находится несколько таких систем: старая 1С, самописная утилита подрядчика, оборудование с веб-панелью. Выбор по каждой делается отдельно.

  1. Шлюз перед системой. Подходит, если систему можно закрыть от прямых обращений. Проверьте, что прямой адрес действительно не отвечает.
  2. Подключение к каталогу по LDAP. Подходит, если система сама проверяет пароль в каталоге. Второй фактор для неё придётся делать другим путём.
  3. Доработка системы. Подходит, если исходники ваши, а система важна. Это отдельный проект.
  4. Оставить локальный вход под присмотром. Допустимо для малозначимых систем, если записи в списке, у каждой есть владелец, а пароли лежат в хранилище.
  5. Заменить систему. Если она ещё и плохо защищена, а менять её вы собирались, единый вход может стать одним из доводов.

Самое важное: каждая оставленная на локальных паролях система вносится в перечень с владельцем и сроком пересмотра. Иначе при увольнении вы отключите человека в каталоге, а он продолжит работать там, где каталога не видят.

Права после входа: SSO не решает, что можно

Единый вход отвечает на вопрос «кто это». Что человеку можно делать, решают роли, и это отдельная работа.

  • Роли из каталога. Группа в каталоге превращается в роль в системе. Тогда перевод сотрудника меняет права везде сразу.
  • Исключения запрещены без записи. Права вне ролей выдаются только с владельцем и сроком.
  • Роли проверяет сервер. Если система прячет кнопки в интерфейсе, а адрес остаётся доступен, защиты нет. Об этом же говорит и первая категория в статье «OWASP Top 10 простыми словами».
  • Роли и атрибуты. Если доступ зависит от региона, договора или склада, одних ролей мало, и часть правил проверяет приложение по атрибутам объекта.

Для внешних пользователей (клиентов, дилеров) права считаются по организации и договору, а не по должности: см. личный кабинет для партнёров.

Что будет, когда вход перестанет работать

Единый вход упрощает жизнь, пока он работает. Когда он падает, останавливаются все системы сразу, поэтому сбой нужно продумать заранее.

СценарийЧто происходитКак защищаемся
Остановился сервер входаНовые входы невозможны, действующие сессии живут до конца срокаПара серверов, копия настроек, проверенное восстановление
Истёк сертификат подписиВход встаёт у всех систем, подключённых по SAMLКалендарь сертификатов, оповещение за несколько недель до конца срока
Недоступен каталогСервер входа не может проверить парольРеплика каталога, ограниченный запасной путь для администраторов
Потерян телефон или ключЧеловек не может подтвердить входКоды восстановления, запасной ключ, процедура выдачи с проверкой личности
Нужно срочно отключить человекаСессии в системах живут до своего срокаКороткие сессии для критичных систем, отзыв токенов, проверка на тестовой записи

Для администраторов нужен аварийный путь, записанный в регламент: учётная запись с длинным паролем в сейфе или аппаратный ключ. Его использование пишется в журнал и разбирается. Если ваши договоры обещают доступность 24/7, это обещание лежит на вашей схеме резервирования и дежурстве, а не на единовременной настройке; наши пакеты сопровождения круглосуточное дежурство не включают.

Ошибки внедрения, которые повторяются

  • Сначала продукт, потом список систем. Через месяц выясняется, что половина приложений его протоколы не поддерживает.
  • Включили второй фактор всем сразу. Поддержка тонет в обращениях, процедура восстановления не готова. Начинайте с администраторов и доступа извне.
  • Каталог не почищен. Дубли и общие учётные записи переезжают в новую схему вместе с правами.
  • Нет теста отзыва доступа. Мало кто отключает тестового сотрудника до запуска и измеряет, сколько он ещё работает в каждой системе, а именно это показывает реальную скорость отзыва.
  • Сертификаты и ключи без владельца. Срок истекает, и вход останавливается в рабочее утро.
  • Сервер входа в единственном экземпляре. Одна авария гасит все системы.

Что проверять после внедрения, собрано в услуге аудита управления доступом: сверка учётных записей, прав, обходов входа и времени отзыва.

Что делаем мы и с чего начать

Начинаем с обследования: 200 000 ₽ и 2–3 недели за одну-две системы, 350 000 ₽ и 3–4 недели, если нужно подключить несколько систем и каталогов. На выходе список систем со способами подключения, схема единого входа, матрица ролей и вилка бюджета. Сумма вычитается из первого этапа, если продолжаете с нами, а документом можно пользоваться и без нас. Дальше при необходимости пилот на одну-две системы и вывод в эксплуатацию волнами, и на любой ступени можно остановиться.

Всё работает на ваших серверах, исходники и настройки лежат в вашем репозитории с первого коммита. Мы не имеем лицензии ФСТЭК, не проводим аттестацию и не дежурим круглосуточно, а проверка входа и доступа идёт на вашем стенде. Описание услуги — на странице «SSO и MFA для корпоративных систем», все цены и сроки — на странице «Тарифы».

Частые вопросы

Что выбрать для корпоративных систем: SSO или MFA?

Они решают разные задачи и обычно нужны вместе. SSO сокращает число паролей и позволяет отзывать доступ в одном месте, MFA защищает от украденного пароля. Если ресурсов хватает на одно, начните с MFA для администраторов и доступа извне, затем подключайте единый вход.

OpenID Connect или SAML?

Для новых веб-приложений и внутренних сервисов обычно берут OpenID Connect, он проще для разработчика. SAML выбирают, когда готовый продукт поддерживает его из коробки, а OpenID Connect нет. Решается по каждой системе отдельно.

Нужен ли отдельный сервер входа, если у нас есть каталог?

Нужен, если ваши системы умеют OpenID Connect или SAML, а каталог только LDAP и Kerberos: сервер входа переводит одно в другое и добавляет второй фактор. Если все системы читают LDAP напрямую и второй фактор нужен не везде, обойтись можно, но единого входа с сессиями вы не получите.

Какой второй фактор надёжнее?

Аппаратный ключ устойчив к поддельным страницам входа, коды по SMS слабее всего. Но надёжность зависит и от процедуры восстановления: если её можно обойти звонком в поддержку, фактор слабее, чем кажется. Для администраторов берите ключи, для остальных коды в приложении.

Как подключить старую 1С или самописную систему?

Выбор зависит от системы: шлюз перед ней, проверка пароля в каталоге по LDAP или оставить локальный вход под присмотром. Решаем после разбора конкретной системы, в договоре фиксируем выбранный способ и ограничения.

Можно ли обойтись без внешних сервисов?

Да. Сервер входа и каталог ставятся на ваших серверах, внешние сервисы авторизации не нужны. Если облачный каталог у вас уже есть, подключаемся к нему и записываем, что будет со входом, если он недоступен.

Как проверить, что доступ отзывается сразу?

Отключить тестового сотрудника и проверить по каждой системе, сколько он ещё работает. Результат записывается как время от отключения до отказа. Тест повторяют после подключения новых систем и смены настроек сессий.

Сколько стоит внедрение?

Обследование стоит 200 000 ₽ за одну-две системы или 350 000 ₽ за несколько, оно вычитается из первого этапа. Пилот — 150 000–400 000 ₽ или 400 000–1 200 000 ₽, вывод в эксплуатацию — от 1 500 000 ₽ этапами по 300 000–700 000 ₽, сопровождение — от 20 000 ₽ в месяц.