Partilhar via


Compreender o registo de identidade no seu hub IoT

Cada hub IoT tem um registro de identidade que armazena informações sobre os dispositivos e módulos permitidos para se conectar a esse hub IoT. Antes que um dispositivo ou módulo possa se conectar a um hub IoT, deve haver uma entrada para esse dispositivo ou módulo no registro de identidade do hub IoT. Um dispositivo ou módulo é autenticado com o hub IoT com base em credenciais armazenadas no registro de identidade.

The device ID or module ID stored in the identity registry is case-sensitive.

O registro de identidade é uma coleção de recursos de identidade compatível com REST. Quando você adiciona uma entrada no registro de identidade, o Hub IoT cria um conjunto de recursos por dispositivo, como a fila que contém mensagens de nuvem para dispositivo em voo.

Use o registro de identidade para:

  • Provisione dispositivos ou módulos que se conectam ao seu hub IoT.
  • Controle o acesso por dispositivo/por módulo aos pontos finais do seu hub.

Operações de registo de identidade

O registro de identidade do Hub IoT expõe as seguintes operações:

  • Criar identidade
  • Atualizar identidade
  • Recuperar identidade por ID
  • Delete identity
  • List up to 1,000 identities
  • Exportar identidades para o armazenamento de blob do Azure
  • Importar identidades do armazenamento de blobs do Azure

All these operations can use optimistic concurrency, as specified in RFC 7232.

Um registro de identidade do Hub IoT não contém metadados de aplicativo.

Important

Use apenas o registro de identidade para operações de provisionamento e gerenciamento de dispositivos. High throughput operations at run time shouldn't depend on performing operations in the identity registry. For example, checking the connection state of a device before sending a command isn't a supported pattern. Make sure to check the throttling rates for the identity registry.

Nota

Pode levar alguns segundos para que uma identidade de dispositivo ou módulo esteja disponível para recuperação após a criação. If failures occur, you can retry the get operation of device or module identities.

Desativar dispositivos

Você pode desativar dispositivos alterando a propriedade status de uma identidade no registo de identidade. Typically, you use this property in two scenarios:

  • During a provisioning orchestration process. Para obter mais informações, consulte Provisionamento de dispositivos.

  • If you think a device is compromised or unauthorized for any reason.

    Important

    O Hub IoT não verifica as listas de revogação de certificados ao autenticar dispositivos com autenticação baseada em certificados. Se você tiver um dispositivo que precisa ser impedido de se conectar ao Hub IoT devido a um certificado potencialmente comprometido, desative o dispositivo no registro de identidade.

Este recurso não está disponível para módulos.

For more information, see the Disable or delete a device section of Create and manage device identities.

Importar e exportar identidades de dispositivos

A única maneira de recuperar todas as identidades no registro de identidade de um hub IoT é usar a funcionalidade de exportação.

Use asynchronous operations on the IoT Hub resource provider endpoint to import or export device identities in bulk from an IoT hub's identity registry. Imports and exports are long-running jobs that use a customer-supplied blob container.

For more information about the import and export APIs, see IoT Hub Resource. To learn more about running import and export jobs, see Import and export IoT Hub device identities in bulk.

Device identities can also be exported and imported from an IoT hub by using the Service API through either the REST API or one of the IoT Hub service SDKs.

Provisionamento de dispositivos

Os dados do dispositivo que uma determinada solução de IoT armazena dependem dos requisitos específicos dessa solução. Mas, no mínimo, uma solução deve armazenar identidades de dispositivo e chaves de autenticação. O registro de identidade do Hub IoT pode armazenar valores para cada dispositivo, como IDs, chaves de autenticação e códigos de status. Uma solução pode usar outros serviços do Azure, como armazenamento de tabela, armazenamento de Blob ou Azure Cosmos DB para armazenar outros dados de dispositivo.

O provisionamento de dispositivos é o processo de adicionar os dados iniciais do dispositivo aos armazenamentos em sua solução. Para permitir que um novo dispositivo se conecte ao seu hub, adicione uma ID de dispositivo e chaves ao registro de identidade do Hub IoT. Como parte do processo de provisionamento, talvez seja necessário inicializar dados específicos do dispositivo em outros repositórios de soluções. Também pode utilizar o Serviço de Provisionamento de Dispositivo do Hub IoT do Azure para ativar o provisionamento automático e em tempo real para um ou mais hubs IoT. For more information, see Azure IoT Hub Device Provisioning Service Documentation.

Notificações do ciclo de vida do dispositivo e do módulo

O Hub IoT pode notificar sua solução de IoT quando uma identidade de dispositivo é criada ou excluída enviando notificações de ciclo de vida. Para fazer isso, sua solução de IoT precisa criar uma rota e definir a fonte de dados igual a DeviceLifecycleEvents. By default, no lifecycle notifications are sent, that is, no such routes preexist. When you create a route with data source equal to DeviceLifecycleEvents, lifecycle events are sent for both device identities and module identities. O conteúdo da mensagem difere dependendo se os eventos são gerados para identidades de módulo ou identidades de dispositivo. For more information about the properties and body returned in the notification message, see Azure IoT Hub non-telemetry event schemas.

As notificações para a criação de identidade de módulo são diferentes para módulos do IoT Edge do que para outros módulos. For IoT Edge modules, the creation notification is only sent if the corresponding IoT Edge device is running. Para todos os outros módulos, as notificações do ciclo de vida são enviadas sempre que a identidade do módulo é atualizada no lado do Hub IoT.

Propriedades de identidade do dispositivo

As identidades de dispositivo são representadas como documentos JSON com as seguintes propriedades:

