Создание и подготовка устройств 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.
Инструкции отличаются на основе методологии, поэтому убедитесь, что вы находитесь на правильной вкладке вперед.
Для этого необходимо выполнить следующие задачи:
- Получение сведений о подготовке для доверенного платформенного модуля.
- Создайте отдельную регистрацию для устройства в экземпляре службы подготовки устройств Центр Интернета вещей.
- Установите среду выполнения IoT Edge и подключите устройство к Центру Интернета вещей.
Необходимые компоненты
Облачные ресурсы
- Активный Центр Интернета вещей
- Экземпляр службы подготовки устройств Центр Интернета вещей в Azure, связанный с центром Интернета вещей
- Если у вас нет экземпляра службы подготовки устройств, следуйте инструкциям в кратком руководстве по созданию новой службы подготовки устройств Центр Интернета вещей и связыванию центра Интернета вещей и служб подготовки устройств в кратком руководстве по Центр Интернета вещей службе подготовки устройств.
- После запуска службы подготовки устройств скопируйте значение области идентификатора на странице обзора. Это значение используется при настройке среды выполнения IoT Edge.
Требования к устройствам
Физическое устройство Linux, которое должно быть устройством IoT Edge.
Если вы являетесь производителем устройств, обратитесь к рекомендациям по интеграции доверенного платформенного модуля в производственный процесс.
Примечание.
TPM 2.0 требуется при использовании аттестации доверенного платформенного модуля со службой подготовки устройств.
При использовании доверенного платформенного модуля можно создавать только отдельные, а не групповые регистрации служб подготовки устройств.
Настройка устройства
Если вы используете физическое устройство Linux с TPM, нет дополнительных действий по настройке устройства.
Вы готовы продолжить.
Получение сведений о подготовке для доверенного платформенного модуля
В этом разделе описано, как создать средство, которое можно использовать для получения идентификатора регистрации и ключа подтверждения для доверенного платформенного модуля.
Войдите на устройство, а затем выполните действия, описанные в разделе "Настройка среды разработки Linux" для установки и сборки пакета SDK для устройств Интернета вещей Azure для C.
Выполните следующие команды, чтобы создать средство 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
В окне вывода отображается идентификатор регистрации устройства и ключ подтверждения. Скопируйте эти значения для последующего использования при создании отдельной регистрации для устройства в службе подготовки устройств.
После получения идентификатора регистрации и ключа подтверждения вы будете готовы продолжать работу.
Совет
Если вы не хотите использовать средства программного обеспечения TPM2 для получения информации, необходимо найти другой способ получения сведений о подготовке. Ключ подтверждения, уникальный для каждого микросхемы доверенного платформенного модуля, получен от производителя микросхем TPM, связанного с ним. Вы можете получить уникальный идентификатор регистрации для устройства доверенного платформенного модуля. Например, как показано выше, можно создать хэш SHA-256 ключа подтверждения.
Создание регистрации службы подготовки устройств
Используйте сведения о подготовке доверенного платформенного модуля для создания отдельной регистрации в службе подготовки устройств.
При создании регистрации в службе подготовки устройств у вас есть возможность объявить начальное состояние двойника устройства. В двойнике устройства можно задать теги для группирования устройств по любой метрике, используемой в решении, например региону, среде, расположению или типу устройства. Эти теги используются для создания автоматических развертываний.
Совет
Действия, описанные в этой статье, предназначены для портал Azure, но вы также можете создавать отдельные регистрации с помощью Azure CLI. Дополнительные сведения см. в разделе az iot dps enrollment. В команде интерфейса командной строки с помощью флага edge-enabled укажите, что регистрация предназначена для устройства IoT Edge.
В портал Azure перейдите к экземпляру службы подготовки устройств Центр Интернета вещей.
В разделе Параметрывыберите Управление регистрациями.
Выберите " Добавить отдельную регистрацию", а затем выполните следующие действия, чтобы настроить регистрацию:
Для параметра Механизм выберите TPM.
Укажите ключ подтверждения и идентификатор регистрации, скопированные на виртуальной машине или физическом устройстве.
Укажите идентификатор устройства, если вы хотите. Если не указать идентификатор устройства, используется идентификатор регистрации.
Выберите True , чтобы объявить, что виртуальная машина или физическое устройство — это устройство IoT Edge.
Выберите связанный центр Интернета вещей, к которому нужно подключить устройство, или выберите ссылку на новую Центр Интернета вещей. Можно выбрать несколько центров, и устройство будет назначено одному из них в соответствии с выбранной политикой назначения.
При необходимости добавьте значение тега в исходное состояние двойника устройства. Теги можно использовать для указания групп устройств для развертывания модуля. Дополнительные сведения см. в разделе Развертывание модулей 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. Если вы используете более раннюю версию, рекомендуем установить последнее исправление или выполнить обновление до него, так как более старые версии больше не поддерживаются.
Предоставление облачного удостоверения устройству
После установки среды выполнения на устройстве настройте устройство с информацией, которую он использует для подключения к службе подготовки устройств и Центр Интернета вещей.
Сведения об идентификаторе службы подготовки устройств и идентификаторе регистрации устройства, собранных ранее.
Откройте файл конфигурации на устройстве IoT Edge.
sudo nano /etc/iotedge/config.yaml
Найдите в нем раздел конфигурации подготовки. Раскомментируйте строки для подготовки доверенного платформенного модуля и убедитесь, что все остальные строки подготовки закомментированы.
Строка
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
Обновите значения
scope_id
иregistration_id
с помощью службы подготовки устройств и сведений об устройстве. Этоscope_id
значение — область идентификатора на странице обзора экземпляра службы подготовки устройств.При необходимости используйте строки
always_reprovision_on_startup
илиdynamic_reprovisioning
для настройки поведения повторной подготовки устройства. Если устройство настроено для повторной подготовки при запуске, оно всегда будет пытаться выполнить подготовку сначала с помощью DPS, а затем обратится к резервному методу подготовки при сбое. Если устройство настроено для динамической повторной подготовки, IoT Edge (и все модули) перезапустится и перепроименуется, если обнаружено событие повторной подготовки, например, если устройство перемещается из одной Центр Интернета вещей в другую. В частности, IoT Edge проверяет наличиеbad_credential
илиdevice_disabled
ошибки из пакета SDK для обнаружения события повторной подготовки. Чтобы активировать это событие вручную, отключите устройство в Центр Интернета вещей. Дополнительные сведения см. в разделе Основные понятия повторной подготовки устройств в Центре Интернета вещей.Сохранить и закрыть файл.
Предоставление доступа IoT Edge доверенному платформенному модулю
Чтобы провести автоматическую подготовку устройства, среда выполнения IoT Edge должна иметь доступ к доверенному платформенному модулю.
Это можно сделать, переопределив параметры systemd, чтобы назначить службе iotedge
привилегии суперпользователя. Если вы не хотите повышать привилегии, доступ можно предоставить вручную.
Создайте новое правило, которое предоставит среде выполнения IoT Edge доступ к
tpm0
иtpmrm0
.sudo touch /etc/udev/rules.d/tpmaccess.rules
Откройте файл правил.
sudo nano /etc/udev/rules.d/tpmaccess.rules
Скопируйте следующие сведения о доступе в файл правил. Возможно, на
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"
Сохраните и закройте файл.
udev
Активируйте систему для оценки нового правила./bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
Убедитесь, что правило было успешно применено.
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
.Перезапустите среду выполнения 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.