Настройка устройства IoT Edge для использования в качестве прозрачного шлюза

Область применения:IoT Edge 1.5 проверка mark IoT Edge 1.5 IoT Edge 1.4 проверка mark IoT Edge 1.4

Внимание

Поддерживаются выпуски IoT Edge 1.5 LTS и IoT Edge 1.4 LTS. IoT Edge 1.4 LTS заканчивается жизнью 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.

В этой статье приведены подробные инструкции по настройке устройства IoT Edge в качестве прозрачного шлюза для взаимодействия других устройств с Центром Интернета вещей. В этой статье под термином шлюз IoT Edge подразумевается устройство IoT Edge, которое настроено в качестве прозрачного шлюза. Дополнительные сведения см. в разделе Использование устройства IoT Edge в качестве шлюза.

Примечание.

подчиненные устройства не поддерживают отправку файлов.

Для настройки успешного подключения к прозрачному шлюзу необходимо выполнить три шага. В этой статье рассматривается первый шаг.

  1. Настройте устройство шлюза в качестве сервера, чтобы подчиненные устройства могли безопасно подключаться к нему. Настройте шлюз для приема сообщений от подчиненных устройств и направьте передачу данных из них в нужное место назначения.
  2. Создание удостоверения устройства для подчиненного устройства, чтобы оно могло проходить проверку подлинности в Центре Интернета вещей. Настройте подчиненное устройство для отправки сообщений через устройство шлюза. Дополнительные сведения см. в разделе Аутентификация подчиненного устройства в Центре Интернета вещей.
  3. Подключите подчиненное устройство к устройству шлюза и начните отправку сообщений. Сведения о выполнении этих действий см. в статье Подключение подчиненного устройства к шлюзу Azure IoT Edge.

Чтобы устройство могло действовать в качестве шлюза, оно должно безопасно подключаться к своим подчиненным устройствам. Решение Azure IoT Edge позволяет настраивать безопасные подключения между устройствами с использованием инфраструктуры открытых ключей (PKI). В этом случае мы разрешаем подчиненному устройству подключаться к устройству IoT Edge, выполняющему роль прозрачного шлюза. Чтобы обеспечить достаточный уровень защиты, подчиненное устройство должно подтвердить удостоверение устройства шлюза. Эта проверка удостоверения не позволяет устройствам подключаться к потенциально вредоносным шлюзам.

Роль подчиненного устройства может выполнять любое приложение или платформа с идентификатором, созданным с помощью облачной службы Центра Интернета вещей Azure. Эти приложения часто используют пакет SDK для устройств Azure IoT. В качестве подчиненного устройства можно использовать даже приложение, запущенное на самом устройстве шлюза IoT Edge.

Вы можете создать любую инфраструктуру сертификата, обеспечивающую доверие, необходимое для топологии "устройство — шлюз". В этой статье предполагается та же настройка сертификата, что и для включения безопасности, обеспечиваемой сертификатами ЦС X.509, в Центре Интернета вещей. Она включает в себя сертификат ЦС X.509, связанный с определенным Центром Интернета вещей (корневой ЦС Центра Интернета вещей), ряд сертификатов, подписанных этим ЦС, и ЦС для устройства IoT Edge.

Примечание.

Под термином сертификат корневого ЦС, используемым в этих статьях, понимается общедоступный открытый сертификат цепочки PKI-сертификатов, который не обязательно является корневым центром сертификации для синдицированного центра сертификации. Во многих случаях фактически это открытый сертификат промежуточного ЦС.

Ниже приведены пошаговые инструкции по созданию сертификатов и их установке в нужных расположениях в шлюзе. Можно создать сертификаты с помощью любого компьютера и затем скопировать их на устройство IoT Edge.

Необходимые компоненты

Устройство Linux или Windows с установленным IoT Edge.

Если у вас нет устройства, его можно создать на виртуальной машине Azure. Выполните действия, описанные в разделе Развертывание первого модуля IoT Edge на виртуальном устройстве Linux, чтобы создать Центр Интернета вещей, создать виртуальную машину и настроить среду выполнения IoT Edge.

Настройка сертификата ЦС устройства

