Руководство. Подготовка устройств с помощью групп регистрации симметричного ключа

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

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

  • группы регистрации — используются для регистрации нескольких связанных устройств; В этом руководстве демонстрируется подготовка с группами регистрации.
  • Отдельные регистрации: используется для регистрации одного устройства.

Служба подготовки устройств Центр Интернета вещей Azure поддерживает три формы проверки подлинности для устройств подготовки:

  • Сертификаты X.509
  • Доверенный модуль платформы (TPM)
  • Симметричные ключи. В этом руководстве демонстрируется аттестация симметричного ключа

В некоторых устройствах может отсутствовать сертификат, доверенный платформенный модуль (TPM) или любая другая функция безопасности, которую можно использовать для безопасной идентификации устройства. Для таких устройств служба подготовки устройств (DPS) Центр Интернета вещей Azure включает аттестацию симметричного ключа. Аттестация симметричного ключа может использоваться для идентификации устройства на основе уникальных сведений, таких как MAC-адрес или серийный номер.

В этом руководстве описаны следующие задачи.

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

Это руководство ориентировано на рабочую станцию под управлением Windows. Тем не менее эти процедуры можно выполнить и на Linux. Пример Linux см. в руководстве по подготовке к географической задержке.

Примечание.

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

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

  • Если вы используете среду разработки Windows, установите Visual Studio 2022 с включенной рабочей нагрузкой "Разработка компьютеров с помощью C++". Visual Studio 2019, Visual Studio 2017 и Visual Studio 2015 также поддерживаются. При использовании Linux или macOS ознакомьтесь с соответствующим разделом в статье Подготовка среды разработки из документации к пакету SDK.

  • Установите последнюю систему сборки CMake. Убедитесь, что вы проверка параметр, который добавляет исполняемый файл CMake в путь.

    Внимание

    Перед установкой CMake важно установить на компьютер необходимые компоненты Visual Studio (Visual Studio и рабочую нагрузку "Разработка классических приложений на C++"). После установки компонентов и проверки загрузки установите систему сборки CMake. Кроме того, обратите внимание, что в предыдущих версиях системы сборки CMake нельзя создать файл решения, используемый в этой статье. Обязательно используйте последнюю версию CMake.

  • Установите пакет SDK для .NET 6.0 или более поздней версии на компьютере под управлением Windows. Вы можете проверить установленную версию с помощью приведенной ниже команды.

    dotnet --info
    
  • Установите Python 3.7 или более поздней версии на компьютер под управлением Windows. Вы можете проверить версию Python, выполнив команду python --version.
  • Установите последнюю версию Git. Обязательно добавьте GIT в переменные среды, доступные в командном окне. Последнюю версию средств git для установки, которая включает Git Bash (приложение командной строки для взаимодействия с локальным репозиторием GIT), можно найти на этой странице.

Подготовка среды разработки

