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

Область применения:IoT Edge 1.4 checkmark IoT Edge 1.4

Важно!

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

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

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

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

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

Совет

Если устройство имеет аппаратный модуль безопасности (HSM), например TPM 2.0, рекомендуется безопасно хранить ключи X.509 в HSM. Дополнительные сведения о реализации подготовки нулевого касания в масштабе, описанной в этой схеме, см. в примере iotedge-tpm2cloud.

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

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

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

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

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

Создание сертификатов удостоверений устройств

Сертификат удостоверения устройства — это подчиненный сертификат устройства, который подключается через цепочку сертификатов доверия к верхнему сертификату центра сертификации X.509 (ЦС). Сертификат удостоверения устройства должен иметь общее имя (CN) для идентификатора устройства, который должен иметь устройство в Центре Интернета вещей.

Сертификаты удостоверений устройств используются только для подготовки устройства IoT Edge и проверки подлинности устройства в Центре Интернета вещей Azure. Они не подписывают сертификаты, в отличие от сертификатов ЦС, которые устройство IoT Edge предоставляет модулям или подчиненным устройствам для проверки. Дополнительные сведения см. в разделе об использовании сертификатов Azure IoT Edge.

После создания сертификата удостоверения устройства необходимо два файла: CER или PEM, который содержит открытую часть сертификата, и CER или PEM с закрытым ключом сертификата. Если вы планируете использовать групповую регистрацию в DPS, вам также потребуется открытая часть промежуточного или корневого сертификата ЦС в той же цепочке сертификатов доверия.

Чтобы настроить автоматическую подготовку с помощью X.509, вам потребуются следующие файлы:

  • Сертификат удостоверения устройства и сертификат его закрытого ключа. Сертификат удостоверения устройства отправляется в DPS при создании отдельной регистрации. Закрытый ключ передается в среду выполнения IoT Edge.
  • Полный сертификат цепочки, который должен содержать, по крайней мере, удостоверение устройства и промежуточные сертификаты. Полный сертификат цепочки передается в среду выполнения IoT Edge.
  • Промежуточный или корневой сертификат ЦС из цепочки доверия сертификатов. Этот сертификат отправляется в службу DPS, если вы создаете групповую регистрацию.

Использование тестовых сертификатов (необязательно)

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

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

  • <WRKDIR>/certs/iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>/private/iot-edge-device-identity-<name>.key.pem

Оба сертификата необходимы на устройстве IoT Edge. Если вы собираетесь использовать индивидуальную регистрацию в DPS, отправьте файл cert.pem. Если вы планируете использовать групповую регистрацию в DPS, вам также потребуется отправить промежуточный или корневой сертификат ЦС в той же цепочке доверия сертификатов. Если вы используете демонстрационные сертификаты, используйте сертификат <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem для групповой регистрации.

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

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

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

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

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

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

Отдельные регистрации принимают открытую часть сертификата удостоверения устройства и сопоставляют ее с сертификатом на устройстве.

Совет

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

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

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

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

    • Механизм: выберите X.509.

    • Файл первичного сертификата PEM или CER: отправьте открытый файл из сертификата удостоверения устройства. Если вы использовали сценарии для создания тестового сертификата, выберите следующий файл:

      <WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem

    • Идентификатор устройства в Центре Интернета вещей: если необходимо, укажите идентификатор устройства. Идентификаторы устройств можно использовать, чтобы указать отдельное устройство для развертывания модуля. Если не указать идентификатор устройства, используется общее имя (CN) в сертификате X.509.

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

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

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

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

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

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

Установка Edge Интернета вещей

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

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

Внимание

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

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

  • 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.

Установите модуль Moby.

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

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

Ниже показано, как настроить контейнер для использования 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 служба удостоверений Интернета вещей обрабатывает подготовку и управление удостоверениями для 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 для Интернета вещей для разработчиков устройств".

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

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

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

  • Значение области идентификаторов DPS. Вы можете узнать это значение на странице обзора в экземпляре DPS на портале Azure.
  • Файл цепочки сертификатов удостоверений устройств на устройстве.
  • Файл ключа удостоверений устройств на устройстве.

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

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

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

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

    # DPS provisioning with X.509 certificate
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "SCOPE_ID_HERE"
    
    # Uncomment to send a custom payload during DPS registration
    # payload = { uri = "PATH_TO_JSON_FILE" }
    
    [provisioning.attestation]
    method = "x509"
    registration_id = "REGISTRATION_ID_HERE"
    
    identity_cert = "DEVICE_IDENTITY_CERTIFICATE_HERE"
    
    identity_pk = "DEVICE_IDENTITY_PRIVATE_KEY_HERE"
    
    # auto_reprovisioning_mode = Dynamic
    
  2. Обновите значение id_scope, указав идентификатор области, скопированный из экземпляра DPS.

  3. registration_id Укажите для устройства идентификатор, который имеет устройство в Центр Интернета вещей. Идентификатор регистрации должен соответствовать общему имени сертификата удостоверения.

  4. Обновите значения параметров identity_cert и identity_pk, указав сведения о сертификате и ключе.

    Значение сертификата удостоверения может быть предоставлено в виде универсального кода ресурса (URI) файла или может быть динамически выдано с помощью EST или локального центра сертификации. Раскомментируйте только одну строку в зависимости от выбранного формата.

    Значение закрытого ключа удостоверения можно указать в виде URI файла или URI PKCS 11. Раскомментируйте только одну строку в зависимости от выбранного формата.

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

    Дополнительные сведения о сертификатах см. в разделе "Управление сертификатами IoT Edge".

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

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

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

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

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

sudo iotedge config apply

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

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

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

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

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

sudo iotedge system status

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

sudo iotedge system logs

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

sudo iotedge list

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

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