Создание и подготовка устройств IoT Edge в масштабе с помощью доверенного платформенного модуля в Linux
Область применения: IoT Edge 1.5 IoT Edge 1.4
Внимание
Поддерживаются выпуски IoT Edge 1.5 LTS и IoT Edge 1.4 LTS. IoT Edge 1.4 LTS заканчивается жизнью 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.
В этой статье приведены инструкции по автоматической подготовке устройства Azure IoT Edge для Linux с помощью доверенного платформенного модуля (TPM). Вы можете автоматически подготовить устройства IoT Edge с помощью службы подготовки устройств Центр Интернета вещей Azure. Если вы не знакомы с процессом автоматической подготовки, ознакомьтесь с обзором подготовки, прежде чем продолжить.
В этой статье описаны два методологии. Выберите свое предпочтение в зависимости от архитектуры решения:
- Автоматическая подготовка устройства Linux с физическим оборудованием доверенного платформенного модуля.
- Автоматическая подготовка виртуальной машины Linux с имитацией доверенного платформенного модуля, работающего на компьютере разработки Windows с поддержкой Hyper-V. Мы рекомендуем использовать эту методологию только в качестве сценария тестирования. Имитированный TPM не обеспечивает ту же безопасность, что и физический TPM.
Инструкции отличаются на основе методологии, поэтому убедитесь, что вы находитесь на правильной вкладке вперед.
Для этого необходимо выполнить следующие задачи:
- Получение сведений о подготовке для доверенного платформенного модуля.
- Создайте отдельную регистрацию для устройства в экземпляре службы подготовки устройств Центр Интернета вещей.
- Установите среду выполнения IoT Edge и подключите устройство к Центру Интернета вещей.
Необходимые компоненты
Облачные ресурсы
- Активный Центр Интернета вещей
- Экземпляр службы подготовки устройств Центр Интернета вещей в Azure, связанный с центром Интернета вещей
- Если у вас нет экземпляра службы подготовки устройств, следуйте инструкциям в кратком руководстве по созданию новой службы подготовки устройств Центр Интернета вещей и связыванию центра Интернета вещей и служб подготовки устройств в кратком руководстве по Центр Интернета вещей службе подготовки устройств.
- После запуска службы подготовки устройств скопируйте значение области идентификатора на странице обзора. Это значение используется при настройке среды выполнения IoT Edge.
Требования к устройствам
Физическое устройство Linux, которое должно быть устройством IoT Edge.
Если вы являетесь производителем устройств, обратитесь к рекомендациям по интеграции доверенного платформенного модуля в производственный процесс.
Примечание.
TPM 2.0 требуется при использовании аттестации доверенного платформенного модуля со службой подготовки устройств.
При использовании доверенного платформенного модуля можно создавать только отдельные, а не групповые регистрации служб подготовки устройств.
Настройка устройства
Если вы используете физическое устройство Linux с TPM, нет дополнительных действий по настройке устройства.
Вы готовы продолжить.
Получение сведений о подготовке для доверенного платформенного модуля
Примечание.
Эта статья ранее использовала tpm_device_provision
средство из пакета SDK для Интернета вещей C для создания сведений о подготовке. Если вы использовали это средство ранее, помните, что приведенные ниже действия создают другой идентификатор регистрации для того же открытого ключа подтверждения. Если необходимо повторно создать идентификатор регистрации, как и раньше, обратитесь к тому, как средство tpm_device_provision пакета SDK для C. Убедитесь, что идентификатор регистрации для отдельной регистрации в DPS соответствует идентификатору повторной настройки устройства IoT Edge.
В этом разделе вы используете средства программного обеспечения TPM2 для получения ключа подтверждения для доверенного платформенного модуля, а затем создайте уникальный идентификатор регистрации. Этот раздел соответствует шагу 3. Устройство имеет встроенное ПО и программное обеспечение, установленное в процессе интеграции доверенного платформенного модуля в производственный процесс.
Установка средств TPM2
Войдите на устройство и установите tpm2-tools
пакет.
sudo apt-get install tpm2-tools
Выполните следующий скрипт, чтобы прочитать ключ подтверждения, создав его, если он еще не существует.
#!/bin/sh
if [ "$USER" != "root" ]; then
SUDO="sudo "
fi
$SUDO tpm2_readpublic -Q -c 0x81010001 -o ek.pub 2> /dev/null
if [ $? -gt 0 ]; then
# Create the endorsement key (EK)
$SUDO tpm2_createek -c 0x81010001 -G rsa -u ek.pub
# Create the storage root key (SRK)
$SUDO tpm2_createprimary -Q -C o -c srk.ctx > /dev/null
# make the SRK persistent
$SUDO tpm2_evictcontrol -c srk.ctx 0x81000001 > /dev/null
# open transient handle space for the TPM
$SUDO tpm2_flushcontext -t > /dev/null
fi
printf "Gathering the registration information...\n\nRegistration Id:\n%s\n\nEndorsement Key:\n%s\n" $(sha256sum -b ek.pub | cut -d' ' -f1 | sed -e 's/[^[:alnum:]]//g') $(base64 -w0 ek.pub)
$SUDO rm ek.pub srk.ctx 2> /dev/null
В окне вывода отображается ключ подтверждения устройства и уникальный идентификатор регистрации. Скопируйте эти значения для последующего использования при создании отдельной регистрации для устройства в службе подготовки устройств.
После получения идентификатора регистрации и ключа подтверждения вы будете готовы продолжать работу.
Совет
Если вы не хотите использовать средства программного обеспечения 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.
Для поддерживаемых операционных систем платформы уровня 2 пакеты установки доступны в выпусках Azure 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
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
Дополнительные сведения о версиях операционной системы см . на поддерживаемых платформах Azure IoT Edge.
Примечание.
Использование программных пакетов Azure IoT Edge регулируется условиями лицензии, содержащейся в самих пакетах (в usr/share/doc/{package-name}
или в каталоге LICENSE
). Прежде чем использовать пакет, ознакомьтесь с условиями лицензии. Установка и использование пакета означают, что вы принимаете эти условия. Если вы с ними не согласны, не используйте пакет.
Установка платформы контейнеров
Служба Azure IoT Edge использует среду выполнения контейнера, совместимую с OCI. В рабочих сценариях рекомендуется использовать подсистему Moby. Модуль Moby — это обработчик контейнеров, официально поддерживаемый IoT Edge. Образы контейнеров Docker (Community Edition или Enterprise Edition) совместимы со средой выполнения Moby. Если вы используете оснастки Ubuntu Core, оснастка Docker обслуживается каноническим и поддерживается для рабочих сценариев.
Установите модуль Moby.
sudo apt-get update; \
sudo apt-get install moby-engine
По умолчанию подсистема контейнеров не задает ограничения размера журнала контейнеров. Со временем это может привести к заполнению устройства журналами и исчерпанию дискового пространства. Однако вы можете настроить журнал для локального отображения, хотя это необязательно. Дополнительные сведения о настройке ведения журнала см . в контрольном списке развертывания рабочей среды.
Ниже показано, как настроить контейнер для использования local
драйвера ведения журнала в качестве механизма ведения журнала.
Создание или изменение существующего файла конфигурации управляющей программы Docker
sudo nano /etc/docker/daemon.json
Задайте драйвер ведения журнала по умолчанию драйверу
local
ведения журнала, как показано в примере.{ "log-driver": "local" }
Перезапустите обработчик контейнеров, чтобы изменения вступили в силу.
sudo systemctl restart docker
Установка среды выполнения IoT Edge
Служба IoT Edge обеспечивает безопасность и соответствие стандартам безопасности на устройстве IoT Edge. Служба запускается при каждой загрузке устройства и перезагружает устройство, запуская остальные компоненты среды выполнения IoT Edge.
Примечание.
Начиная с версии 1.2 служба удостоверений Интернета вещей обрабатывает подготовку и управление удостоверениями для IoT Edge и для других компонентов устройств, которые должны взаимодействовать с Центр Интернета вещей.
Действия, описанные в этом разделе, представляют собой типичный процесс установки последней версии IoT Edge на устройстве с подключением к Интернету. Если необходимо установить определенную версию, например предварительную версию или установить ее в автономном режиме, следуйте инструкциям по установке автономной или конкретной версии, приведенным далее в этой статье.
Совет
Если у вас уже есть устройство IoT Edge с более старой версией и хотите обновить до последней версии, выполните действия, описанные в разделе "Обновление управляющей программы безопасности IoT Edge и среды выполнения". Более поздние версии достаточно отличаются от предыдущих версий IoT Edge, которые необходимы для обновления конкретных шагов.
Установите последнюю версию IoT Edge и пакет службы удостоверений Интернета вещей (если вы еще не обновлены):
22.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
20.04:
sudo apt-get update; \ sudo apt-get install aziot-edge defender-iot-micro-agent-edge
Дополнительный defender-iot-micro-agent-edge
пакет включает микроагент безопасности Microsoft Defender для Интернета вещей, который обеспечивает видимость конечных точек в управлении безопасностью, уязвимостях, обнаружении угроз, управлении парками и многое другое, чтобы обеспечить безопасность устройств IoT Edge. Рекомендуется установить микроагент с агентом Edge, чтобы обеспечить мониторинг безопасности и защиту устройств Edge. Дополнительные сведения о Microsoft Defender для Интернета вещей см. в статье "Что такое Microsoft Defender для Интернета вещей для разработчиков устройств".
Предоставление облачного удостоверения устройству
После установки среды выполнения на устройстве настройте устройство с информацией, которую он использует для подключения к службе подготовки устройств и Центр Интернета вещей.
Сведения об идентификаторе службы подготовки устройств и идентификаторе регистрации устройства, собранных ранее.
Создайте файл конфигурации для устройства на основе файла шаблона, предоставленного в процессе установки IoT Edge.
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
Откройте файл конфигурации на устройстве IoT Edge.
sudo nano /etc/aziot/config.toml
Найдите в нем раздел конфигурации подготовки. Раскомментируйте строки для подготовки доверенного платформенного модуля и убедитесь, что все остальные строки подготовки закомментированы.
# DPS provisioning with TPM [provisioning] source = "dps" global_endpoint = "https://global.azure-devices-provisioning.net" id_scope = "DPS_ID_SCOPE_HERE" # Uncomment to send a custom payload during DPS registration # payload = { uri = "PATH_TO_JSON_FILE" } [provisioning.attestation] method = "tpm" registration_id = "REGISTRATION_ID_HERE" # auto_reprovisioning_mode = Dynamic
Обновите значения
id_scope
иregistration_id
с помощью службы подготовки устройств и сведений об устройстве. Этоscope_id
значение — область идентификатора на странице обзора экземпляра службы подготовки устройств.Дополнительные сведения о параметрах конфигурации подготовки см. в разделе "Настройка параметров устройства IoT Edge".
При необходимости найдите раздел режима автоматической повторной подготовки файла.
auto_reprovisioning_mode
Используйте параметр для настройки поведения повторной подготовки устройства. Динамическая — повторное создание, когда устройство обнаруживает, что оно могло быть перемещено из одной Центр Интернета вещей в другую. Это значение по умолчанию. AlwaysOnStartup — повторное создание при перезагрузке устройства или сбое приводит к перезапуску управляющей программы. OnErrorOnly — никогда не активируйте автоматическую подготовку устройства. Каждый режим имеет неявный вариант повторной подготовки устройства, если устройство не может подключиться к Центр Интернета вещей во время подготовки удостоверений из-за ошибок подключения. Дополнительные сведения см. в разделе Основные понятия повторной подготовки устройств в Центре Интернета вещей.При необходимости раскомментируйте
payload
параметр, чтобы указать путь к локальному JSON-файлу. Содержимое файла отправляется в DPS в качестве дополнительных данных при регистрации устройства. Это полезно для пользовательского выделения. Например, если вы хотите выделить устройства на основе идентификатора модели IoT самонастраивающийся без вмешательства человека.Сохранить и закрыть файл.
Предоставление доступа IoT Edge доверенному платформенному модулю
Среда выполнения IoT Edge использует службу доверенного платформенного модуля, которая брокерирует доступ к доверенному платформенного платформенного модуля устройства. Чтобы провести автоматическую подготовку устройства, эта служба должна иметь доступ к доверенному платформенному модулю.
Это можно сделать, переопределив параметры systemd, чтобы назначить службе aziottpm
привилегии суперпользователя. Если вы не хотите повышать привилегии, доступ можно предоставить вручную.
Создайте новое правило, которое предоставляет доступ к
tpm0
среде выполнения IoT Edge иtpmrm0
.sudo touch /etc/udev/rules.d/tpmaccess.rules
Откройте файл правил.
sudo nano /etc/udev/rules.d/tpmaccess.rules
Скопируйте следующие сведения о доступе в файл правил. Возможно, на
tpmrm0
устройствах, использующих ядро до версии 4.12, может не присутствовать. Устройства, которые не имеютtpmrm0
этого правила, будут безопасно игнорировать это правило.# allow aziottpm access to tpm0 and tpmrm0 KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="aziottpm", MODE="0660" KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="aziottpm", MODE="0660"
Сохраните и закройте файл.
udev
Активируйте систему для оценки нового правила./bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
Убедитесь, что правило было успешно применено.
ls -l /dev/tpm*
Успешный результат выглядит следующим образом.
crw-rw---- 1 root aziottpm 10, 224 Jul 20 16:27 /dev/tpm0 crw-rw---- 1 root aziottpm 10, 224 Jul 20 16:27 /dev/tpmrm0
Если вы не видите, что применены правильные разрешения, попробуйте перезагрузить компьютер для обновления
udev
.Примените изменения конфигурации, сделанные на устройстве.
sudo iotedge config apply
Проверка установки
Если вы еще не сделали этого, примените изменения конфигурации, внесенные на устройстве.
sudo iotedge config apply
Убедитесь, что среда выполнения IoT Edge запущена.
sudo iotedge system status
Изучите журналы управляющей программы.
sudo iotedge system logs
Если вы видите ошибки подготовки, возможно, изменения конфигурации еще не вступили в силу. Попробуйте перезапустить управляющую программу IoT Edge.
sudo systemctl daemon-reload
Или попробуйте перезапустить виртуальную машину, чтобы узнать, вступают ли изменения в силу при новом запуске.
Если среда выполнения успешно запущена, вы можете перейти в Центр Интернета вещей и увидеть, что новое устройство было подготовлено автоматически. и готово для запуска модулей IoT Edge.
Просмотрите список запущенных модулей.
iotedge list
Вы можете проверить, используется ли отдельная регистрация, созданная в службе подготовки устройств. Перейдите к экземпляру службы подготовки устройств в портал Azure. Откройте сведения о регистрации для созданной индивидуальной регистрации. Обратите внимание, что регистрация имеет состояние назначено и указан идентификатор устройства.
Следующие шаги
Процесс регистрации службы подготовки устройств позволяет задать идентификатор устройства и теги двойников устройств одновременно, когда вы подготавливаете новое устройство. Эти значения можно использовать для целевых отдельных устройств или групп устройств с помощью автоматического управления устройствами.
Узнайте, как развертывать и отслеживать модули IoT Edge в масштабе с помощью портал Azure или Azure CLI.