В этом разделе описана подготовка среды разработки для создания пакета SDK для устройств Интернета вещей Azure для C. Пример кода подготавливает устройство во время загрузочной последовательности устройства.

  1. В веб-браузере перейдите на страницу выпуска пакета SDK Для Интернета вещей Azure.

  2. Скопируйте имя тега для последнего выпуска пакета SDK Для Интернета вещей Azure, например: lts_03_2024

  3. Откройте командную строку Windows и выполните следующие команды, чтобы клонировать последний выпуск пакета SDK для устройств Интернета вещей Azure для репозитория GitHub. Замените <release-tag> тегом, скопированным на предыдущем шаге.

    git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git
    cd azure-iot-sdk-c
    git submodule update --init
    

    Выполнение этой операции займет несколько минут.

  4. После завершения операции выполните следующие команды в каталоге azure-iot-sdk-c:

    mkdir cmake
    cd cmake
    
  5. В примере кода для предоставления аттестации используется симметричный ключ. Выполните приведенную ниже команду, чтобы создать версию пакета SDK для используемой клиентской платформы разработки, которая включает клиент подготовки устройств.

    cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON  ..
    

    Совет

    Если cmake не может найти компилятор C++, могут возникнуть ошибки сборки во время выполнения приведенной выше команды. В этом случае попробуйте, выполнить эту команду в командной строке Visual Studio.

  6. После выполнения сборки последние несколько строк выходных данных будут выглядеть следующим образом:

    $ cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON  ..
    -- Building for: Visual Studio 16 2019
    -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.22621.
    -- The C compiler identification is MSVC 19.29.30146.0
    -- The CXX compiler identification is MSVC 19.29.30146.0
    
    ...
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/azure-iot-sdk-c/cmake
    
  1. Откройте командную строку или терминал Git Bash.

  2. Клонируйте репозиторий Azure IoT SDK для C# GitHub с помощью следующей команды:

    git clone https://github.com/Azure/azure-iot-sdk-csharp.git
    
  1. Откройте командную строку или терминал Git Bash.

  2. Клонируйте репозиторий GitHub пакета SDK Azure IoT для Node.js с помощью следующей команды:

    git clone https://github.com/Azure/azure-iot-sdk-node.git --recursive
    
  1. Откройте командную строку или терминал Git Bash.

  2. Клонируйте пакет SDK для устройств Интернета вещей Azure для репозитория GitHub Python с помощью следующей команды:

    git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive
    

    Примечание.

    Примеры, используемые в этом руководстве, находятся в ветви версии 2 репозитория azure-iot-sdk-python. Версия 3 пакета SDK для Python доступна для использования в бета-версии. Сведения об обновлении примеров кода версии 2 для использования выпуска пакета SDK для Python версии 3 см . в руководстве по миграции с помощью пакета SDK для устройств Интернета вещей Azure для Python.

  1. Откройте командную строку или терминал Git Bash.

  2. Клонируйте репозиторий GitHub пакета SDK Интернета вещей Azure для Java с помощью следующей команды:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  3. Перейдите в корневой каталог azure-iot-sdk-java и создайте проект для скачивания всех необходимых пакетов. Этот шаг может занять несколько минут.

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    

Создание группы регистраций симметричного ключа

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

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

  3. Выберите " Добавить группу регистрации".

  4. На вкладке "Регистрация и подготовка" на странице "Добавление группы регистрации" укажите следующие сведения, чтобы настроить сведения о группе регистрации:

    Поле Description
    Аттестации Выберите симметричный ключ в качестве механизма аттестации.
    Параметры симметричного ключа Установите флажок "Создать симметричные ключи" автоматически, если вы хотите использовать случайные созданные ключи. Если вы хотите предоставить собственные ключи проверка это поле.
    Имя группы Укажите имя группы устройств. Имя группы регистрации — это нечувствительная строка регистра (до 128 символов длиной) буквенно-цифровых символов, а также специальные символы: '-', '.', . '_'':' Последний символ должен быть буквенно-цифровым или дефисом ('-').
    Состояние подготовки Установите флажок "Включить эту регистрацию", если вы хотите, чтобы эта группа регистрации была доступна для подготовки устройств. Отмените проверка это поле, если вы хотите, чтобы группа была отключена. Этот параметр можно изменить позже.
    Политика повторной подготовки Выберите политику повторной подготовки, которая отражает способ обработки устройств, запрашивающих повторную подготовку. Дополнительные сведения см. в разделе "Политики повторной подготовки"

    Screenshot that shows adding an enrollment group for symmetric key attestation.

  5. Нажмите кнопку Далее: Центры Интернета вещей.

  6. На вкладке Центров Интернета вещей на странице "Добавление группы регистрации" укажите следующие сведения, чтобы определить, для каких центров Интернета вещей группа регистрации может подготавливать устройства:

    Поле Description
    Целевые центры Интернета вещей Выберите один или несколько связанных центров Интернета вещей или добавьте новую ссылку на Центр Интернета вещей. Дополнительные сведения о связывании центров Интернета вещей с экземпляром DPS см. в статье "Как связать центры Интернета вещей и управлять ими".
    Политика выделения Если выбрано несколько связанных центров Интернета вещей, выберите способ назначения устройств разным центрам. Дополнительные сведения о политиках выделения см. в статье "Использование политик выделения".

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

    Screenshot that shows connecting IoT hubs to the new enrollment group.

  7. Нажмите кнопку "Далее": параметры устройства

  8. На вкладке "Параметры устройства" на странице "Добавление группы регистрации" укажите следующие сведения, чтобы определить, как будут настроены недавно подготовленные устройства:

    Поле Description
    IoT Edge Проверьте включение IoT Edge на подготовленных устройствах, если все устройства, подготовленные в этой группе, будут запускать Azure IoT Edge. Не проверка это поле, если эта группа предназначена только для устройств с поддержкой IoT Edge. Все устройства в группе будут включены в IoT Edge или нет.
    Теги устройств Используйте это текстовое поле для предоставления тегов, которые необходимо применить к двойникам подготовленных устройств.
    Требуемые свойства Используйте это текстовое поле для предоставления необходимых свойств, которые необходимо применить к двойникам устройств, подготовленным устройствам.

    См. общие сведения о двойниках устройств и их использовании в Центре Интернета вещей.

  9. По завершении выберите Next: Отзыв и создание.

  10. На вкладке "Просмотр и создание " проверьте все значения и нажмите кнопку "Создать".

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

