Потоки устройств Центра Интернета вещей (предварительная версия)

Центр Интернета вещей Azure потоки устройств упрощают создание безопасных двунаправленных TCP-туннелей для различных сценариев обмена данными между облаком и устройствами. Поток устройства является посредником Центр Интернета вещей *потоковой конечной точки, которая выступает в качестве прокси-сервера между конечными точками устройства и служб. Эта настройка, показанная на схеме, особенно полезна, если устройства находятся за брандмауэром сети или находятся в частной сети. Таким образом, потоки устройств Центра Интернета вещей позволяют клиентам связываться с устройствами Центра Интернета вещей при использовании брандмауэра без необходимости открывать набор портов сетевого брандмауэра для входящего или исходящего трафика.

При использовании потоков устройств Центра Интернета вещей устройства остаются защищенными и на них всего лишь нужно открыть исходящие подключения TCP к конечной точке потоковой передачи Центра Интернета вещей через порт 443. После установки потока приложения на стороне службы и устройства имеют программный доступ к клиентскому объекту WebSocket для отправки и получения необработанных байтов друг другу. Гарантии надежности и упорядоченности, предоставляемые этим туннелем, точно такие же, как и у протокола TCP.

Льготы

Потоки устройств Центра Интернета вещей предоставляют следующие преимущества:

  • Безопасное подключение при использовании брандмауэра. К устройствам Центра Интернета вещей можно получить доступ из конечных точек службы, не открывая порт входящего трафика брандмауэра на периметре устройства или сети (через порт 443 должно осуществляться только исходящее подключение к Центру Интернета вещей).

  • Проверка подлинности. Как на стороне устройства, так и на стороне службы туннеля требуется проверка подлинности в Центре Интернета вещей с использованием соответствующих учетных данных.

  • Шифрование. По умолчанию потоки устройств Центра Интернета вещей используют TLS-подключения. Этот фактор гарантирует, что трафик всегда шифруется независимо от того, использует ли приложение шифрование или нет.

  • Простота подключения. Во многих случаях благодаря потокам устройств устраняется необходимость в сложной установке виртуальных частных сетей для подключения к устройствам Интернета вещей.

  • Совместимость со стеком TCP/IP. Потоки устройств Центра Интернета вещей вмещают трафик приложения по протоколу TCP/IP. Такой подход означает, что широкий спектр собственных и стандартных протоколов может использовать эту функцию.

  • Простота в использовании при настройке частной сети. Служба может подключиться к устройству по его идентификатору, а не по его IP-адресу. Этот факт полезен в ситуациях, когда устройство находится в частной сети и имеет частный IP-адрес, или ЕГО IP-адрес назначается динамически и неизвестен стороне службы.

Рабочие процессы при использовании потоков устройств

Потоковая передача данных устройства инициируется в том случае, когда служба запрашивает подключение к устройству с указанием его идентификатора. Этот рабочий процесс особенно подходит для модели взаимодействия "клиент — сервер", в том числе с задействованием протоколов SSH и RDP, когда пользователь хочет удаленно подключиться к серверу SSH и RDP, выполняемому на устройстве, с помощью клиентской программы SSH и RDP.

Процесс создания потока устройства включает согласование между устройством, службой, основной конечной точкой и конечной точкой потоковой передачи Центра Интернета вещей. Хотя основная конечная точка Центра Интернета вещей организует создание потока устройства, конечная точка потоковой передачи обрабатывает трафик, который проходит между службой и устройством.

Процесс создания потока устройства

Программное создание потока устройства с помощью пакета SDK включает следующие шаги, которые также показаны на рисунке:

  1. Приложение устройства заранее регистрирует обратный вызов, чтобы получить уведомление при инициации подключения нового потока к устройству. Этот шаг обычно происходит, когда устройство загружается и подключается к Центру Интернета вещей.

  2. Программа на стороне службы инициирует подключение потока устройства, когда это необходимо, предоставляя идентификатор устройства (не IP-адрес).

  3. Центр Интернета вещей уведомляет программу на стороне устройства, вызывая обратный вызов, зарегистрированный на шаге 1. Устройство может принять или отклонить запрос на запуск потока. Эта логика может отличаться в зависимости от конкретного сценария приложения. Если устройство отклоняет запрос потока, Центр Интернета вещей сообщает службе соответствующим образом; в противном случае выполните следующие действия.

  4. Устройство создает защищенное исходящее подключение TCP к конечной точке потоковой передачи через порт 443 и преобразует его в подключение WebSocket. URL-адрес конечной точки потоковой передачи и учетные данные, используемые для проверки подлинности, предоставляются устройству Центр Интернета вещей в рамках запроса, отправленного на шаге 3.

  5. Служба уведомляется о результатах принятия потока устройством и устанавливает собственное подключение клиента WebSocket к конечной точке потоковой передачи. Аналогичным образом она получает URL-адрес конечной точки потоковой передачи и информацию об аутентификации из Центра Интернета вещей.

