Создание и подготовка устройства IoT Edge в Linux с помощью симметричного ключа

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

В этой статье содержатся комплексные инструкции по регистрации и подготовке устройства Linux IoT Edge, включая установку IoT Edge.

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

  • Имя узла центра Интернета вещей
  • Идентификатор устройства
  • Сведения о проверке подлинности для подключения к Центр Интернета вещей

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

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

    Этот метод проверки подлинности быстрее настроить, но он не такой безопасный.

  • Самозаверяющий сертификат X.509. Вы создаете два сертификата удостоверения X.509 и размещаете их на устройстве. При создании нового удостоверения устройства в Центре Интернета вещей вы предоставляете отпечатки обоих сертификатов. Когда устройство проходит проверку подлинности в Центре Интернета вещей, оно предоставляет один сертификат, и Центр Интернета вещей проверяет, соответствует ли сертификат своему отпечатку.

    Этот метод проверки подлинности является более безопасным и рекомендуется для рабочих сценариев.

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

Примечание

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

Предварительные требования

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

Средства управления устройствами

Для регистрации устройства можно использовать портал Azure, Visual Studio Code или Azure CLI. Каждая служебная программа имеет собственные предварительные требования или может потребоваться установить:

Центр Интернета вещей (бесплатно или уровня "Стандартный") в подписке Azure.

Требования к устройствам

Устройство Linux x64, ARM32 или ARM64.

Корпорация Майкрософт публикует пакеты установки для различных операционных систем.

Последние сведения о том, какие операционные системы в настоящее время поддерживаются для рабочих сценариев, см. в статье Azure IoT Edge поддерживаемых систем.

Расширения Visual Studio Code

Если вы используете Visual Studio Code, существуют полезные расширения Интернета вещей Azure, которые упростит процесс создания устройств и управления ими.

Установите расширения Azure IoT Edge и Центр Интернета вещей Azure:

Зарегистрировать устройство

Для регистрации устройства можно использовать портал Azure, Visual Studio Code или Azure CLI в зависимости от ваших предпочтений.

В Центре Интернета вещей на портале Azure устройства IoT Edge создаются и администрируются независимо от других устройств Интернета вещей, не поддерживающих IoT Edge.

  1. Войдите на портал Azure и перейдите к своему Центру Интернета вещей.

  2. В левой области выберите Устройства в меню, а затем выберите Добавить устройство.

  3. На странице Создание устройства введите приведенные ниже сведения:

    • Создайте описательный идентификатор устройства, например my-edge-device-1 (все в нижнем регистре). Скопируйте этот идентификатор устройства, так как вы будете использовать его позже.
    • Установите флажок IoT Edge Устройство.
    • В качестве типа проверки подлинности выберите Ключ содержимого.
    • Используйте параметры по умолчанию для автоматического создания ключей проверки подлинности, которые подключают новое устройство к центру.
  4. Щелкните Сохранить.

Новое устройство должно появиться в списке в Центре Интернета вещей.

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

Просмотр зарегистрированных устройств и получение сведений о подготовке

Устройствам, использующим проверку подлинности с симметричным ключом, требуются строки подключения для завершения установки и подготовки среды выполнения IoT Edge. Строка подключения создается для устройства IoT Edge при создании устройства. Для Visual Studio Code и Azure CLI строка подключения находится в выходных данных JSON. Если вы используете портал Azure для создания устройства, строку подключения можно найти на самом устройстве. При выборе устройства в Центре Интернета вещей оно отображается как Primary connection string на странице устройства.

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

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

  1. На странице Устройства выберите IoT Edge идентификатор устройства из списка.
  2. Скопируйте значение в поле Основная строка подключения или Дополнительная строка подключения. Обе клавиши будут работать.

Установка Edge Интернета вещей

В этом разделе вы подготовите виртуальную машину Linux или физическое устройство к IoT Edge. Затем установите IoT Edge.

Выполните следующие команды, чтобы добавить репозиторий пакетов, а затем добавьте ключ подписи пакета Майкрософт в список доверенных ключей.

Важно!

30 июня 2022 г. Raspberry Pi OS Stretch была выведена из списка поддержки ОС уровня 1. Чтобы избежать потенциальных уязвимостей системы безопасности, обновите ОС узла до Bullseye.

Установку можно выполнить с помощью нескольких команд. Откройте терминал и выполните следующие команды:

  • 22.04:

    wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 20.04:

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 18.04:

    wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

Дополнительные сведения о версиях операционной системы см. в статье Поддерживаемые платформы Azure IoT Edge.

Примечание

