Доступен OpenZiti 1.0, инструментарий для встраивания оверлейных сетей в приложения

Представлен выпуск инструментария OpenZiti 1.0, позволяющего интегрировать в приложения средства для распределённого сетевого взаимодействия и обращения к сервисам в изолированном сетевом окружении. OpenZiti даёт возможность развернуть специфичную для разрабатываемых приложений оверлейную сеть, работающую поверх обычного интернета и использующую mesh-маршрутизацию, при которой каждая точка сети связывается через соседние точки. Код проекта написан на языке Go и распространяется под лицензией Apache 2.0. Предоставляются обвязки для языков 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), позволяющее убедиться в устойчивости сети в случае возникновения нештатных ситуаций и способности возвращения к нормальной работе после возобновления работы сбойных компонентов.

Release. Ссылка here.