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


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

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

Внимание

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

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

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

  • Автоматическая подготовка устройства Linux с физическим оборудованием доверенного платформенного модуля. Примером является infineon OPTIGA™ TPM SLB 9670.
  • Автоматическая подготовка виртуальной машины Linux с имитацией доверенного платформенного модуля, работающего на компьютере разработки Windows с поддержкой Hyper-V. Мы рекомендуем использовать эту методологию только в качестве сценария тестирования. Имитированный TPM не обеспечивает ту же безопасность, что и физический TPM.

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

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

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

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

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

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

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

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

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

Примечание.

TPM 2.0 требуется при использовании аттестации доверенного платформенного модуля со службой подготовки устройств.

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

Настройка устройства

Если вы используете физическое устройство Linux с TPM, нет дополнительных действий по настройке устройства.

Вы готовы продолжить.

Получение сведений о подготовке для доверенного платформенного модуля

В этом разделе описано, как создать средство, которое можно использовать для получения идентификатора регистрации и ключа подтверждения для доверенного платформенного модуля.

  1. Войдите на устройство, а затем выполните действия, описанные в разделе "Настройка среды разработки Linux" для установки и сборки пакета SDK для устройств Интернета вещей Azure для C.

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

    cd azure-iot-sdk-c/cmake
    cmake -Duse_prov_client:BOOL=ON ..
    cd provisioning_client/tools/tpm_device_provision
    make
    sudo ./tpm_device_provision
    
  3. В окне вывода отображается идентификатор регистрации устройства и ключ подтверждения. Скопируйте эти значения для последующего использования при создании отдельной регистрации для устройства в службе подготовки устройств.

После получения идентификатора регистрации и ключа подтверждения вы будете готовы продолжать работу.

Совет

Если вы не хотите использовать средства программного обеспечения TPM2 для получения информации, необходимо найти другой способ получения сведений о подготовке. Ключ подтверждения, уникальный для каждого микросхемы доверенного платформенного модуля, получен от производителя микросхем TPM, связанного с ним. Вы можете получить уникальный идентификатор регистрации для устройства доверенного платформенного модуля. Например, как показано выше, можно создать хэш SHA-256 ключа подтверждения.

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

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

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

Совет

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

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

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

  3. Выберите " Добавить отдельную регистрацию", а затем выполните следующие действия, чтобы настроить регистрацию:

    1. Для параметра Механизм выберите TPM.

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

    3. Укажите идентификатор устройства, если вы хотите. Если не указать идентификатор устройства, используется идентификатор регистрации.

    4. Выберите True , чтобы объявить, что виртуальная машина или физическое устройство — это устройство IoT Edge.

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

    6. При необходимости добавьте значение тега в исходное состояние двойника устройства. Теги можно использовать для указания групп устройств для развертывания модуля. Дополнительные сведения см. в разделе Развертывание модулей IoT Edge в большом масштабе.

    7. Выберите Сохранить.

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

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

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

  1. Сведения об идентификаторе службы подготовки устройств и идентификаторе регистрации устройства, собранных ранее.

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

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

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

    # DPS TPM provisioning configuration
    provisioning:
      source: "dps"
      global_endpoint: "https://global.azure-devices-provisioning.net"
      scope_id: "SCOPE_ID_HERE"
      attestation:
        method: "tpm"
        registration_id: "REGISTRATION_ID_HERE"
    
    # always_reprovision_on_startup: true
    # dynamic_reprovisioning: false
    
  4. Обновите значения scope_id и registration_id с помощью службы подготовки устройств и сведений об устройстве. Это scope_id значение — область идентификатора на странице обзора экземпляра службы подготовки устройств.

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

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

Предоставление доступа IoT Edge доверенному платформенному модулю

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

Это можно сделать, переопределив параметры systemd, чтобы назначить службе iotedge привилегии суперпользователя. Если вы не хотите повышать привилегии, доступ можно предоставить вручную.

  1. Создайте новое правило, которое предоставит среде выполнения IoT Edge доступ к tpm0 и tpmrm0.

    sudo touch /etc/udev/rules.d/tpmaccess.rules
    
  2. Откройте файл правил.

    sudo nano /etc/udev/rules.d/tpmaccess.rules
    
  3. Скопируйте следующие сведения о доступе в файл правил. Возможно, на tpmrm0 устройствах, использующих ядро до версии 4.12, может не присутствовать. Устройства, которые не имеют tpmrm0 этого правила, будут безопасно игнорировать это правило.

    # allow iotedge access to tpm0
    KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="iotedge", MODE="0600"
    KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="iotedge", MODE="0600"
    
  4. Сохраните и закройте файл.

  5. udev Активируйте систему для оценки нового правила.

    /bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
    
  6. Убедитесь, что правило было успешно применено.

    ls -l /dev/tpm*
    

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

    crw------- 1 iotedge root 10, 224 Jul 20 16:27 /dev/tpm0
    crw------- 1 iotedge root 10, 224 Jul 20 16:27 /dev/tpmrm0
    

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

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

    sudo systemctl restart iotedge
    

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

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

sudo systemctl restart iotedge

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

sudo systemctl status iotedge

Изучите журналы управляющей программы.

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

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

sudo systemctl daemon-reload

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

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

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

iotedge list

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

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

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

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