Руководство. Подготовка устройств с помощью групп регистрации симметричного ключа
В этом руководстве показано, как безопасно подготовить несколько имитированных устройств симметричного ключа в одном Центр Интернета вещей с помощью группы регистрации.
Служба подготовки устройств Центр Интернета вещей Azure поддерживает два типа регистраций для устройств подготовки:
- группы регистрации — используются для регистрации нескольких связанных устройств; В этом руководстве демонстрируется подготовка с группами регистрации.
- Отдельные регистрации: используется для регистрации одного устройства.
Служба подготовки устройств Центр Интернета вещей Azure поддерживает три формы проверки подлинности для устройств подготовки:
- Сертификаты X.509
- Доверенный модуль платформы (TPM)
- Симметричные ключи. В этом руководстве демонстрируется аттестация симметричного ключа
Некоторые устройства могут не иметь сертификата, доверенного платформенного модуля или любой другой функции безопасности, которую можно использовать для безопасного идентификации устройства. Для таких устройств служба подготовки устройств (DPS) Центр Интернета вещей Azure включает аттестацию симметричного ключа. Аттестация симметричного ключа может использоваться для идентификации устройства на основе уникальных сведений, таких как MAC-адрес или серийный номер.
В этом руководстве описаны следующие задачи.
- Определите уникальный идентификатор регистрации для каждого устройства.
- Создайте группу регистрации, использующую аттестацию симметричного ключа.
- Создай ключ устройства для каждого устройства с помощью уникального идентификатора регистрации и общего ключа группы регистрации.
- Подготовка устройств с помощью ключа устройства и примера кода в пакетах SDK для устройств Интернета вещей Azure.
Это руководство ориентировано на рабочую станцию под управлением Windows. Тем не менее эти процедуры можно выполнить и на Linux. Пример Linux см. в руководстве по подготовке к географической задержке.
Примечание.
Если вы ранее завершили краткое руководство. Подготовьте имитированное устройство симметричного ключа и все еще настроили ресурсы Azure и среду разработки, вы можете перейти к созданию группы регистрации симметричного ключа в этом руководстве.
Необходимые компоненты
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Выполните инструкции по настройке Службы подготовки устройств к добавлению в Центр Интернета вещей на портале Microsoft 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
- Установите Node.js 4.0 или более поздней версии.
- Установите Python 3.7 или более поздней версии на компьютер под управлением Windows. Вы можете проверить версию Python, выполнив команду
python --version
.
Установите пакет SDK для Java SE 8 или более поздней версии.
Скачайте и установите Maven.
- Установите последнюю версию Git. Обязательно добавьте GIT в переменные среды, доступные в командном окне. Последнюю версию средств
git
для установки, которая включает Git Bash (приложение командной строки для взаимодействия с локальным репозиторием GIT), можно найти на этой странице.
Подготовка среды разработки
В этом разделе описана подготовка среды разработки для создания пакета SDK для устройств Интернета вещей Azure для C. Пример кода подготавливает устройство во время загрузочной последовательности устройства.
В веб-браузере перейдите на страницу выпуска пакета SDK Для Интернета вещей Azure.
Скопируйте имя тега для последнего выпуска пакета SDK Для Интернета вещей Azure, например:
lts_03_2024
Откройте командную строку 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
Выполнение этой операции займет несколько минут.
После завершения операции выполните следующие команды в каталоге
azure-iot-sdk-c
:mkdir cmake cd cmake
В примере кода для предоставления аттестации используется симметричный ключ. Выполните приведенную ниже команду, чтобы создать версию пакета SDK для используемой клиентской платформы разработки, которая включает клиент подготовки устройств.
cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON ..
Совет
Если
cmake
не может найти компилятор C++, могут возникнуть ошибки сборки во время выполнения приведенной выше команды. В этом случае попробуйте, выполнить эту команду в командной строке Visual Studio.После успешного завершения сборки последние несколько выходных строк выглядят следующим образом:
$ 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
Откройте командную строку или терминал Git Bash.
Клонируйте репозиторий Azure IoT SDK для C# GitHub с помощью следующей команды:
git clone https://github.com/Azure/azure-iot-sdk-csharp.git
Откройте командную строку или терминал Git Bash.
Клонируйте репозиторий GitHub пакета SDK Azure IoT для Node.js с помощью следующей команды:
git clone https://github.com/Azure/azure-iot-sdk-node.git --recursive
Откройте командную строку или терминал Git Bash.
Клонируйте пакет 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.
Откройте командную строку или терминал Git Bash.
Клонируйте репозиторий GitHub пакета SDK Интернета вещей Azure для Java с помощью следующей команды:
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
Перейдите в корневой каталог
azure-iot-sdk-java
и создайте проект для скачивания всех необходимых пакетов. Этот шаг может занять несколько минут.cd azure-iot-sdk-java mvn install -DskipTests=true
Создание группы регистраций симметричного ключа
Войдите на портал Azure и перейдите к своему экземпляру службы подготовки устройств.
Выберите " Управление регистрациями" в разделе "Параметры " в меню навигации.
Выберите " Добавить группу регистрации".
На вкладке "Регистрация и подготовка" на странице "Добавление группы регистрации" укажите следующие сведения, чтобы настроить сведения о группе регистрации:
Поле Description Свидетельство Выберите симметричный ключ в качестве механизма аттестации. Параметры симметричного ключа Установите флажок "Создать симметричные ключи" автоматически, если вы хотите использовать случайные созданные ключи. Снимите этот флажок, если вы хотите предоставить собственные ключи. Имя группы Укажите имя группы устройств. Имя группы регистрации — это нечувствительная строка регистра (до 128 символов длиной) буквенно-цифровых символов, а также специальные символы: '-'
,'.'
, .'_'
':'
Последний символ должен быть буквенно-цифровым или дефисом ('-'
).Состояние подготовки Установите флажок "Включить эту регистрацию", если вы хотите, чтобы эта группа регистрации была доступна для подготовки устройств. Снимите этот флажок, если вы хотите, чтобы группа была отключена. При необходимости этот параметр можно изменить позже. Политика повторной подготовки Выберите политику повторной подготовки, которая отражает способ обработки устройств, запрашивающих повторную подготовку. Дополнительные сведения см. в разделе "Политики повторной подготовки" Нажмите кнопку Далее: Центры Интернета вещей.
На вкладке Центров Интернета вещей на странице "Добавление группы регистрации" укажите следующие сведения, чтобы определить, для каких центров Интернета вещей группа регистрации может подготавливать устройства:
Поле Description Целевые центры Интернета вещей Выберите один или несколько связанных центров Интернета вещей или добавьте новую ссылку на Центр Интернета вещей. Дополнительные сведения о связывании центров Интернета вещей с экземпляром DPS см. в статье "Как связать центры Интернета вещей и управлять ими". Политика выделения Если выбрано несколько связанных центров Интернета вещей, выберите способ назначения устройств разным центрам. Дополнительные сведения о политиках выделения см. в статье "Использование политик выделения".
Если выбран только один связанный центр Интернета вещей, рекомендуется использовать политику равномерного распределения .Нажмите кнопку "Далее": параметры устройства
На вкладке "Параметры устройства" на странице "Добавление группы регистрации" укажите следующие сведения, чтобы определить, как будут настроены недавно подготовленные устройства:
Поле Description IoT Edge Проверьте включение IoT Edge на подготовленных устройствах, если все устройства, подготовленные в этой группе, будут запускать Azure IoT Edge. Снимите этот флажок, если эта группа доступна только для устройств с поддержкой IoT Edge. Все устройства в группе будут включены в IoT Edge или нет. Теги устройств Используйте это текстовое поле для предоставления тегов, которые необходимо применить к двойникам подготовленных устройств. Требуемые свойства Используйте это текстовое поле для предоставления необходимых свойств, которые необходимо применить к двойникам устройств, подготовленным устройствам. См. общие сведения о двойниках устройств и их использовании в Центре Интернета вещей.
По завершении выберите Next: Отзыв и создание.
На вкладке "Просмотр и создание " проверьте все значения и нажмите кнопку "Создать".
При создании группы регистрации 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="
Каждое устройство использует производный ключ устройства и уникальный идентификатор регистрации для выполнения аттестации симметричного ключа в группе регистрации во время подготовки.
Подготовка и выполнение кода для подготовки устройства
В этом разделе вы обновите пример кода устройства, чтобы отправить последовательность загрузки устройства в экземпляр службы подготовки устройств. Эта последовательность загрузки приводит к тому, что устройство распознается, проходит проверку подлинности и назначается центру Интернета вещей, связанному с экземпляром службы подготовки устройств.
В примере кода подготовки в указанном порядке выполняются следующие задачи:
Проверяется подлинность устройства с помощью ресурса подготовки устройств и следующих трех параметров:
- область идентификатора службы Подготовки устройств;
- Идентификатор регистрации устройства.
- Производный ключ устройства для устройства.
Назначается устройство для центра Интернета вещей, уже связанного с экземпляром службы Подготовки устройств.
Чтобы указать в примере подготовки сведения об устройстве и выполнить его:
В главном меню Службы подготовки устройств выберите элемент Обзор.
Скопируйте значение параметра Область идентификатора.
В Visual Studio откройте файл решения azure_iot_sdks.sln, который был создан в результате запуска CMake. Файл решения должен находиться в следующем расположении:
\azure-iot-sdk-c\cmake\azure_iot_sdks.sln
Совет
Если файл не был создан в каталоге cmake, убедитесь, что используется последняя версия системы сборки CMake.
В окне Обозреватель решений Visual Studio перейдите в папку Provision_Samples. Разверните пример проекта с именем prov_dev_client_sample. Разверните исходные файлы и откройте prov_dev_client_sample.c.
Найдите константу
id_scope
и замените значение области идентификатора, скопированное из портал Azure.static const char* id_scope = "0ne00002193";
Найдите определение функции
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;
Найдите вызов
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=");
Внимание
Помните, что этот шаг оставляет производный ключ устройства в составе образа для каждого устройства, который не рекомендуется использовать для обеспечения безопасности. Это одна из причин, почему часто приходится идти на компромиссы, выбирая между безопасностью и простотой использования. Вы должны полностью проверить безопасность ваших устройств в соответствии с собственными требованиями.
Сохраните файл.
Щелкните правой кнопкой мыши проект prov_dev_client_sample и выберите "Задать в качестве запускаемого проекта".
В меню 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:
В примере кода подготовки в указанном порядке выполняются следующие задачи:
Проверяется подлинность устройства с помощью ресурса подготовки устройств и следующих трех параметров:
- область идентификатора службы Подготовки устройств;
- Идентификатор регистрации устройства.
- Производный ключ устройства для устройства.
Назначается устройство для центра Интернета вещей, уже связанного с экземпляром службы Подготовки устройств.
Отправляет тестовое сообщение в Центр Интернета вещей.
Чтобы указать в примере подготовки сведения об устройстве и выполнить его:
В главном меню Службы подготовки устройств выберите элемент Обзор.
Скопируйте значение параметра Область идентификатора.
Откройте командную строку и перейдите в файл SymmetricKeySample в клонированного репозитория пакета SDK:
cd .\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\SymmetricKeySample
В папке 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
.В папке SymmetricKeySample откройте файл ProvisioningDeviceClientSample.cs в текстовом редакторе. В этом файле показано, как класс SecurityProviderSymmetricKey работает с классом ProvisioningDeviceClient для подготовки имитированного устройства симметричного ключа. Просмотрите код в этом файле. Изменения не требуются.
Выполните сборку и запуск примера кода с помощью следующей команды:
- Замените
<id-scope>
область идентификатора, скопированную из портал Azure. - Замените идентификатором регистрации, выбранным в разделе "Выбор
<registration-id>
уникального идентификатора регистрации" для устройства. - Замените
<primarykey>
производный ключ устройства, созданный вами.
dotnet run --i <id-scope> --r <registration-id> --p <primarykey>
- Замените
Вы должны увидеть что-то подобное приведенным ниже выходным данным. Строка 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.
В примере кода подготовки в указанном порядке выполняются следующие задачи:
Проверяется подлинность устройства с помощью ресурса подготовки устройств и следующих четырех параметров:
PROVISIONING_HOST
PROVISIONING_IDSCOPE
PROVISIONING_REGISTRATION_ID
PROVISIONING_SYMMETRIC_KEY
Назначается устройство для центра Интернета вещей, уже связанного с экземпляром службы Подготовки устройств.
Отправляется тестовое сообщение телеметрии в центр Интернета вещей.
Чтобы указать в примере подготовки сведения об устройстве и выполнить его:
В главном меню Службы подготовки устройств выберите элемент Обзор.
Скопируйте значение параметра Область идентификатора.
Откройте командную строку для команд Node.js и перейдите в следующий каталог:
cd azure-iot-sdk-node\provisioning\device\samples
В папке provisioning/device/samples откройте register_symkey.js и проверьте код.
Пример по умолчанию используется для MQTT в качестве транспортного протокола. Если вы хотите использовать другой протокол, закомментируйте следующую строку и раскомментируйте строку для соответствующего протокола.
var ProvisioningTransport = require('azure-iot-provisioning-device-mqtt').Mqtt;
Обратите внимание, что пример кода задает настраиваемую полезные данные:
provisioningClient.setProvisioningPayload({a: 'b'});
Вы можете закомментировать этот код, так как для этого руководства не требуется. Вы можете использовать пользовательскую полезные данные при использовании пользовательского веб-перехватчика выделения для назначения устройства Центр Интернета вещей. Дополнительные сведения см. в руководстве . Использование пользовательских политик выделения.
Метод
provisioningClient.register()
пытается зарегистрировать устройство.В командной строке выполните следующие команды, чтобы задать переменные среды, используемые примером:
- Первая команда задает
PROVISIONING_HOST
переменную среды для конечной точки глобального устройства. Эта конечная точка одинакова для всех экземпляров DPS. - Замените
<id-scope>
область идентификатора, скопированную из портал Azure. - Замените идентификатором регистрации, выбранным в разделе "Выбор
<registration-id>
уникального идентификатора регистрации" для устройства. - Замените
<derived-device-key>
производным ключом устройства, созданным в производном ключе устройства.
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>
- Первая команда задает
Выполните сборку примера кода и выполните его с помощью следующей команды:
npm install
node register_symkey.js
Теперь должен отобразиться результат, аналогичный приведенному ниже. Строка 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
В примере кода подготовки в указанном порядке выполняются следующие задачи:
Проверяется подлинность устройства с помощью ресурса подготовки устройств и следующих четырех параметров:
PROVISIONING_HOST
PROVISIONING_IDSCOPE
PROVISIONING_REGISTRATION_ID
PROVISIONING_SYMMETRIC_KEY
Назначается устройство для центра Интернета вещей, уже связанного с экземпляром службы Подготовки устройств.
Отправляет тестовое сообщение в Центр Интернета вещей.
Чтобы указать в примере подготовки сведения об устройстве и выполнить его:
В главном меню Службы подготовки устройств выберите элемент Обзор.
Скопируйте значение параметра Область идентификатора.
Откройте командную строку и перейдите в каталог, где находится пример файла, provision_symmetric_key.py.
cd azure-iot-sdk-python\samples\async-hub-scenarios
В командной строке выполните следующие команды, чтобы задать переменные среды, используемые примером:
- Первая команда задает
PROVISIONING_HOST
переменную среды для конечной точки глобального устройства. Эта конечная точка одинакова для всех экземпляров DPS. - Замените
<id-scope>
область идентификатора, скопированную из портал Azure. - Замените идентификатором регистрации, выбранным в разделе "Выбор
<registration-id>
уникального идентификатора регистрации" для устройства. - Замените
<derived-device-key>
производным ключом устройства, созданным в производном ключе устройства.
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>
- Первая команда задает
Установите библиотеку azure-iot-device, выполнив следующую команду:
pip install azure-iot-device
Запустите пример кода Python в provision_symmetric_key.py.
python provision_symmetric_key.py
Теперь должен отобразиться результат, аналогичный приведенному ниже. Также для тестирования в этот центр отправляется несколько примеров сообщений телеметрии с информацией о скорости ветра.
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
В примере кода подготовки в указанном порядке выполняются следующие задачи:
Проверяется подлинность устройства с помощью ресурса подготовки устройств и следующих четырех параметров:
GLOBAL_ENDPOINT
SCOPE_ID
REGISTRATION_ID
SYMMETRIC_KEY
Назначается устройство для центра Интернета вещей, уже связанного с экземпляром службы Подготовки устройств.
Отправляет тестовое сообщение в Центр Интернета вещей.
Чтобы указать в примере подготовки сведения об устройстве и выполнить его:
В главном меню Службы подготовки устройств выберите элемент Обзор.
Скопируйте значение параметра Область идентификатора.
Откройте пример кода для устройства Java для редактирования. Полный путь к примеру кода устройства:
azure-iot-sdk-java/provisioning/provisioning-samples/provisioning-symmetrickey-individual-sample/src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningSymmetricKeyIndividualEnrollmentSample.java
Задайте значение следующих переменных для регистрации DPS и устройств:
- Замените
[Your scope ID here]
область идентификатора, скопированную из портал Azure. - Замените
[Your Provisioning Service Global Endpoint here]
глобальной конечной точкой устройства: global.azure-devices-provisioning.net. Эта конечная точка одинакова для всех экземпляров DPS. - Замените
[Enter your Symmetric Key here]
производным ключом устройства, созданным в производном ключе устройства. - Замените идентификатором регистрации, выбранным в разделе "Выбор
[Enter your Registration ID here]
уникального идентификатора регистрации" для устройства.
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]";
Внимание
Помните, что этот шаг оставляет производный ключ устройства в составе образа для каждого устройства, который не рекомендуется использовать для обеспечения безопасности. Это одна из причин, почему часто приходится идти на компромиссы, выбирая между безопасностью и простотой использования. Вы должны полностью проверить безопасность ваших устройств в соответствии с собственными требованиями.
- Замените
Откройте окно командной строки для выполнения сборки. Перейдите к папке с примером подготовки проекта в репозитории с пакетом SDK для Java.
cd azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-symmetrickey-individual-sample
Выполните сборку примера.
mvn clean install
Перейдите в папку
target
и выполните созданный.jar
файл. В командеjava
замените{version}
заполнитель версией в.jar
имени файла на компьютере.cd target java -jar ./provisioning-symmetrickey-individual-sample-{version}-with-deps.jar
Теперь должен отобразиться результат, аналогичный приведенному ниже.
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 [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 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 [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 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 [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 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 [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) with status OK Message received! Response status: OK
Проверка регистрации подготовки устройств
В этом руководстве вы использовали политику выделения статической конфигурации для назначения устройств, которые регистрируются через группу регистрации в том же центре Интернета вещей. Однако при выделении, в которых устройство может быть подготовлено к одному из нескольких центров Интернета вещей, можно просмотреть записи регистрации группы регистрации, чтобы узнать, в каком центре Интернета вещей было подготовлено устройство:
В портал Azure перейдите к экземпляру DPS.
В меню Параметры выберите Управление регистрациями.
Выберите группы регистрации.
Выберите группу регистрации, созданную для этого руководства.
На странице сведений о группе регистрации выберите состояние регистрации.
Найдите идентификатор устройства для столбца идентификатора устройства и запишите центр Интернета вещей в столбце "Назначенный центр Интернета вещей".
Вы можете выбрать запись устройства, чтобы просмотреть дополнительные сведения, такие как начальный двойник, назначенный устройству.
Чтобы проверить устройство в Центре Интернета вещей, выполните следующие действия.
В портал Azure перейдите в Центр Интернета вещей, которому было назначено ваше устройство.
В меню управления устройствами выберите "Устройства".
Если устройство было подготовлено успешно, его идентификатор устройства должен отображаться в списке с включенным набором состояния. Если устройство не отображается, нажмите кнопку "Обновить".
Примечание.
Если вы изменили исходное состояние двойника устройства из значения по умолчанию в группе регистрации, устройство может извлечь требуемое состояние двойника из концентратора и действовать соответствующим образом. См. общие сведения о двойниках устройств и их использовании в Центре Интернета вещей.
Подготовка дополнительных устройств
Чтобы подготовить дополнительные устройства через группу регистрации, выполните действия, описанные в предыдущих разделах:
Выберите уникальный идентификатор регистрации для устройства.
Наследование ключа устройства. Как и ранее, используйте первичный ключ для группы регистрации в качестве ключа группы.
Запустите код подготовки устройств. Замените необходимые артефакты новым производным ключом устройства и идентификатором регистрации.
Очистка ресурсов
Если вы планируете продолжать работать и изучать пример клиента устройства, не очищайте ресурсы, созданные в этом руководстве. Если вы не планируете продолжать работу, выполните следующие действия, чтобы удалить все ресурсы, созданные в этом руководстве.
Удаление группы регистрации
Удаление группы регистрации не удаляет связанные с ней записи регистрации. Эти потерянные записи учитывают квоту регистрации для экземпляра DPS. По этой причине рекомендуется удалить все записи регистрации, связанные с группой регистрации, перед удалением самой группы регистрации.
В портал Azure перейдите к экземпляру DPS.
В меню Параметры выберите Управление регистрациями.
Перейдите на вкладку "Группы регистрации".
Выберите имя группы регистрации, которую вы использовали для этого руководства, чтобы открыть страницу сведений.
На странице сведений о регистрации выберите состояние регистрации. Установите флажок рядом с заголовком столбца идентификатора устройства, чтобы выбрать все записи регистрации для группы регистрации. Выберите "Удалить" в верхней части страницы, чтобы удалить записи регистрации.
Вернитесь на страницу "Управление регистрацией ".
Установите флажок рядом с именем группы регистрации, используемой для этого руководства.
В верхней части страницы выберите команду Удалить.
Удаление регистраций устройств из Центр Интернета вещей
В портал Azure перейдите в Центр Интернета вещей, которому было назначено ваше устройство.
Выберите элемент Устройства в разделе Управление устройствами в меню навигации.
Установите флажок рядом с идентификатором устройства устройств, зарегистрированных в этом руководстве.
В верхней части страницы выберите команду Удалить.
Следующие шаги
В этом руководстве вы подготовили несколько устройств в одном центре Интернета вещей с помощью группы регистрации. Далее вы узнаете, как подготовить устройства Интернета вещей в нескольких центрах.