В современных условиях любая растущая компания рано или поздно сталкивается с необходимостью централизованного управления доступом сотрудников к информационным системам. Какое решение выбрать в такой ситуации?
В мире информационных технологий нет ничего постоянного. Стандарты меняются: если раньше стандартом было развертывание локальных серверов и отдельных учетных записей, то сейчас фокус сместился в сторону централизованного управления идентификацией. Современным базовым стандартом для любой развитой IT-инфраструктуры стал Единый Вход или SSO (Single Sign-On).
SSO — это метод аутентификации, который позволяет пользователю один раз войти в систему и получить доступ к нескольким связанным приложениям или сервисам без необходимости повторного ввода учетных данных.
Наша команда на практике прошла путь интеграции с различными SSO. Мы работали с такими решениями, как WSO2 и ADFS, и каждый раз убеждались в том, насколько SSO важен для инфраструктуры.
Этот опыт позволил определить требования к Identity Provider’у: открытость, масштабируемость и возможность адаптации под быстро меняющиеся бизнес-задачи. И здесь на первый план выходит Keycloak.
Почему именно Keycloak?
В отличие от многих аналогов, Keycloak — это решение с рядом преимуществ:
Открытый исходный код и отсутствие лицензионных затрат: Keycloak распространяется под лицензией Apache 2.0, что означает его бесплатность для коммерческого использования.
Простота внедрения и разработки: легко настраивается и интегрируется благодаря поддержке всех ключевых протоколов (OpenID Connect, SAML 2.0, OAuth 2.0)
Платформа предлагает различные механизмы для защиты (двухфакторная аутентификация, настройка требований к сложности пароля и т.д.)
Keycloak дает возможность кастомизации. Вы можете полностью изменить интерфейс страницы входа, написать собственные модули для нестандартных сценариев аутентификации и работать с любыми источниками пользователей (базы данных, Active Directory и тд.)
Keycloak поддерживает работу в отказоустойчивом режиме.
Наша команда не в первый раз работает с этой платформой, и недавно провела внедрение системы идентификации на базе Keycloak для еще одного проекта и поделилась подробностями.
С чего все началось
В рамках проекта заказчик стоял перед проблемой: наличие двух больших, но совершенно разных групп пользователей.
Первая группа – офисные сотрудники, уже имевшие учетные записи в Active Directory.
Вторая группа – многочисленные сотрудники удаленных точек продаж, не заведенные в централизованные каталоги и использовавшие для доступа к системам общие или локальные учетные записи.
Единственной системой, где были заведены все сотрудники, была ERP-система, в которой сохранялся только статус сотрудников, что создавало сложности в управлении и неудобства для пользователей.
Было принято решение о внедрении единой системы идентификации и управления доступом на базе Keycloak в отказоустойчивом режиме.
Ключевые цели проекта включали в себя:
Создание единого хранилища учетных данных всех пользователей;
Интеграция этого хранилища с ERP-системой для синхронизации актуальных данных;
Подключение к Keycloak существующего Active Directory и каталога с пользователями удаленных филиалов;
Настройка интеграции информационных систем компании с Keycloak.
Как проходило внедрение
Работа была разделена на несколько четких этапов, что позволило системно подойти к решению этой задачи и завершить внедрение единой системы аутентификации для 44 информационных систем примерно за год.
Этап 1. Подготовка и проектирование
На этом этапе было сделано следующее:
Продумали, как будут связаны между собой все технические компоненты, чтобы система работала без сбоев.
Определили, сколько пользователей система может обслуживать одновременно, чтобы не “легла” в самый ответственный момент.
Прописали, какие данные и между какими системами будут передаваться.
Провели анализ и выбор систем для пилотного подключения.
Изучили и подобрали способ двухфакторной аутентификации.
Создали макеты страниц входа и личного кабинета пользователя.
Настроили тестовую среду и создали пространство, где можно было бы тестировать настройки, не мешая работе других систем.
Этап 2. Реализация
На этом этапе мы перешли к практической реализации:
Развернули две пробные версии системы (для разработки и тестирования): Dev и Stage окружения Keycloak.
Настроили VPN-туннель Site-to-site для безопасного взаимодействия между серверами и CI/CD для сервиса интеграций.
Внедрили и протестировали двухфакторную аутентификацию на Stage окружении.
Для ERP-системы определили возможные способы получения информации обо всех активных сотрудниках компании, а также сформировали основной перечень атрибутов данных, которые система должна передавать.
Провели первую успешная интеграцию: команда установила и подключила к Keycloak две тестовые системы – NetBox и NextCloud. Это позволило отработать процесс переключения и подготовить универсальную инструкцию для коллег из смежных систем.
Завершили работу над дизайном страницы авторизации и личного кабинета пользователя в Keycloak.
Результаты
Что у нас в итоге получилось:
Единый вход для 44 корпоративных систем.
Двухфакторная аутентификация для всех административных систем.
Автоматическая синхронизация статуса сотрудников с ERP (увольнение = отзыв доступа ко всем системам).
Снижение нагрузки на службу поддержки на ~70% (за счет уменьшения запросов на восстановление паролей).
Повышение безопасности: централизованный аудит логинов, политики сложности паролей.
Keycloak оказался идеальным компромиссом между функциональностью, гибкостью и стоимостью для корпоративного внедрения. За год мы перевели компанию из состояния «хаотичного управления доступом» к современной, безопасной и удобной системе идентификации.
Ключевые уроки:
Начинайте с пилота — сначала подключите 1-2 некритичные системы.
Инвестируйте в кастомизацию UI — это сильно повышает принятие системы пользователями.
Автоматизируйте синхронизацию с HR-системой с первого дня.
Заложите время на согласование политик безопасности (таймауты сессий, правила 2FA).
А какие системы идентификации вы используете в своих проектах? Сталкивались ли с подобной миграцией?