На всех шлюзах IoT Edge должен быть установлен сертификат ЦС устройства. Управляющая программа безопасности IoT Edge использует сертификат ЦС устройства IoT Edge для подписи сертификата ЦС рабочей нагрузки, который, в свою очередь, подписывает сертификат сервера для центра IoT Edge. Шлюз предоставляет сертификат своего сервера подчиненному устройству при инициировании подключения. Подчиненное устройство проверяет, является ли сертификат сервера частью цепочки сертификатов, которая объединяется с сертификатом корневого ЦС. В результате этого процесса подчиненное устройство получает подтверждение того, что шлюз предоставлен надежным источником. Дополнительные сведения см. в статье Описание использования сертификатов в Azure IoT Edge.

Снимок экрана: настройка сертификата шлюза.

Сертификат корневого ЦС и сертификат ЦС устройства (с закрытым ключом) должны присутствовать на устройстве шлюза IoT Edge и быть настроены в файле конфигурации IoT Edge. Помните, что в этом случае термин сертификат корневого ЦС означает самый верхний центр сертификации для этого сценария использования IoT Edge. Сертификат ЦС устройства шлюза и сертификаты подчиненных устройств должны быть сведены к одному и тому же корневому сертификату ЦС.

Совет

Процесс установки сертификата корневого ЦС и сертификата ЦС устройства на устройстве IoT Edge более подробно описан в разделе Управление сертификатами на устройствах IoT Edge.

Подготовьте следующие файлы:

  • Корневой сертификат ЦС
  • Сертификат ЦС устройства
  • Закрытый ключ ЦС устройства

В рабочих сценариях эти файлы следует создавать с помощью собственного центра сертификации. Для сценариев разработки и тестирования можно использовать демонстрационные сертификаты.

Создание демонстрационных сертификатов

Если у вас нет собственного центра сертификации и вы хотите использовать демонстрационные сертификаты, следуйте инструкциям в статье Создание демонстрационных сертификатов для тестирования функций устройства IoT Edge, чтобы создать свои файлы. На этой странице необходимо выполнить следующие действия.

  1. Для начала настройте скрипты для создания сертификатов на своем устройстве.
  2. Создайте сертификат корневого ЦС. В конце этих инструкций у вас будет корневой файл <path>/certs/azure-iot-test-only.root.ca.cert.pemсертификата ЦС.
  3. Создайте сертификаты ЦС устройства IoT Edge. В конце этих инструкций сертификат ЦС <path>/certs/iot-edge-device-ca-<cert name>-full-chain.cert.pem устройства будет иметь закрытый ключ <path>/private/iot-edge-device-ca-<cert name>.key.pem.

Копирование сертификатов на устройство

  1. Проверьте, соответствует ли сертификат требованиям к формату.

  2. Если вы создали сертификаты на другом компьютере, скопируйте их на устройство IoT Edge. Вы можете использовать USB-диск, службу, например Azure Key Vault, или функцию, например безопасную копию файлов.

  3. Переместите файлы в предпочтительный каталог для сертификатов и ключей. Используется /var/aziot/certs для сертификатов и /var/aziot/secrets ключей.

  4. Создайте сертификаты и каталоги ключей и задайте разрешения. Сертификаты и ключи должны храниться в предпочтительном /var/aziot каталоге. Используется /var/aziot/certs для сертификатов и /var/aziot/secrets ключей.

    # If the certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
  5. Измените владение и разрешения сертификатов и ключей.

    # Give aziotcs ownership to certificates
    # Read and write for aziotcs, read-only for others
    sudo chown -R aziotcs:aziotcs /var/aziot/certs
    sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;
    
    # Give aziotks ownership to private keys
    # Read and write for aziotks, no permission for others
    sudo chown -R aziotks:aziotks /var/aziot/secrets
     sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;
    