Откройте регистрацию и скопируйте значение первичного ключа. Этот ключ — это ключ группы.

Выбор уникального идентификатора регистрации для устройства

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

В этом примере мы используем сочетание MAC-адреса и серийного номера, формирующие следующую строку для идентификатора регистрации.

sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6

Создайте уникальные идентификаторы регистрации для каждого устройства. Идентификатор регистрации — это строка без учета регистра (до 128 символов длиной) буквенно-цифровых символов, а также следующие специальные символы: - . _ : Последний символ должен быть буквенно-цифровым или дефисом (-).

Получение ключа устройства

Чтобы создать ключи устройства, используйте первичный ключ группы регистрации для вычисления хэша HMAC-SHA256 идентификатора регистрации для каждого устройства. Затем результат преобразуется в формат Base 64 для каждого устройства.

Предупреждение

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

Расширение Интернета вещей для Azure CLI предоставляет команду az iot dps enrollment-group compute-device-key для создания производных ключей устройств. Эту команду можно использовать как в системах Под управлением Windows, так и в Linux.

Замените значение --key параметра первичным ключом из группы регистрации.

Замените значение --registration-id параметра идентификатором регистрации.

az iot dps enrollment-group compute-device-key --key <group_primary_key> --registration-id <device_registration_id>

Пример результата:

"Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc="

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

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

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

В примере кода подготовки в указанном порядке выполняются следующие задачи:

  1. Проверяется подлинность устройства с помощью ресурса подготовки устройств и следующих трех параметров:

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

Чтобы указать в примере подготовки сведения об устройстве и выполнить его:

  1. В главном меню Службы подготовки устройств выберите элемент Обзор.

  2. Скопируйте значение параметра Область идентификатора.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. В Visual Studio откройте файл решения azure_iot_sdks.sln, который был создан в результате запуска CMake. Файл решения должен находиться в следующем расположении:

    
    \azure-iot-sdk-c\cmake\azure_iot_sdks.sln
    
    

    Совет

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

  4. В окне Обозреватель решений Visual Studio перейдите в папку Provision_Samples. Разверните пример проекта с именем prov_dev_client_sample. Разверните исходные файлы и откройте prov_dev_client_sample.c.

  5. Найдите константу id_scope и замените значение области идентификатора, скопированное из портал Azure.

    static const char* id_scope = "0ne00002193";
    
  6. Найдите определение функции main() в том же файле. Проверьте, чтобы переменной hsm_type было задано значение SECURE_DEVICE_TYPE_SYMMETRIC_KEY, как показано ниже.

    SECURE_DEVICE_TYPE hsm_type;
    //hsm_type = SECURE_DEVICE_TYPE_TPM;
    //hsm_type = SECURE_DEVICE_TYPE_X509;
    hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
    
  7. Найдите вызов prov_dev_set_symmetric_key_info() в prov_dev_client_sample.c , который закомментирован.

    // Set the symmetric key if using they auth type
    //prov_dev_set_symmetric_key_info("<symm_registration_id>", "<symmetric_Key>");
    

    Раскомментируйте вызов функции и замените значения заполнителей (включая угловые скобки) идентификатором регистрации, выбранным в разделе "Выбор уникального идентификатора регистрации для устройства" и производного ключа устройства , созданного в производном ключе устройства.

    // Set the symmetric key if using they auth type
    prov_dev_set_symmetric_key_info("sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6", "Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc=");
    

    Внимание

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

  8. Сохраните файл.

  9. Щелкните правой кнопкой мыши проект prov_dev_client_sample и выберите "Задать в качестве запускаемого проекта".

  10. В меню Visual Studio выберите Отладка>Запуск без отладки, чтобы запустить решение. При появлении запроса на перестройку проекта щелкните Да, чтобы перестроить его перед запуском.

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

    Provisioning API Version: 1.9.1
    
    Registering Device
    
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    
    Registration Information received from service: contoso-hub-2.azure-devices.net, deviceId: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    Press enter key to exit:
    

