В статьерассматривается Kеyсloak — сервис управления идентификацией и доступом с открытым исходнымкодом. Его использование упрощает разработку безопасности веб-приложения практически безкода.
Ключевые слова: Kеyсloak,веб-приложение,безопасность, идентификация, аутентификация, авторизация.
Сегодня веб-приложения нашли свое применение во всех разделах передовых информационных технологий от корпоративных сайтов до бизнеса. Действительно, использование веб-технологий значительно упрощают «бизнес-процессы за счет унификации, кроссплатформенности и широких возможностей» [1]. Поэтому веб-приложения являются мишенью для киберпреступников.
Для них в первую очередь, свойственны уязвимости межсайтового выполнения сценариев В результате злоумышленник получает возможность войти в личный кабинет пользователя и совершать мошеннические операции. Существуют классы решений, технологий способные устранить подобные уязвимости в обеспечении защиты веб-приложений. Это безопасные технологии разработки, раскрывающие уязвимости на этапе создания приложения, решения по обеспечению контроля соблюдение политик информационной безопасности веб-сервера и операционной системы, брандмауэр, который фильтрует трафик и блокирует атаки в реальном времени.
Управление идентификацией и предоставление доступа пользователю защищенного ресурса, считается обязательной частью архитектуры современного веб-приложения. Приложение является защищенным, когда его ресурсы ограничены определенными правами доступа. Для получения прав доступа необходимо пройти процесс идентификации аутентификации и авторизации.
Определим ключевые понятия. Идентификация — это процедура распознавания, определения субъекта по его личному номеру, например, имени, логина, биометрических данных. Аутентификация — это процедура проверки подлинности. Авторизация — это предоставление доступа к какому-либо защищенному ресурсу.
Рассмотрим сервис Kеyсloak, обеспечивающий безопасный доступ и управление идентификацией. Это система с открытым исходным кодом, направленная на веб-приложения, в которых применяются паттерны микросервисной архитектуры. Данный подход позволяет защитить приложение и администрировать его практически без кода. Kеyсloak имеет широкий набор основных функций, например, единый вход (SSO), вход в систему через социальную сеть, проверку доступа. Полный список функций представлен на официальном сайте [2].
Компания JBoss разработала в 2014 году программный продукт Kеyсloak на языке Java под Apache2. Он предоставляет для веб-приложений возможности администрирования и контроля доступа. Состоит из двух составляющих Kеyсloak Server и Kеyсloak Application Adapter. Это серверный компонент и плагины для доступа к службам аутентификации соответственно. Благодаря им приложению не нужно управлять страницами входа, согласования и регистрации клиентов. Пользователя проверяет сервис Kеyсloak, используя набор функций и предлагает помощь для работы со стандартами идентификации OpenID Connect, OAuth и SAML, механизмами единого входа, поддерживает многочисленные домены или пространства. Сервис Kеyсloak имеет интерфейс, с помощью которого можно настраивать роли, пользователей и многое другое. Обзор программного продукта представлен на рисунке 1.
Рис. 1. Обзор работы сервиса
Основная концепция Kеyсloak в том, что существует некоторое изолированное пространство, в рамках которого могут существовать несколько пользователей, выполняющих свою задачу. Открыв браузер, пользователь по URL обращается к закрытому ресурсу, запуская процесс аутентификации. Система видит, что аутентификация не пройдена и перенаправляет в Kеyсloak. На этом этапе пользователь вводит учетные записи, например, логин и пароль. Если данные верны Kеyсloak переадресует на страницу защищенного приложения и выдает токен с помощью которого формируется контекст безопасности на защищенном приложении. Данный подход называется security tokens — это свод стандартов токенов доступа, использующихся для передачи данных.
Kеyсloak использует JSON Web Token (далее JWT) открытого стандарта RFC 7519. Он обеспечивает способ безопасной передачи информации между сторонами. Серверу для создания токена необходимо определить три составляющие: заголовок, с общей информацией; полезные данные, такие как id пользователя и его роль; цифровая подпись. Все составляющие представлены в формате base-64, разделенные точками. То есть JWT это строка в формате «заголовок.полезные_данные.подпись». Она не скрывает и не маскирует данные автоматически. Необходима для проверки, что данные отправлены действительно авторизованным источником. При обращении Kеyсloak формирует три JWT токена. ID Token, который является требованием протокола OpenID Connect и хранит информацию о конкретном пользователе, например, ФИО, email. Access Token, необходимый для авторизации в сервисе, имеет короткий срок службы, овладев им злоумышленник не сможет долго пользоваться поскольку данный токен быстро станет не релевантным. Refresh Token, используется для выпуска нового Access Token, когда тот устаревает.
Kеyсloak позволяет хранить информацию о пользователях несколькими способами. Внутренняя база данных Keyloak, а также настраиваемая, например, Postgresql. Федеративная аутентификация пользователей, при которой доверенные поставщики удостоверений включают корпоративные каталоги, такие как Асtivе Dirесtory и Lightweight Direсtоrу Ассеss Protocol (LDАP). Применение внешней аутентификации поставщиков удостоверений с использованием сторонних ресурсов.
Для взаимодействия компонентов приложения в сети используется REST API в качестве средства тестирования для выполнения HTTP-запросов. Они впоследствии будут защищены веб-токеном JSON, выданным Kеyсloak. Как распределенная система архитектура REST фокусируется на всех своих ресурсах. Веб-сервисы REST масштабируемые при взаимодействии компонентов, для них характерны общность интерфейсов и легкость обслуживания. Они используются для обмена информацией. При создании веб-приложений API это логичный, эффективный и широко распространенный стандарт.
В настоящее время пароли являются преобладающим механизмом аутентификации для веб-приложений. К негативным факторам использования паролей относится трудности с запоминанием паролей, которые считаются безопасными. Если у пользователя несколько учетных записей, то он должен помнить каждый пароль. Поэтому используются более слабые или повторные пароли. Пользователь может оказаться обманутым при входе в вредоносный сервис, раскрыв пароль, который является потенциально используемым на других платформах. Это может нанести ущерб, если злоумышленник обнаружит повторно использованный пароль, киберпреступник получит доступ к остальным ресурсам.
Таким образом, обеспечение безопасного доступа и управление идентификацией являются обязательной частью каждого веб-приложения.Применение открытого кода службы проверки Keycloak позволяет его реализовать на уровне разработки. Данное решение может удовлетворить потребности организации в информационной безопасности, не требуя обширной разработки и интеграции, благодаря множеству готовых к использованию решений, отвечающих требованиям безопасности. Этот программный продукт постоянно обновляется и имеет активное сообщество, помогающее решать проблемы при работе с сервисом.
Литература:
- CNews, [Электронный ресурс], Режим доступа: https://www.cnews.ru/special_project/2016/pt-bershadsky/, дата обращения: 14.10.2021
- Kеyсloak, [Электронный ресурс], Режим доступа: https://www.keycloak.org/, дата обращения: 24.11.2021
- Морозова В. И. Управление идентификацией // Сборник научных трудов Международной научно-практической конференции «Цифровая трансформация в экономике транспортного комплекса» 11 октября, Москва, М.: РУТ, 2019. — С. 247–251.
- Скембрей Дж., Шема М. Секреты хакеров. Безопасность Web-приложений — готовые решения/ Скембре, Дж., Шема М — М.: Издательский дом «Вильямс», 2003. — 384 с.