Настройка сертификатов на устройстве

  1. На устройстве IoT Edge откройте файл конфигурации: /etc/aziot/config.toml Если вы используете IoT Edge для Linux в Windows, необходимо подключиться к виртуальной машине EFLOW с помощью командлета Connect-EflowVm PowerShell.

    Совет

    Если файл конфигурации еще не существует на вашем устройстве, используйте файл /etc/aziot/config.toml.edge.template в качестве шаблона для его создания.

  2. Найдите параметр trust_bundle_cert. Раскомментируйте эту строку и укажите URI файла сертификата корневого ЦС на устройстве.

  3. [edge_ca] Найдите раздел файла. Раскомментируйте три строки в этом разделе и укажите URI файлов для сертификата и файлов ключей в качестве значений для следующих свойств:

    • cert: сертификат ЦС устройства
    • pk: закрытый ключ ЦС устройства
  4. Сохранить и закрыть файл.

  5. Примените изменения.

    sudo iotedge config apply
    

Развертывание edgeHub и маршрутизация сообщений

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

  • Модуль концентратора IoT Edge развернут на устройстве.

    При первой установке IoT Edge на устройство только один системный модуль запускается автоматически — агент IoT Edge. После создания первого развертывания для устройства второй системный модуль и центр IoT Edge также начинаются. Если модуль edgeHub не запущен на вашем устройстве, создайте развертывание для своего устройства.

  • В модуле концентратора IoT Edge настроены маршруты для обработки входящих сообщений от подчиненных устройств.

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

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

  1. Найдите нужный Центр Интернета вещей на портале Azure.

  2. Перейдите к устройствам в меню управления устройствами и выберите устройство IoT Edge, которое вы хотите использовать в качестве шлюза.

  3. Щелкните Set Modules (Настроить модули).

  4. На странице Модули можно добавить любые модули, которые требуется развернуть на устройстве шлюза. В рамках этой статьи мы разберем настройку и развертывание модуля edgeHub, который не нужно задавать явно на этой странице.

  5. Нажмите Далее: маршруты.

  6. На странице Маршруты убедитесь, что имеется маршрут для работы с сообщениями, поступающими от подчиненных устройств. Например:

    • Маршрут, отправляющий все сообщения в Центр Интернета вещей, как из модуля, так и из подчиненного устройства:

      • Имя: allMessagesToHub
      • Значение: FROM /messages/* INTO $upstream
    • Маршрут, отправляющий все сообщения со всех подчиненных устройств в Центр Интернета вещей:

      • Имя: allDownstreamToHub
      • Значение: FROM /messages/* WHERE NOT IS_DEFINED ($connectionModuleId) INTO $upstream

      Этот маршрут работает, поскольку, в отличие от сообщений от модулей IoT Edge, сообщения от подчиненных устройств не имеют связанного с ними идентификатора модуля. Использование в маршруте предложения WHERE позволяет фильтровать все сообщения с этим системным свойством.

      Дополнительные сведения о маршрутизации сообщений см. в разделе Объявление маршрутов.

  7. После создания маршрута или маршрутов нажмите Проверить и создать.

  8. На странице Отзыв и создание выберите Создать.

Открытие портов на устройстве шлюза

Для стандартных устройств IoT Edge не требуется выполнять какие-либо входящие подключения, так как все связи с Центром Интернета вещей выполняются через исходящие подключения. Устройства шлюзов, напротив, должны принимать сообщения со своих нижестоящих устройств. Если между подчиненными устройствами и устройством шлюза находится брандмауэр, то брандмауэр должен разрешать связь между этими устройствами.

Чтобы сценарий шлюза работал, хотя бы один из поддерживаемых протоколов Центра Интернета вещей должен быть открыт для входящего трафика с подчиненных устройств. Поддерживаемые протоколы: MQTT, AMQP, HTTPS, MQTT через WebSockets и AMQP через WebSockets.

Порт Протокол
8883 MQTT
5671 AMQP
443 HTTPS
MQTT+WS
AMQP+WS

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

Теперь, когда у вас есть устройство IoT Edge, настроенное в качестве прозрачного шлюза, необходимо настроить подчиненные устройства так, чтобы они доверяли шлюзу и отправляли ему сообщения. Чтобы выполнить следующие шаги по настройке сценария с прозрачным шлюзом, перейдите к разделу Аутентификация подчиненного устройства в Центре Интернета вещей.