В примере кода подготовки в указанном порядке выполняются следующие задачи:

  1. Проверяется подлинность устройства с помощью ресурса подготовки устройств и следующих трех параметров:

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

  3. Отправляется тестовое сообщение телеметрии в центр Интернета вещей.

Чтобы указать в примере подготовки сведения об устройстве и выполнить его:

  1. В главном меню Службы подготовки устройств выберите элемент Обзор.

  2. Скопируйте значение параметра Область идентификатора.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Откройте командную строку и перейдите в файл SymmetricKeySample в клонированного репозитория пакета SDK:

    cd .\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\SymmetricKeySample
    
  4. В папке SymmetricKeySample откройте файл Parameters.cs в текстовом редакторе. В этом файле показаны параметры, на которые ссылается пример. При запуске примера используются только первые три обязательных параметра. Просмотрите код в этом файле. Изменения не требуются.

    Параметр Обязательное поле Описание
    --i или --IdScope Истина Область идентификатора экземпляра DPS
    --r или --RegistrationId Истина Идентификатор регистрации устройства. Идентификатор регистрации — это нечувствительная строка регистра (до 128 символов длиной) буквенно-цифровых символов, а также специальные символы: '-', '.', '_'. ':' Последний символ должен быть буквенно-цифровым или дефисом ('-').
    --p или --PrimaryKey Истина Первичный ключ отдельной регистрации или производный ключ устройства групповой регистрации.
    --g или --GlobalDeviceEndpoint False Глобальная конечная точка для подключения устройств. По умолчанию — global.azure-devices-provisioning.net.
    --t или --TransportType False Транспортный протокол, используемый для связи с экземпляром подготовки устройства. По умолчанию — Mqtt. Возможные значения: Mqtt, Mqtt_WebSocket_Only, Mqtt_Tcp_Only, Amqp, Amqp_WebSocket_Only, Amqp_Tcp_only и Http1.
  5. В папке SymmetricKeySample откройте файл ProvisioningDeviceClientSample.cs в текстовом редакторе. В этом файле показано, как класс SecurityProviderSymmetricKey используется вместе с классом ProvisioningDeviceClient для подготовки имитированного устройства симметричного ключа. Просмотрите код в этом файле. Изменения не требуются.

  6. Выполните сборку и запуск примера кода с помощью следующей команды:

    dotnet run --i <id-scope> --r <registration-id> --p <primarykey>
    
  7. Вы должны увидеть что-то подобное приведенным ниже выходным данным. Строка TestMessage отправляется в центр в качестве тестового сообщения.

    D:\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\SymmetricKeySample>dotnet run --i 0ne00000A0A --r sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 --p sbDDeEzRuEuGKag+kQKV+T1QGakRtHpsERLP0yPjwR93TrpEgEh/Y07CXstfha6dhIPWvdD1nRxK5T0KGKA+nQ==
    
    Initializing the device provisioning client...
    Initialized for registration Id sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6.
    Registering with the device provisioning service...
    Registration status: Assigned.
    Device sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 registered to contoso-hub-2.azure-devices.net.
    Creating symmetric key authentication for IoT Hub...
    Testing the provisioned device with IoT Hub...
    Sending a telemetry message...
    Finished.
    

