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


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

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

Внимание

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

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

Для этого необходимо выполнить следующие задачи:

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

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

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

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

  • Активный Центр Интернета вещей
  • Экземпляр службы подготовки устройств Центр Интернета вещей в Azure, связанный с центром Интернета вещей

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

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

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

Создание регистрации в Службе подготовки устройств к добавлению в Центр Интернета вещей

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

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

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

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

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

Совет

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

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

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

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

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

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

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

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

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

      {
         "tags": {
            "environment": "test"
         },
         "properties": {
            "desired": {}
         }
      }
      
    6. Выберите Сохранить.

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

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

Установка 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 драйвера ведения журнала в качестве механизма ведения журнала. Дополнительные сведения о настройке ведения журнала см . в контрольном списке развертывания рабочей среды.

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

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

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

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

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

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

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

    Строка provisioning: не должна содержать предшествующих пробелов, а вложенные элементы должны иметь отступ в два пробела.

    # DPS TPM provisioning configuration
    provisioning:
      source: "dps"
      global_endpoint: "https://global.azure-devices-provisioning.net"
      scope_id: "PASTE_YOUR_SCOPE_ID_HERE"
      attestation:
        method: "symmetric_key"
        registration_id: "PASTE_YOUR_REGISTRATION_ID_HERE"
        symmetric_key: "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE"
    
    # always_reprovision_on_startup: true
    # dynamic_reprovisioning: true
    
  3. Обновите значения параметров scope_id, registration_id и symmetric_key с помощью сведений о DPS и устройстве.

  4. При необходимости используйте строки always_reprovision_on_startup или dynamic_reprovisioning для настройки поведения повторной подготовки устройства. Если устройство настроено для повторной подготовки при запуске, оно всегда будет пытаться выполнить подготовку сначала с помощью DPS, а затем обратится к резервному методу подготовки при сбое. Если устройство настроено для динамической повторной подготовки, IoT Edge (и все модули) перезапустится и перепроименуется, если обнаружено событие повторной подготовки, например, если устройство перемещается из одной Центр Интернета вещей в другую. В частности, IoT Edge проверяет наличие bad_credential или device_disabled ошибки из пакета SDK для обнаружения события повторной подготовки. Чтобы активировать это событие вручную, отключите устройство в Центр Интернета вещей. Дополнительные сведения см. в разделе Основные понятия повторной подготовки устройств в Центре Интернета вещей.

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

    sudo systemctl restart iotedge
    

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

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

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

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

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

systemctl status iotedge

Проверьте журналы службы.

journalctl -u iotedge --no-pager --no-full

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

iotedge list

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

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