Как создать токен SAS-концентратора Azure IoT только для одного устройства / службы? - PullRequest
0 голосов
/ 10 января 2019

Я хочу сгенерировать новый токен SAS для доступа к концентратору IoT Azure с помощью Paho MQTT с Java. Я хочу получить сообщения MQTT из серверной службы Java.

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

Это команда, которую я использую для генерации токена.

az iot hub generate-sas-token -d device1 -n iothubname --policy device

Это сообщение об ошибке, которое я получаю

{u'ExceptionMessage': u'Tracking ID<HIDDEN`enter code here`>:TimeStamp:01/01/2019 14:30:33', u'Message': u'ErrorCode:IotHubUnauthorizedAccess;Unauthorized'}

До того, как я попробовал это, я пытался использовать политику "service" (потому что этот токен должен использоваться серверной службой), которая тоже не работала:

az iot hub generate-sas-token -d device1 -n iothubname --policy service

{u'ExceptionMessage': u'Tracking ID:<>TimeStamp:01/01/2019 14:37:39', u'Message': u'ErrorCode:IotHubUnauthorizedAccess;Unauthorized'}

Единственное, что работает, это az iot hub generate-sas-token -n iothubname, но в отношении документации это создает токен с политикой iothubowner, который я не хочу предоставлять своему бэкэнд-сервису.

Я не могу понять концепцию разрешений в IoT-концентраторе Azure даже после трехкратного чтения документов: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-security#iot-hub-permissions

Когда я буду использовать политику service и когда я буду использовать политику device?

Спасибо!

1 Ответ

0 голосов
/ 10 января 2019

Попробуйте

az iot hub generate-sas-token -n [IoTHub Name] --policy registryRead --key-type secondary

детали того же самого в примере можно увидеть по следующей ссылке

https://docs.microsoft.com/en-us/cli/azure/ext/azure-cli-iot-ext/iot/hub?view=azure-cli-latest#ext-azure-cli-iot-ext-az-iot-hub-generate-sas-token

...