В примере кода подготовки в указанном порядке выполняются следующие задачи:

  1. Проверяется подлинность устройства с помощью ресурса подготовки устройств и следующих четырех параметров:

    • PROVISIONING_HOST
    • PROVISIONING_IDSCOPE
    • PROVISIONING_REGISTRATION_ID
    • PROVISIONING_SYMMETRIC_KEY
  2. Назначается устройство для центра Интернета вещей, уже связанного с экземпляром службы Подготовки устройств.

  3. Отправляется тестовое сообщение телеметрии в центр Интернета вещей.

Чтобы указать в примере подготовки сведения об устройстве и выполнить его:

  1. В главном меню Службы подготовки устройств выберите элемент Обзор.

  2. Скопируйте значение параметра Область идентификатора.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Откройте командную строку для команд Node.js и перейдите в следующий каталог:

    cd azure-iot-sdk-node\provisioning\device\samples
    
  4. В папке provisioning/device/samples откройте register_symkey.js и проверьте код.

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

    var ProvisioningTransport = require('azure-iot-provisioning-device-mqtt').Mqtt;
    

    Обратите внимание, что пример кода задает настраиваемую полезные данные:

    provisioningClient.setProvisioningPayload({a: 'b'});
    

    Вы можете закомментировать этот код, так как для этого руководства не требуется. Пользовательские полезные данные можно использовать при использовании пользовательского веб-перехватчика выделения для назначения устройства Центр Интернета вещей. Дополнительные сведения см. в руководстве . Использование пользовательских политик выделения.

    Метод provisioningClient.register() пытается зарегистрировать устройство.

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

    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    
    set PROVISIONING_IDSCOPE=<id-scope>
    
    set PROVISIONING_REGISTRATION_ID=<registration-id>
    
    set PROVISIONING_SYMMETRIC_KEY=<derived-device-key>
    
  6. Выполните сборку примера кода и выполните его с помощью следующей команды:

     npm install
    
    node register_symkey.js
    
  7. Теперь должен отобразиться результат, аналогичный приведенному ниже. Строка Hello World отправляется в центр как тестовое сообщение.

    registration succeeded
    assigned hub=contoso-hub-2.azure-devices.net
    deviceId=sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    payload=undefined
    Client connected
    send status: MessageEnqueued
    

В примере кода подготовки в указанном порядке выполняются следующие задачи:

  1. Проверяется подлинность устройства с помощью ресурса подготовки устройств и следующих четырех параметров:

    • PROVISIONING_HOST
    • PROVISIONING_IDSCOPE
    • PROVISIONING_REGISTRATION_ID
    • PROVISIONING_SYMMETRIC_KEY
  2. Назначается устройство для центра Интернета вещей, уже связанного с экземпляром службы Подготовки устройств.

  3. Отправляется тестовое сообщение телеметрии в центр Интернета вещей.

Чтобы указать в примере подготовки сведения об устройстве и выполнить его:

  1. В главном меню Службы подготовки устройств выберите элемент Обзор.

  2. Скопируйте значение параметра Область идентификатора.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Откройте командную строку и перейдите в каталог, где находится пример файла, provision_symmetric_key.py.

    cd azure-iot-sdk-python\samples\async-hub-scenarios
    
  4. В командной строке выполните следующие команды, чтобы задать переменные среды, используемые примером:

    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    
    set PROVISIONING_IDSCOPE=<id-scope>
    
    set PROVISIONING_REGISTRATION_ID=<registration-id>
    
    set PROVISIONING_SYMMETRIC_KEY=<derived-device-key>
    
  5. Установите библиотеку azure-iot-device, выполнив следующую команду:

    pip install azure-iot-device
    
  6. Запустите пример кода Python в provision_symmetric_key.py.

    python provision_symmetric_key.py
    
  7. Теперь должен отобразиться результат, аналогичный приведенному ниже. Также для тестирования в этот центр отправляется несколько примеров сообщений телеметрии с информацией о скорости ветра.

    D:\azure-iot-sdk-python\samples\async-hub-scenarios>python provision_symmetric_key.py
    The complete registration result is
    sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    contoso-hub-2.azure-devices.net
    initialAssignment
    null
    Will send telemetry from the provisioned device
    sending message #1
    sending message #2
    sending message #3
    sending message #4
    sending message #5
    sending message #6
    sending message #7
    sending message #8
    sending message #9
    sending message #10
    done sending message #1
    done sending message #2
    done sending message #3
    done sending message #4
    done sending message #5
    done sending message #6
    done sending message #7
    done sending message #8
    done sending message #9
    done sending message #10
    

