Поделиться через


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

Область применения:да значок IoT Edge 1.1

Важно!

IoT Edge 1.1 дата окончания поддержки — 13 декабря 2022 г. Чтобы получить сведения о поддержке определенного продукта, службы, технологии или API, перейдите на страницу Политика жизненного цикла поддержки Майкрософт. Дополнительные сведения об обновлении до последней версии IoT Edge см. в разделе Обновление IoT Edge.

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Создайте описательный идентификатор устройства. Запишите этот идентификатор устройства, так как он будет использоваться позже.
    • Установите флажок IoT Edge Устройство.
    • В качестве типа проверки подлинности выберите Ключ содержимого.
    • Для автоматического создания ключей проверки подлинности и подключения нового устройства к центру используйте параметры по умолчанию.
  4. Щелкните Сохранить.

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

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

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

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

Снимок экрана: просмотр устройств в портал Azure Центр Интернета вещей.

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

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

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

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

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

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

Важно!

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

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

  • 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 регулируется условиями лицензии, содержащейся в самих пакетах (в 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 драйвера ведения журнала в качестве механизма ведения журнала. Дополнительные сведения о конфигурации ведения журнала см. в разделе Контрольный список развертывания в рабочей среде.

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

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

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

    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, найдите и включите соответствующие функции и соответствующим образом перестройте ядро. После развертывания нового измененного ядра снова запустите скрипт check-config, чтобы убедиться, что все необходимые функции успешно включены.

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

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

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

Установите IoT Edge версии 1,1.* вместе с пакетом libiothsm-std:

sudo apt-get update; \
  sudo apt-get install iotedge

Примечание

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

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

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

Откройте файл конфигурации на устройстве IoT Edge.

sudo nano /etc/iotedge/config.yaml

Найдите конфигурации подготовки файла и раскомментируйте раздел Manual provisioning configuration using a connection string (Настройка подготовки вручную с помощью строки подключения).

# Manual provisioning configuration using a connection string
provisioning:
source: "manual"
device_connection_string: "ADD_DEVICE_CONNECTION_STRING_HERE"

Замените значение device_connection_string строкой подключения для устройства IoT Edge. Убедитесь, что все остальные разделы подготовки закомментированы. Убедитесь, что перед строкой provisioning: нет пробелов, а вложенные элементы отображаются с отступом в два пробела.

Чтобы вставить содержимое буфера обмена в Nano, нажмите клавиши Shift+Right Click или Shift+Insert.

Сохраните файл и закройте его.

CTRL + X, Y, Enter

Когда введете сведения о подготовке в файл конфигурации, перезапустите управляющую программу:

sudo systemctl restart iotedge

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

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

Совет

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

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

sudo systemctl status iotedge

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

journalctl -u iotedge

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

sudo iotedge check

Совет

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

Примечание

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

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

Не удалось проверить текущее состояние контейнера EdgeHub

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

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

sudo iotedge list

При создании нового устройства IoT Edge отобразится код состояния 417 -- The device's deployment configuration is not set на портале Azure. Это состояние является нормальным и означает, что устройство готово к развертыванию модуля.

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

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

  • Установка IoT Edge в автономном режиме
  • Установка версии релиз-кандидата

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

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

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

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

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

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

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

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

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

      curl -L iotedge_link_here -o iotedge.deb && sudo apt-get install ./iotedge.deb
      

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

Удаление IoT Edge

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

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

sudo apt-get autoremove iotedge

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

sudo docker ps -a

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

sudo docker rm -f <container name>

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

sudo apt-get autoremove --purge moby-engine