Propriedade Opções Descrição
Id do dispositivo obrigatório, apenas leitura durante atualizações A case-sensitive string (up to 128 characters long) of ASCII 7-bit alphanumeric characters plus certain special characters: - . % _ * ? ! ( ) , : = @ $ '. The special characters + # aren't supported.
generationId obrigatório, somente leitura Uma cadeia de caracteres gerada pelo Hub IoT, sensível a maiúsculas e minúsculas, com até 128 caracteres. This value is used to distinguish devices with the same deviceId, when they're deleted and re-created.
etag obrigatório, somente leitura A string representing a weak ETag for the device identity, as per RFC 7232.
autenticação opcional Um objeto composto contendo informações de autenticação e materiais de segurança. For more information, see AuthenticationMechanism in the REST API documentation.
capacidades opcional O conjunto de capacidades do dispositivo. For example, whether the device is an edge device or not. For more information, see DeviceCapabilities in the REST API documentation.
deviceScope opcional O escopo do dispositivo. In edge devices, auto generated and immutable. Deprecated in nonedge devices. However, in child (leaf) devices, set this property to the same value as the parentScopes property (the deviceScope of the parent device) for backward compatibility with previous versions of the API. For more information, see the Parent and child relationships section of How an IoT Edge device can be used as a gateway.
parentScopes opcional The scope of a child device's direct parent (the value of the deviceScope property of the parent device). In edge devices, the value is empty if the device has no parent. In nonedge devices, the property isn't present if the device has no parent. For more information, see the Parent and child relationships section of How an IoT Edge device can be used as a gateway.
status obrigatório Um indicador de acesso. Pode ser Enabled ou Disabled. Se Enabled, o dispositivo tem permissão para se conectar. If Disabled, the device can't access any device-facing endpoint.
statusReason opcional Uma cadeia de 128 caracteres que armazena a razão para o estado de identidade do dispositivo. Todos os caracteres UTF-8 são permitidos.
statusUpdateTime read-only Um indicador temporal, mostrando a data e a hora da última atualização de status.
estadoDaConexão read-only Um campo indicando o status da conexão: ou ConnectedDisconnected. Este campo representa a vista do Hub IoT do estado da ligação do dispositivo. Importante: Este campo deve ser usado apenas para fins de desenvolvimento/depuração. O estado da conexão é atualizado somente para dispositivos que usam MQTT ou AMQP. Além disso, é baseado em pings de nível de protocolo (pings MQTT ou pings AMQP) e pode ter um atraso máximo de apenas 5 minutos. Por esses motivos, pode haver falsos positivos, como dispositivos desconectados relatados como conectados.
tempoDeAtualizaçãoDoEstadoDeConexão read-only Um indicador temporal, mostrando a data e a última vez que o estado da conexão foi atualizado.
lastActivityTime read-only Um indicador temporal, mostrando a data e a última vez que o dispositivo se conectou, recebeu ou enviou uma mensagem. This property is eventually consistent, but could be delayed up to 5 to 10 minutes. Por esse motivo, ele não deve ser usado em cenários de produção.

Nota

O estado da conexão só pode representar a perspetiva do Hub IoT sobre o status da conexão. Updates to this state might be delayed, depending on network conditions and configurations.

Propriedades de identidade do módulo

As identidades de módulo são representadas como documentos JSON com as seguintes propriedades:

Propriedade Opções Descrição
Id do dispositivo obrigatório, apenas leitura durante atualizações A case-sensitive string (up to 128 characters long) of ASCII 7-bit alphanumeric characters plus certain special characters: - . % _ * ? ! ( ) , : = @ $ '.
moduleId obrigatório, apenas leitura durante atualizações A case-sensitive string (up to 128 characters long) of ASCII 7-bit alphanumeric characters plus certain special characters: - . % _ * ? ! ( ) , : = @ $ '. The special characters + # aren't supported.
generationId obrigatório, somente leitura Uma cadeia de caracteres gerada pelo hub IoT, sensível a maiúsculas e minúsculas, com até 128 caracteres. This value is used to distinguish devices with the same deviceId, when they're deleted and re-created.
etag obrigatório, somente leitura A string representing a weak ETag for the device identity, as per RFC 7232.
autenticação opcional Um objeto composto contendo informações de autenticação e materiais de segurança. For more information, see AuthenticationMechanism in the REST API documentation.
managedBy opcional Identifica quem gerencia este módulo. For instance, this value is IoT Edge if the edge runtime owns this module.
cloudToDeviceMessageCount read-only The number of cloud-to-module messages currently queued to be sent to the module.
estadoDaConexão read-only Um campo indicando o status da conexão: ou ConnectedDisconnected. Este campo representa a vista do Hub IoT do estado da ligação do dispositivo. Importante: Este campo deve ser usado apenas para fins de desenvolvimento/depuração. O estado da conexão é atualizado somente para dispositivos que usam MQTT ou AMQP. Além disso, é baseado em pings de nível de protocolo (pings MQTT ou pings AMQP) e pode ter um atraso máximo de apenas 5 minutos. Por esses motivos, pode haver falsos positivos, como dispositivos desconectados relatados como conectados.
tempoDeAtualizaçãoDoEstadoDeConexão read-only Um indicador temporal, mostrando a data e a última vez que o estado da conexão foi atualizado.
lastActivityTime read-only Um indicador temporal, mostrando a data e a última vez que o dispositivo se conectou, recebeu ou enviou uma mensagem.

To explore using the IoT Hub Device Provisioning Service to enable zero-touch, just-in-time provisioning, see: