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

Применимо к:IoT Edge 1.5 флажок IoT Edge 1.5

Внимание

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

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

Ниже приведены основные задачи.

  1. Создайте отдельную регистрацию для одного устройства или группы для набора устройств.
  2. Установите среду выполнения IoT Edge и подключитесь к Центр Интернета вещей.

Совет

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

Аттестация симметричного ключа — это простой способ аутентификации устройства с использованием экземпляра службы управления устройствами. Этот метод — это интерфейс Hello world для разработчиков, которые не знакомы с подготовкой устройств или не имеют строгих требований к безопасности. Аттестация устройств с сертификатами TPM или X.509 более безопасна, и ее следует использовать для более строгих требований безопасности.

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

Облачные ресурсы

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

Используйте физическое или виртуальное Linux-устройство в качестве устройства IoT Edge.

Определите уникальныйидентификатор регистрации для идентификации каждого устройства. Используйте MAC-адрес, серийный номер или любую уникальную информацию с устройства. Например, объедините MAC-адрес и серийный номер для формирования идентификатора регистрации, например sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6. Допустимые символы — буквы нижнего регистра, цифры и дефис (-).

Создать регистрацию в DPS

Создайте запись для подключения одного или нескольких устройств через DPS.

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

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

Дополнительные сведения о регистрации в службе подготовки устройств см. в статье "Как управлять регистрацией устройств".

Создание индивидуальной регистрации DPS

Совет

Действия, описанные в этой статье, предназначены для портала Azure, но вы также можете создавать отдельные регистрации с помощью Azure CLI. Дополнительные сведения см. в разделе az iot dps enrollment. В рамках команды CLI используйте флаг edge-enabled, чтобы указать, что регистрация предназначена для устройства IoT Edge.

  1. На портале Azure перейдите к вашему экземпляру службы регистрации устройств Центр Интернета вещей.

  2. В разделе Параметрывыберите Управление регистрациями.

  3. Выберите Добавить отдельную регистрацию и выполните следующие действия для настройки регистрации.

    1. Для параметра Механизм выберите Симметричный ключ.

    2. Укажите уникальный идентификатор регистрации для своего устройства.

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

    4. Выберите True, чтобы объявить, что регистрация предназначена для устройства IoT Edge.

    5. При необходимости добавьте значение тега в параметр Первоначальное состояние двойника устройства. Теги можно использовать для указания групп устройств для развертывания модуля. Например:

      {
         "tags": {
            "environment": "test"
         },
         "properties": {
            "desired": {}
         }
      }
      
    6. Нажмите Сохранить.

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

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

Установка IoT Edge

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

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

Внимание

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

Для поддерживаемых платформ операционных систем уровня 2 пакеты установки доступны в выпусках Azure IoT Edge. Посмотрите этапы установки в автономная установка или установка определенной версии (необязательно).

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

  • 24.04:

    wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 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
    

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

Примечание.

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

Установка движка контейнеров

Azure IoT Edge использует среду выполнения контейнера, совместимую с OCI. В рабочих сценариях используйте подсистему Moby. Модуль Moby — это обработчик контейнеров, официально поддерживаемый IoT Edge. Образы контейнеров Docker CE и Docker EE работают с средой выполнения Moby. Если вы используете оснастки Ubuntu Core, Canonical обеспечивает поддержку оснастки Docker и поддерживает её для промышленных сценариев.

Установите движок Moby.

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

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

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

  1. Создайте или измените существующий файл конфигурации управляющей программы Docker:

    sudo nano /etc/docker/daemon.json
    
  2. Задайте драйвер ведения журнала по умолчанию драйверу local ведения журнала, как показано в примере:

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

    sudo systemctl restart docker
    

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

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

Примечание.

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

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

Совет

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

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

  • 22.04:
    sudo apt-get update; \
       sudo apt-get install aziot-edge
    

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

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

Подготовьте следующие сведения:

  • Значение области идентификаторов DPS.
  • Идентификатор регистрации устройства, который вы создали.
  • Введите первичный ключ, полученный при индивидуальной регистрации, или производный ключ в случае групповой регистрации устройств.

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

sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml

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

sudo nano /etc/aziot/config.toml
  1. Найдите в файле раздел Provisioning. Раскомментируйте строки для конфигурации DPS с симметричным ключом и убедитесь, что все остальные строки конфигурации закомментированы.

    # DPS provisioning with symmetric key
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "PASTE_YOUR_SCOPE_ID_HERE"
    
    # Uncomment to send a custom payload during DPS registration
    # payload = { uri = "PATH_TO_JSON_FILE" }
    
    [provisioning.attestation]
    method = "symmetric_key"
    registration_id = "PASTE_YOUR_REGISTRATION_ID_HERE"
    
    symmetric_key = { value = "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE" }
    
    # auto_reprovisioning_mode = Dynamic
    
  2. Обновите значения параметров id_scope, registration_id и symmetric_key с помощью сведений о DPS и устройстве.

    Параметр симметричного ключа может принимать встроенный ключ, URI файла или URI PKCS#11. Раскомментируйте только одну симметричную ключевую строку на основе используемого формата. Если вы используете встроенный ключ, используйте ключ в кодировке Base64, как в примере. При использовании URI файла файл должен содержать необработанные байты ключа.

    Если вы используете любые URI PKCS#11, найдите раздел PKCS#11 в файле конфигурации и введите сведения о конфигурации PKCS#11.

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

  3. При необходимости найдите раздел режима автоматической повторной подготовки файла. Используйте параметр auto_reprovisioning_mode, чтобы задать поведение повторной конфигурации устройства. Dynamic — повторное конфигурирование, когда устройство обнаруживает, что его можно переместить из одного узла Центр Интернета вещей в другой. Это значение по умолчанию. AlwaysOnStartup — переподключение при перезагрузке устройства или сбое, вызывающем перезапуск демонов. OnErrorOnly — никогда не запускайте автоматическое переподключение устройства. Каждый режим имеет неявный резервный вариант переподготовки устройства, если устройство не может подключиться к Центр Интернета вещей во время настройки удостоверений из-за ошибок подключения. Дополнительные сведения см. в разделе концепции повторного предоставления устройств Центр Интернета вещей.

  4. При необходимости уберите комментарий у параметра payload, чтобы указать путь к файлу JSON на вашем компьютере. Содержимое файла отправляется в DPS в качестве дополнительных данных при регистрации устройства. Это полезно для настраиваемого выделения. Например, если вы хотите автоматически распределять устройства, основываясь на идентификаторе модели IoT Plug and Play, без вмешательства человека.

  5. Сохранить и закрыть файл.

  6. Примените изменения конфигурации, внесенные на устройстве.

    sudo iotedge config apply
    

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

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

Убедитесь, что используется индивидуальная регистрация, созданная в службе подготовки устройств. Перейдите к службе подготовки вашего устройства на портале Azure. Откройте данные о записи для созданной вами индивидуальной записи. Состояние регистрации назначено, а идентификатор устройства указан.

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

  1. Проверьте состояние службы IoT Edge.

    sudo iotedge system status
    
  2. Просмотр журналов служб.

    sudo iotedge system logs
    
  3. Просмотрите список запущенных модулей.

    sudo iotedge list
    

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

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