Drive your career as React Developer with Symphony Solutions!
×Закрыть

Конференция DeveloperWeek: Cloud Edition 2019

Про автора: Михаил Бродский, Lead Software Engineer, Consultant, GlobalLogic, Харьков. В сфере IT он уже более 7 лет. Занимался проектированием, разработкой информационных систем и их внедрением. В данный момент возглавляет проект, связанный с сетевой безопасностью. Занимается повышением эффективности процесса разработки с помощью виртуализации, разработкой и анализом архитектурных решений, а также реализацией программной функциональности.

«Интернет вещей» и применение в этой сфере облачных технологий — тема, не теряющая актуальности. Еще более важный аспект — проблема безопасности, удаленного доступа и работы под нагрузкой. Данная статья описывает создание решения, которое позволило увеличить надежность работы системы.

Год назад мы получили задание на разработку архитектуры для системы удаленного доступа к IoT устройствам и реализацию данного решения. Это была нетривиальная задача — предстояло создать систему, аналогов которой не существовало. А раз аналогов не существует, то почему бы не поделиться своим видением с общественностью?

Сказано-сделано: подали заявку на конференцию DeveloperWeek: Cloud Edition 2019 в городе Сиэтл. Организаторы ее приняли и, таким образом, к списку стран откуда прибыли гости и спикеры конференции добавилась Украина.

Почему туда?

В начале расскажу, почему была выбрана именно DeveloperWeek: Cloud Edition 2019.

Сиэтл считается мировой столицей облачных вычислений, где базируются крупнейшие Cloud-провайдеры. Среди них такие гиганты, как: Amazon, Tableau, Microsoft, Expedia, Porch, SAP Concur и другие.

DeveloperWeek Seattle: Cloud Edition — это первая конференция по облачным вычислениям, в которой приняли участие более 800 инженеров, ИТ-менеджеров, предпринимателей и экспертов.

На конференции были представлены компании: Boeing, Expedia, IBM, Expedia, VMware, Amazon Web Services, T-Mobile, Google Cloud, Oracle, Microsoft, Neo4j, GlobalLogic, Salesforce, ABBYY, Red Hat, VMware и другие.

Основной фокус конференции был направлен на то, как управлять своим корпоративным облаком, каким образом правильно перейти к облачным вычислениям , отказываясь от локальных серверов и сетей, отдавая предпочтения микросервисам, безсерверной архитектуре, инструментам для обработки больших объемов данных, искусственному интеллекту, как сервису, и общей переносимости / совместимости облаков. Этот переход называется цифровым преобразованием (Digital Transformation).

Основные темы

Основные темы, которые обсуждались на конференции и на которых акцентировали внимание спикеры:

  • Microservices;
  • AI in the Cloud;
  • Containers and Kubernetes;
  • Serverless;
  • Cloud and Security tech.

Про мой доклад

Перейдем непосредственно к докладу. 31 мая на конференции в Сиэтле я выступил с докладом о построении безопасной архитектуры удаленного доступа к удаленным устройствам (Building security access to remote devices), а сейчас хочу поделиться наработками с аудиторией DOU.

Почему я выбрал именно эту тему? Почему до сих пор существует проблема удаленного доступа? Есть две причины:

  1. Широкое распространение IoT устройств по всему миру, которые требуют обслуживания, безопасного доступа и защиты от взлома.
  2. Система удаленного доступа должна быть безопасной и устойчивой к взлому.

В 2003 году общее количество подключенных к сети устройств составляло 500 миллионов — это было в среднем 0.08 устройств на человека. В краткосрочной перспективе мы ожидаем 50 миллиардов устройств и это, примерно, 7 устройств на человека.

Прогноз увеличения IoT-устройств

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

Для этого мы разработали компонент, который перенаправлял HTTP-запросы с центральной системы на удаленное устройство через обратный SSH-туннель между IoT-устройством и компонентом Reverse Proxy.