В примере кода подготовки в указанном порядке выполняются следующие задачи:

  1. Проверяется подлинность устройства с помощью ресурса подготовки устройств и следующих четырех параметров:

    • GLOBAL_ENDPOINT
    • SCOPE_ID
    • REGISTRATION_ID
    • SYMMETRIC_KEY
  2. Назначается устройство для центра Интернета вещей, уже связанного с экземпляром службы Подготовки устройств.

  3. Отправляется тестовое сообщение телеметрии в центр Интернета вещей.

Чтобы указать в примере подготовки сведения об устройстве и выполнить его:

  1. В главном меню Службы подготовки устройств выберите элемент Обзор.

  2. Скопируйте значение параметра Область идентификатора.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Откройте пример кода для устройства Java для редактирования. Полный путь к примеру кода устройства:

    azure-iot-sdk-java/provisioning/provisioning-samples/provisioning-symmetrickey-individual-sample/src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningSymmetricKeyIndividualEnrollmentSample.java

  4. Задайте значение следующих переменных для регистрации DPS и устройств:

    private static final String SCOPE_ID = "[Your scope ID here]";
    private static final String GLOBAL_ENDPOINT = "[Your Provisioning Service Global Endpoint here]";
    private static final String SYMMETRIC_KEY = "[Enter your Symmetric Key here]";
    private static final String REGISTRATION_ID = "[Enter your Registration ID here]";
    

    Внимание

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

  5. Откройте окно командной строки для выполнения сборки. Перейдите к папке с примером подготовки проекта в репозитории с пакетом SDK для Java.

    cd azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-symmetrickey-individual-sample
    
  6. Выполните сборку примера.

    mvn clean install
    
  7. Перейдите в папку target и выполните созданный .jar файл. В команде java замените {version} заполнитель версией в .jar имени файла на компьютере.

    cd target
    java -jar ./provisioning-symmetrickey-individual-sample-{version}-with-deps.jar
    
  8. Теперь должен отобразиться результат, аналогичный приведенному ниже.

    Starting...
    Beginning setup.
    WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
    2022-10-07 18:14:48,388 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Initialized a ProvisioningDeviceClient instance using SDK version 2.0.2
    2022-10-07 18:14:48,390 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Starting provisioning thread...
    Waiting for Provisioning Service to register
    2022-10-07 18:14:48,392 INFO (global.azure-devices-provisioning.net-002edcf5-CxnPendingConnectionId-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Opening the connection to device provisioning service...
    2022-10-07 18:14:48,518 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Connection to device provisioning service opened successfully, sending initial device registration message
    2022-10-07 18:14:48,521 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-RegisterTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask] - Authenticating with device provisioning service using symmetric key
    2022-10-07 18:14:49,252 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Waiting for device provisioning service to provision this device...
    2022-10-07 18:14:49,253 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Current provisioning status: ASSIGNING
    2022-10-07 18:14:52,459 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Device provisioning service assigned the device successfully
    IotHUb Uri : contoso-hub-2.azure-devices.net
    Device ID : sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    2022-10-07 18:14:58,424 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true
    2022-10-07 18:14:58,436 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true
    2022-10-07 18:14:58,440 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Initialized a DeviceClient instance using SDK version 2.1.1
    2022-10-07 18:14:58,450 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - Opening MQTT connection...
    2022-10-07 18:14:58,471 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT CONNECT packet...
    2022-10-07 18:14:59,314 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT CONNECT packet was acknowledged
    2022-10-07 18:14:59,315 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT SUBSCRIBE packet for topic devices/sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6/messages/devicebound/#
    2022-10-07 18:14:59,378 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT SUBSCRIBE packet for topic devices/sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6/messages/devicebound/# was acknowledged
    2022-10-07 18:14:59,379 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - MQTT connection opened successfully
    2022-10-07 18:14:59,381 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - The connection to the IoT Hub has been established
    2022-10-07 18:14:59,383 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Updating transport status to new status CONNECTED with reason CONNECTION_OK
    2022-10-07 18:14:59,389 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceIO] - Starting worker threads
    2022-10-07 18:14:59,392 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking connection status callbacks with new status details
    2022-10-07 18:14:59,395 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Client connection opened successfully
    2022-10-07 18:14:59,404 INFO (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Device client opened successfully
    Sending message from device to IoT Hub...
    2022-10-07 18:14:59,408 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Message was queued to be sent later ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] )
    Press any key to exit...
    2022-10-07 18:14:59,409 DEBUG (contoso-hub-2.azure-devices.net-sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6-c32c76d0-Cxn0e70bbf7-8476-441d-8626-c17250585ee6-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Sending message ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] )
    2022-10-07 18:14:59,777 DEBUG (MQTT Call: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - IotHub message was acknowledged. Checking if there is record of sending this message ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] )
    2022-10-07 18:14:59,779 DEBUG (contoso-hub-2.azure-devices.net-sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6-c32c76d0-Cxn0e70bbf7-8476-441d-8626-c17250585ee6-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking the callback function for sent message, IoT Hub responded to message ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] ) with status OK
    Message received! Response status: OK
    

