Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
11 апреля 2024 года состоялся первый мажорный релиз инструментария OpenZiti, позволяющего интегрировать в приложения средства для распределённого сетевого взаимодействия и обращения к сервисам в изолированном сетевом окружении. Исходный код проекта опубликован на GitHub под лицензией Apache License 2.0.
Согласно данным OpenNET, проект OpenZiti даёт возможность развернуть специфичную для разрабатываемых приложений оверлейную сеть, работающую поверх обычного интернета и использующую mesh-маршрутизацию, при которой каждая точка сети связывается через соседние точки. Код проекта написан на языке Go. Предоставляются обвязки для языков C, Go, Python, Swift, Java, Node.js и C# (.NET), а также инструментарий для интеграции с приложениями для платформы Android.
Система OpenZiti изначально рассчитана на построение сетей, гарантирующих защиту и изоляцию трафика в условиях работы в незащищённых окружениях, узлы в которых могут быть скомпрометированы (архитектура с нулевым доверием - Zero Trust). Технология может применяться для организации связи c приложениями вместо VPN. Работа сети обеспечивается через использование процесса-контроллера, управляющего конфигурацией сети, аутентификацией и настройкой сервисов, а также узлов, которым разрешено выступать в роли маршрутизаторов, образующих mash-сеть и выполняющих передачу через себя транзитного трафика. Возможно добавление сервисов для балансировки нагрузки и обеспечения отказоустойчивости.
Доступ к оверлейной сети реализуется при помощи специальных edge-клиентов, позволяющих обращаться из внешней сети к оверлейной сети, построенной при помощи OpenZiti. Возможно создание туннелей и прокси, позволяющих пробрасывать трафик из обычной сети в оверлейную и наоборот, чтобы из внешней сети взаимодействовать с работающими в оверлейной сети приложениями и обращаться к существующим приложениям, в которых не встроена поддержка оверлейной сети.
Обращение к сети и получение данных с серверов DNS возможно только после прохождения обязательной авторизации и аутентификации - без наличия полномочий клиент не сможет определить наличие сервиса и подключиться к нему. Весь трафик защищается при помощи mTLS (взаимная аутентификация, при которой клиент и сервер аутентифицируют друг друга) и сквозного шифрования (ChaCha20-Poly1305), то есть компрометация узлов сети не позволит просматривать трафик приложений. Для шифрования задействованы функции библиотеки libsodium.
Из популярных приложений, использующих OpenZiti, можно отметить платформу совместного доступа к данным Zrok и экосистему browZer для развёртывания сайтов в оверлейной сети. Кроме создания распределённых сетевых приложений OpenZiti также подходит для построения частных сетей для организации доступа к закрытым API, сайтам или БД, скрытия в оверлейной сети инфраструктур на базе Kubernetes, а также удалённого управления внешними системами и устройствами без настройки межсетевых экранов и задействования VPN.
В выпуске OpenZiti 1.0 обеспечена стабильность API для маршрутизаторов и контроллеров (для клиентов стабильность API гарантировалась и раньше). Начиная с данного выпуска в API и интерфейсе командной строки будет поддерживаться обратная совместимость, а при необходимости удаления возможностей будет применяться процесс предварительного перевода их в разряд устаревших и фактического удаления только при значительном смене номера версии. В новой версии также проведено дополнительное тестирование с симуляцией различных сбоев компонентов сети (chaos testing), позволяющее убедиться в устойчивости сети в случае возникновения нештатных ситуаций и способности возвращения к нормальной работе после возобновления работы сбойных компонентов.
Команда проекта пояснила, что продолжит развивать OpenZiti, в том числе планирует улучшить работу элементов базовой структуру и распределённого управления, добавит поддержку BrowZer для доступа без агента к оверлею для веб-приложений, продолжит развитие проекта Zrok, проработает интерфейс приложения для туннелирования, представит дополнительные модели развёртывания и дополнительные приложения ziti, помимо zrok.