Во время описанного выше процесса подтверждения:

  • Процесс подтверждения необходимо выполнить в течение 60 секунд (шаг 2–5), в противном случае подтверждение завершится ошибкой из-за истечения времени ожидания, а служба получит соответствующее уведомление.

  • Когда поток будет создан, конечная точка потоковой передачи будет действовать в качестве прокси-сервера и будет передавать трафик между службой и устройством через соответствующие WebSocket-подключения.

  • Устройства и службы нуждаются в исходящем подключении к главной конечной точке Центр Интернета вещей и конечной точке потоковой передачи через порт 443. URL-адреса этих конечных точек доступны на вкладке Обзор на портале Центра Интернета вещей.

  • Гарантии надежности и упорядоченности установленного потока точно такие же, как и предоставляемые TCP.

  • Все подключения к Центру Интернета вещей и конечной точке потоковой передачи используют TLS и шифруются.

Завершение потока

Установленный поток завершается, когда любое из подключений по протоколу TCP к шлюзу отключается (службой или устройством). Это действие может выполняться добровольно, закрывая WebSocket на устройстве или в программах службы, или невольно, если время ожидания сетевого подключения или сбой процесса. После завершения подключения устройства или службы к конечной точке потоковой передачи другой TCP-подключение также (принудительно) завершается, а служба и устройство отвечают за повторное создание потока при необходимости.

Требования к подключению

Как сторона устройства, так и сторона службы потока устройства должны иметь возможность устанавливать TLS-подключения к Центру Интернета вещей и его конечной точке потоковой передачи. В этой ситуации требуется исходящее подключение через порт 443 к этим конечным точкам. Имя узла, связанное с этими конечными точками, можно найти на вкладке "Обзор" Центр Интернета вещей, как показано на рисунке:

Кроме того, информацию о конечных точках, в частности ключи property.hostname и property.deviceStreams, также можно получить с помощью Azure CLI в разделе свойств центра.

az iot hub devicestream show --name <YourIoTHubName>

Выходные данные — это объект JSON всех конечных точек, к которым может потребоваться подключение устройства и службы центра, чтобы установить поток устройств.

{
  "streamingEndpoints": [
    "https://<YourIoTHubName>.<region-stamp>.streams.azure-devices.net"
  ]
}

Примечание.

Убедитесь, что вы установили Azure CLI 2.0.57 или новее. Последнюю версию можно скачать на странице для установки Azure CLI.

Разрешение исходящих подключений к конечным точкам потоковой передачи устройства

Как уже упоминалось ранее, устройство создает исходящее подключение к конечной точке потоковой передачи Центра Интернета вещей во время процесса запуска потоков устройств. Ваши брандмауэры устройства или сети должны разрешать исходящие подключения к шлюзу потоковой передачи через порт 443 (обратите внимание, что обмен данными осуществляется через подключение WebSocket, зашифрованное с помощью протокола TLS).

Имя узла конечной точки потоковой передачи устройств можно найти на портале Центр Интернета вещей Azure на вкладке "Обзор".

Кроме того, эти сведения можно найти с помощью Azure CLI:

az iot hub devicestream show --name <YourIoTHubName>

Примечание.

Убедитесь, что вы установили Azure CLI 2.0.57 или новее. Последнюю версию можно скачать на странице для установки Azure CLI.

Устранение неполадок с использованием журналов ресурсов для потоков устройств

Вы можете настроить Azure Monitor, чтобы получить журналы ресурсов для потоков устройств, созданные Центром Интернета вещей. Этот подход может быть полезным в сценариях устранения неполадок.

Выполните следующие действия, чтобы создать параметр диагностика для отправки журналов потоков устройств для Центр Интернета вещей в журналы Azure Monitor:

  1. Найдите нужный Центр Интернета вещей на портале Azure. В области слева в разделе Мониторинг выберите Параметры диагностики. Щелкните команду Добавить параметр диагностики.

  2. Укажите имя для параметра диагностики и выберите DeviceStreams в списке журналов. Затем выберите Отправить в Log Analytics. Вам будет предложено создать рабочую область Log Analytics или выбрать имеющуюся.

    Включение журналов потоков устройств

  3. После создания параметра диагностики для отправки журналов потоков устройств в рабочую область Log Analytics можно получить доступ к журналам, выбрав Журналы в разделе Мониторинг в левой области Центра Интернета вещей на портале Azure. Журналы потоков устройств отображаются в AzureDiagnostics таблице и имеются Category=DeviceStreams. Может потребоваться несколько минут после операции, чтобы журналы отображались в таблице.

    Как показано здесь, удостоверение целевого устройства и результат операции также доступен в журналах.

Дополнительные сведения об использовании Azure Monitor с Центром Интернета вещей см. в статье Мониторинг Центра Интернета вещей. Сведения о всех журналах ресурсов, метриках и таблицах, доступных для Центра Интернета вещей, см. в справочнике по мониторингу данных в Центре Интернета вещей Azure.

Доступность в регионах

Во время общедоступной предварительной версии потоки устройств Центр Интернета вещей доступны в регионах Центральной ЧАСТИ США, Восточной части США EUAP, Северной Европе и Юго-Восточной Азии. Создайте центр в одном из этих регионов.

Доступность пакета SDK

Обе стороны каждого потока (на стороне устройства и службы) создают туннель, используя пакет SDK для Центра Интернета вещей. На этапе общедоступной предварительной версии клиенты могут выбрать пакет SDK для следующих языков:

  • пакеты SDK для C и C# поддерживают потоки устройств на стороне устройства;

  • пакеты SDK для NodeJS и C## поддерживают потоки устройств на стороне службы.

Следующие шаги