Использование программных пакетов Azure IoT Edge регулируется условиями лицензии, содержащейся в самих пакетах (в usr/share/doc/{package-name} или в каталоге LICENSE). Прежде чем использовать пакет, ознакомьтесь с условиями лицензии. Установка и использование пакета означают, что вы принимаете эти условия. Если вы с ними не согласны, не используйте пакет.

Установка платформы контейнеров

Azure IoT Edge использует среду выполнения контейнеров, совместимую с OCI. В рабочих сценариях рекомендуется использовать подсистему Moby. Модуль Moby является единственным обработчиком контейнеров, официально поддерживаемым IoT Edge. Образы контейнеров Docker (Community Edition или Enterprise Edition) совместимы со средой выполнения Moby.

Установите модуль Moby.

sudo apt-get update; \
  sudo apt-get install moby-engine

По умолчанию подсистема контейнеров Moby не устанавливает ограничения размера журнала контейнера. Со временем это может привести к заполнению устройства журналами и исчерпанию дискового пространства. Однако вы можете настроить локальное отображение журнала, хотя это необязательно. Дополнительные сведения о конфигурации ведения журнала см. в разделе Контрольный список развертывания в рабочей среде.

Ниже показано, как настроить контейнер для использования local драйвера ведения журнала в качестве механизма ведения журнала.

  1. Создайте (если файл еще не существует) или откройте файл конфигурации управляющей программы Docker по адресу /etc/docker/daemon.json.

  2. Задайте драйвер ведения журнала по умолчанию для local драйвера ведения журнала, как показано в примере ниже.

       {
          "log-driver": "local"
       }
    
  3. Перезапустите подсистему контейнеров, чтобы изменения вступили в силу.

    sudo systemctl restart docker
    

    Совет

    Если при установке обработчика контейнеров Moby возникают ошибки, проверьте ядро Linux на совместимость Moby. Некоторые производители встраиваемых устройств поставляют образы устройств, которые содержат нестандартные ядра Linux, без функций, необходимых для совместимости с обработчиком контейнеров. Выполните следующую команду, которая использует скрипт check-config, предоставленный Moby, для проверки конфигурации ядра:

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    Просмотрите выходные данные скрипта и убедитесь, что в разделах Generally Necessary и Network Drivers включены все элементы. Если функции отсутствуют, включите их, перестроив ядро из источника и выбрав связанные модули для включения в соответствующие .config ядра. Аналогичным образом, если вы используете генератор конфигурации ядра, например defconfig или menuconfig, найдите и включите соответствующие функции и перестройте ядро соответствующим образом. После развертывания нового измененного ядра снова запустите скрипт проверка-config, чтобы убедиться, что все необходимые функции успешно включены.

Установка среды выполнения IoT Edge

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

Примечание

Начиная с версии 1.2 служба удостоверений Интернета вещей обрабатывает подготовку удостоверений и управление ими для IoT Edge и других компонентов устройств, которым необходимо взаимодействовать с Центр Интернета вещей.

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

Совет

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

Установите последнюю версию IoT Edge и пакет службы удостоверений Интернета вещей (если вы еще не обновлены):

  • 22.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    
  • 20.04 или 18.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge defender-iot-micro-agent-edge
    

Дополнительный defender-iot-micro-agent-edge пакет включает Microsoft Defender для микроагента безопасности Интернета вещей, который обеспечивает конечную точку видимости управления состоянием безопасности, уязвимостей, обнаружения угроз, управления парком и многого другого для защиты устройств IoT Edge. Рекомендуется установить микроагент вместе с агентом Edge, чтобы обеспечить мониторинг безопасности и усиление защиты устройств Edge. Дополнительные сведения о Microsoft Defender для Интернета вещей см. в статье Что такое Microsoft Defender для Интернета вещей для разработчиков устройств.

Предоставление облачного удостоверения устройству

Теперь, когда подсистема контейнеров и среда выполнения IoT Edge установлены на устройстве, вы можете настроить устройство с его облачными удостоверениями и сведениями о проверке подлинности.

Вы можете быстро настроить IoT Edge устройство с проверкой подлинности с симметричным ключом с помощью следующей команды:

sudo iotedge config mp --connection-string 'PASTE_DEVICE_CONNECTION_STRING_HERE'

Эта iotedge config mp команда создает файл конфигурации на устройстве и вводит строку подключения в файл конфигурации.

  1. Примените изменения конфигурации.

    sudo iotedge config apply
    
  2. Чтобы просмотреть файл конфигурации, его можно открыть:

    sudo nano /etc/aziot/config.toml
    

Развертывание модулей

Чтобы развернуть модули IoT Edge, перейдите в Центр Интернета вещей в портал Azure, а затем:

  1. Выберите Устройства в меню Центр Интернета вещей.

  2. Выберите устройство, чтобы открыть его страницу.

  3. Перейдите на вкладку Set Modules (Задать модули ).

  4. Так как мы хотим развернуть IoT Edge модулях по умолчанию (edgeAgent и edgeHub), нам не нужно добавлять модули в эту панель, поэтому в нижней части выберите Просмотр и создание.

  5. Вы увидите подтверждение JSON для модулей. Выберите Создать , чтобы развернуть модули.

Дополнительные сведения см. в разделе Развертывание модуля.

Проверка успешной настройки

Убедитесь, что среда выполнения успешно установлена и настроена на устройстве IoT Edge.

Совет

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

  1. Убедитесь, что системная служба IoT Edge работает.

    sudo iotedge system status
    

    Успешный ответ о состоянии показывает, что службы запущены aziot или готовы.

  2. Если нужно устранить неполадки со службой, извлеките журналы службы.

    sudo iotedge system logs
    
  3. Используйте инструмент check для проверки конфигурации и состояния соединения устройства.

    sudo iotedge check
    

    Вы можете ожидать диапазон ответов, которые могут включать ОК (зеленый цвет), Предупреждение (желтый) или Error (красный).

    Снимок экрана: примеры ответов от команды проверка.

    Совет

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

    Примечание

    На недавно подготовленном устройстве может появиться ошибка, связанная с IoT Edge Hub:

    × готовности к работе: каталог хранилища Центра Edge сохраняется в файловой системе узла — ошибкаНе удалось проверка текущее состояние контейнера edgeHub

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

    Кроме того, вы можете увидеть код состояния как 417 -- The device's deployment configuration is not set. После развертывания модулей это состояние изменится.

  4. После первого запуска службы можно видеть, что работает только модуль edgeAgent. Модуль edgeAgent запускается по умолчанию и позволяет установить и запустить любые дополнительные модули, развертываемые на устройстве.

    Убедитесь, что устройство и модули развернуты и запущены, просмотрев страницу устройства в портал Azure.

    Снимок экрана: развертывание модулей IoT Edge и подтверждение выполнения в портал Azure.

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

    sudo iotedge list
    

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

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

  • Установка IoT Edge в автономном режиме
  • Установка версии-кандидата выпуска

Выполните действия, описанные в этом разделе, если вы хотите установить определенную версию среды выполнения azure IoT Edge, которая недоступна через диспетчер пакетов. Список пакетов Майкрософт содержит только ограниченный набор последних версий и их подверсий, поэтому эти действия предназначены для всех, кто хочет установить более старую версию или версию релиз-кандидат.

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

Примечание

Если на устройстве в данный момент имеется IoT Edge версии 1.1 или ниже, удалите пакеты iotedge и libiothsm-std, прежде чем выполнять действия, описанные в этом разделе. Дополнительные сведения см. в статье Обновление версии 1.0 или 1.1 до последней версии.

  1. Перейдите к выпускам Azure IoT Edge и найдите целевую версию выпуска.

  2. Разверните раздел Ресурсы для этой версии.

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

    1. Найдите файл aziot-identity-service, соответствующий архитектуре устройства IoT Edge. Щелкните правой кнопкой мыши ссылку на файл и скопируйте ее адрес.

    2. Используйте скопированную ссылку в следующей команде, чтобы установить эту версию службы идентификации.

      curl -L <identity service link> -o aziot-identity-service.deb && sudo apt-get install ./aziot-identity-service.deb
      
    3. Найдите файл aziot-edge, соответствующий архитектуре устройства IoT Edge. Щелкните правой кнопкой мыши ссылку на файл и скопируйте ее адрес.

    4. Используйте скопированную ссылку в следующей команде, чтобы установить эту версию IoT Edge.

      curl -L <iotedge link> -o aziot-edge.deb && sudo apt-get install ./aziot-edge.deb
      

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

Удаление IoT Edge

Чтобы удалить файлы установки IoT Edge с устройства, используйте приведенные ниже команды.

Удалите среду выполнения IoT Edge.

sudo apt-get autoremove --purge aziot-edge

Оставьте флаг, --purge если вы планируете переустановить IoT Edge и использовать те же сведения о конфигурации в будущем. Флаги --purge удаляют все файлы, связанные с IoT Edge, включая файлы конфигурации.

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

sudo docker ps -a

Удалите контейнеры с устройства, включая два контейнера в среде выполнения.

sudo docker rm -f <container name>

Наконец, удалите среду выполнения контейнера с устройства.

sudo apt-get autoremove --purge moby-engine