Высокоуровневая схема архитектурного решения

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

После этого устройство инициирует создание туннеля (шаг 2), если публичный ключ устройства и ssh username верны, то туннель успешно создается. После этого администратор устройства получает возможность удаленного управления и доступ к web интерфейсу устройства (шаг 3).

Во время открытия web интерфейса удаленное устройство HTTP запросы перенаправляются через обратный ssh туннель и обрабатываются устройством. Более детально алгоритм обработки показан на рисунке.

Алгоритм создания туннеля и обработки запроса

Удаленное устройство инициирует создание SSH сессии между устройством и Reverse Proxy (шаг № 1). SSH сервер динамически выделяет свободный порт (шаг № 2).
SSH сервер валидирует публичный SSH ключ устройства, который хранится в БД. СуБД возвращает по SSH username ключ, который хранится в БД и сравнивает с тем, что отправлен в SSH сессии. В том случае если валидация прошла успешна, SSH сервер регистрирует данную сессию и сохраняет выделенный SSH пор и username в БД (шаг № 3).

При переходе на устройство из центрального веб приложения (шаг № 4) для управления удаленными устройствами, HTTP Server запрашивает в БД SSH порт, выделенный на шаге № 3, и перенаправляет все запросы в обратный SSH туннель (шаг № 7).

Возникает вполне логический вопрос, каким образом данную систему можно масштабировать?

Проблема масштабирования была решена простым способом.

Последовательность обработки запросов

Перед тем как перенаправить запрос в туннель, RP-сервер проверяет с каким RP-сервером была установлена SSH-сессия запрашиваемого устройства, и если сервер, который получил HTTP-запрос не содержит SSH-сессию данного устройства, то в этом случае сервер отправляет redirect ответ клиенту с нужным уникальным номеров RP-сервера, который как раз и обслуживает SSH сессию. После этого запрос отправляется повторно и уже на нужный RP-сервер: в итоге нагрузка балансируется между двумя RP серверами, которые обрабатывают HTTP и TCP-трафик.

Благодаря этим действиям мы масштабировали систему и повысили вычислительную мощность решения. Больше вычислительной мощности — больше пользователей и их IoT-устройств могут одновременно находиться онлайн и обслуживаться сервисом параллельно. Мы достигли стабильного показателя ~400 устройств онлайн одновременно. И это не пиковая нагрузка, а стабильная работа.

Выводы

Безопасность сегодня — одна из наиболее актуальных тем в профессиональном сообществе.

Разработанная система дала нашей команде практический опыт работы с сетевым протоколом прикладного уровня, разработки кастомизированного SSH-сервера с применением библиотеки Apache MINA SSHD. Благодаря масштабированной системе, клиентская стороны получила жизненно необходимый запас прочности и прирост вычислительной мощности, что позволило обслуживать больше пользователей.

В ходе разработки, команда не только расширила теоретическое понимание принципов SSH-туннелирования, но и освоила их практическое применение на этапе создания прототипов серверного и клиентского компонентов системы. Для заметки: серверная часть была написана на Java, клиентская на C++.

Конференция DeveloperWeek: Cloud Edition 2019 — отличное доказательство того, что вопросы в сфере безопасности сегодня все еще актуальны. Для меня, как для спикера, это был не только полезный опыт в плане навыка публичных выступлений, но и дополнительная возможность убедиться, что мы двигались в правильном направлении. Убежден, разработка и внедрение надежных систем безопасного доступа к IoT-устройствам существенно ускорит прогресс в этой сфере. Как было отмечено в начале статьи, ключевая задача сегодня — создать решение безопасного доступа для конфигурации, поддержки и диагностики проблем с устройствами. Радует, что наша команда внесла свой вклад в решение этой задачи и получила релевантный опыт.

Хотите узнать больше или есть вопросы? Пишите в комментарии, в Linkedin и подписывайтесь на Youtube-канал.

Презентация доступна по ссылке.

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Подписаться на комментарии