Проверка регистрации подготовки устройств

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

  1. В портал Azure перейдите к экземпляру DPS.

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

  3. Выберите группы регистрации.

  4. Выберите группу регистрации, созданную для этого руководства.

  5. На странице сведений о группе регистрации выберите состояние регистрации.

  6. Найдите идентификатор устройства для столбца идентификатора устройства и запишите центр Интернета вещей в столбце "Назначенный центр Интернета вещей".

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

Чтобы проверить устройство в Центре Интернета вещей, выполните следующие действия.

  1. В портал Azure перейдите в Центр Интернета вещей, которому было назначено ваше устройство.

  2. В меню управления устройствами выберите "Устройства".

  3. Если устройство было подготовлено успешно, его идентификатор устройства должен отображаться в списке с включенным набором состояния. Если устройство не отображается, нажмите кнопку "Обновить".

    Device is registered with the IoT hub

Примечание.

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

Подготовка дополнительных устройств

Чтобы подготовить дополнительные устройства через группу регистрации, выполните действия, описанные в предыдущих разделах:

  1. Выберите уникальный идентификатор регистрации для устройства.

  2. Наследование ключа устройства. Как и ранее, используйте первичный ключ для группы регистрации в качестве ключа группы.

  3. Запустите код подготовки устройств. Замените необходимые артефакты новым производным ключом устройства и идентификатором регистрации.

Очистка ресурсов

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

Удаление группы регистрации

Удаление группы регистрации не удаляет связанные с ней записи регистрации. Эти потерянные записи учитывают квоту регистрации для экземпляра DPS. По этой причине рекомендуется удалить все записи регистрации, связанные с группой регистрации, перед удалением самой группы регистрации.

  1. В портал Azure перейдите к экземпляру DPS.

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

  3. Перейдите на вкладку "Группы регистрации".

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

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

  6. Вернитесь на страницу "Управление регистрацией ".

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

  8. В верхней части страницы выберите команду Удалить.

Удаление регистраций устройств из Центр Интернета вещей

  1. В портал Azure перейдите в Центр Интернета вещей, которому было назначено ваше устройство.

  2. Выберите элемент Устройства в разделе Управление устройствами в меню навигации.

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

  4. В верхней части страницы выберите команду Удалить.

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

В этом руководстве вы подготовили несколько устройств в одном центре Интернета вещей с помощью группы регистрации. Далее вы узнаете, как подготовить устройства Интернета вещей в нескольких центрах.