Descripción del registro de identidades de un centro de IoT

Cada centro de IoT tiene un registro de identidades que almacena información acerca de los dispositivos y módulos que pueden conectarse a IoT Hub. Para que un dispositivo o un módulo puedan conectarse a un centro de IoT, debe haber una entrada para ese dispositivo o módulo en el registro de identidades del centro de IoT. También se debe autenticar un dispositivo o un módulo en el centro de IoT basándose en las credenciales almacenadas en el registro de identidades.

El identificador de dispositivo o módulo que se almacena en el registro de identidades distingue mayúsculas de minúsculas.

En un nivel superior, el registro de identidades es un conjunto de recursos de identidad de dispositivos o módulos compatible con REST. Cuando agrega una entrada al registro de identidades, IoT Hub crea un conjunto de recursos por dispositivo, como una cola que contiene mensajes de nube al dispositivo en curso.

Utilice el registro de identidad cuando necesite:

  • Aprovisionar dispositivos o módulos que se conectan a la instancia de IoT Hub
  • Controlar el acceso de cada dispositivo o módulo a los puntos de conexión accesibles desde el dispositivo o módulo del centro.

Operaciones de registro de identidad

El registro de identidades de IoT Hub muestra las operaciones siguientes:

  • Crear la identidad de dispositivo o módulo
  • Actualizar la identidad del dispositivo o módulo
  • Recuperar la identidad del dispositivo o módulo por identificador
  • Eliminar la identidad del dispositivo o módulo
  • Enumerar hasta 1.000 identidades
  • Exportar todas las identidades de dispositivo a Azure Blob Storage
  • Importar las identidades de dispositivo desde Azure Blob Storage

Todas estas operaciones pueden usar la simultaneidad optimista, tal como se especifica en RFC7232.

Importante

La única manera de recuperar todas las identidades en un registro de identidades de un centro de IoT es usar la funcionalidad Exportar.

Un registro de identidades de un centro de IoT:

  • No contiene metadatos de aplicación.

Importante

Solo se debe utilizar el registro de identidad para las operaciones de aprovisionamiento y administración de dispositivos. Las operaciones de alto rendimiento en tiempo de ejecución no deben depender de la realización de operaciones en el registro de identidad. Por ejemplo, comprobar el estado de conexión de un dispositivo antes de enviar un comando no es un modelo compatible. Asegúrese de comprobar las tasas de limitación para el registro de identidad.

Nota:

Una identidad de dispositivo o módulo recién creada puede tardar unos segundos en estar disponible para su recuperación. Vuelva a intentar la operación get de identidades de dispositivo o módulo en caso de errores.

Deshabilitar dispositivos

Puede deshabilitar los dispositivos actualizando la propiedad status de una identidad en el registro de identidad. Normalmente, esta propiedad se usa en dos escenarios:

  • Durante el proceso de orquestación de aprovisionamiento. Para más información, consulte Aprovisionamiento de dispositivos.

  • Si por cualquier motivo cree que un dispositivo está en peligro o no está autorizado.

    Importante

    IoT Hub no comprueba las listas de revocación de certificados al autenticar dispositivos con autenticación basada en certificados. Si tiene un dispositivo que debe bloquearse para conectarse a IoT Hub debido a un certificado potencialmente comprometido, debe deshabilitar el dispositivo en el registro de identidades.

Esta característica no está disponible para los módulos.

Para más información, consulte Deshabilitar o eliminar un dispositivo en un centro de IoT.

Importar y exportar identidades de dispositivo

Use operaciones asincrónicas en el punto de conexión del proveedor de recursos de IoT Hub para exportar identidades de dispositivo de forma masiva desde un registro de identidades de una instancia de IoT Hub. Las exportaciones son trabajos de ejecución prolongada que usan un contenedor de blobs proporcionado por el cliente para guardar los datos de identidad del dispositivo que se leen en el registro de identidad.

Use operaciones asincrónicas en el punto de conexión del proveedor de recursos de IoT Hub para importar identidades de dispositivo de forma masiva en un registro de identidades de una instancia de IoT Hub. Las importaciones son trabajos de ejecución prolongada que usan los datos de un contenedor de blobs proporcionado por el cliente para escribir datos de identidad del dispositivo en el registro de identidad.

Para más información sobre las API de importación y exportación, consulte API REST del proveedor de recursos de IoT Hub. Para más información sobre la ejecución de trabajos de importación y exportación, consulte Administración de identidades de dispositivos de IoT Hub de forma masiva.

Las identidades de dispositivo también se pueden exportar e importar desde una instancia de IoT Hub a través de la API de servicio a través de la API REST de o uno de los SDK de servicio de IoT Hub.

Aprovisionamiento de dispositivos

Los datos del dispositivo que almacena una solución de IoT determinada dependen de los requisitos específicos de la solución. Sin embargo, como mínimo, una solución debe almacenar identidades del dispositivo y claves de autenticación. El IoT Hub incluye un registro de identidades que puede almacenar valores para cada dispositivo como identificadores, claves de autenticación y códigos de estado. Una posible solución consiste en usar otros servicios de Azure como Table Storage, Blob Storage o Azure Cosmos DB para almacenar datos de dispositivos adicionales.

Aprovisionamiento de dispositivos es el proceso de agregar los datos iniciales del dispositivo a los almacenes de la solución. Para habilitar un nuevo dispositivo y que se conecte al centro, debe agregar un nuevo identificador de dispositivo y claves al registro de identidades del centro de IoT. Como parte del proceso de aprovisionamiento, es posible que tenga que inicializar datos específicos del dispositivo en otros almacenes de la solución. También puede usar el servicio Azure IoT Hub Device Provisioning para habilitar el aprovisionamiento Just-In-Time sin intervención del usuario de uno o varios centros de IoT sin necesidad de ninguna intervención humana. Para más información, consulte la documentación del servicio de aprovisionamiento.

Notificaciones de ciclo de vida de dispositivo y módulo

IoT Hub puede notificar a la solución de IoT al crearse o eliminarse la identidad de un dispositivo mediante el envío de notificaciones de ciclo de vida. Para ello, la solución de IoT debe crear una ruta y establecer el origen de datos igual a DeviceLifecycleEvents. De forma predeterminada, no se envían notificaciones de ciclo de vida, es decir, no existen previamente tales rutas. Al crear una ruta con un origen de datos igual a DeviceLifecycleEvents, se envían eventos de ciclo de vida para las identidades de dispositivo y las identidades de módulo; sin embargo, el contenido del mensaje varía en función de si los eventos se generan para identidades de módulo o de dispositivo. Debe tenerse en cuenta que, en el caso de los módulos de IoT Edge, el flujo de creación de identidades del módulo es diferente al de otros módulos; como resultado, para los módulos de IoT Edge, la notificación de creación solo se envía si se ejecuta el dispositivo IoT Edge correspondiente para la identidad del módulo IoT Edge actualizada. Para todos los demás módulos, las notificaciones del ciclo de vida se envían cada vez que se actualiza la identidad del módulo del lado de IoT Hub. Para obtener más información sobre las propiedades y el cuerpo devueltos en el mensaje de notificación, consulte Esquemas de eventos que no son de telemetría.

Propiedades de identidad del dispositivo

Las identidades de dispositivos se representan como documentos JSON con las propiedades siguientes:

Propiedad Opciones Descripción
deviceId necesarias, de solo lectura en actualizaciones Una cadena que distingue entre mayúsculas y minúsculas (de hasta 128 caracteres) de caracteres alfanuméricos ASCII de 7 bits más determinados caracteres especiales: - . % _ * ? ! ( ) , : = @ $ '. Los caracteres especiales + # no se admiten.
generationId requerido, de solo lectura Una cadena de hasta 128 caracteres que distingue mayúsculas y minúsculas generada por el centro de IoT. Este valor se usa para distinguir dispositivos con el mismo deviceId, cuando se han eliminado y vuelto a crear.
ETag requerido, de solo lectura Una cadena que representa un valor de ETag débil para la identidad del dispositivo, como RFC7232.
autenticación opcional Un objeto compuesto que contiene material de seguridad e información de autenticación. Para más información, consulte el mecanismo de autenticación en la documentación de API REST.
capabilities opcional Conjunto de funcionalidades del dispositivo. Por ejemplo, si el dispositivo es un dispositivo perimetral o no. Para más información, consulte las funcionalidades de dispositivos documentación de la API REST.
deviceScope opcional El ámbito del dispositivo. En dispositivos perimetrales, generados automáticamente e inmutables. En desuso en dispositivos que no son perimetrales. Sin embargo, en los dispositivos secundarios (hoja), establezca esta propiedad en el mismo valor que la propiedad parentScopes (el deviceScope del dispositivo primario) para la compatibilidad con versiones anteriores de la API. Para más información, consulte IoT Edge como puerta de enlace: relaciones primarias y secundarias.
parentScopes opcional El ámbito del elemento primario directo de un dispositivo secundario (el valor de la propiedad deviceScope del dispositivo primario). En los dispositivos perimetrales, el valor está vacío si el dispositivo no tiene ningún elemento primario. En los dispositivos que no son perimetrales, la propiedad no está presente si el dispositivo no tiene ningún elemento primario. Para más información, consulte IoT Edge como puerta de enlace: relaciones primarias y secundarias.
status requerido Indicador de acceso Puede ser Habilitado o Deshabilitado. Si está Habilitado, el dispositivo se puede conectar. Si está Dishabilitado, este dispositivo no puede obtener acceso a ningún punto de conexión accesible desde el dispositivo.
statusReason opcional Una cadena de 128 caracteres que almacena el motivo del estado de identidad del dispositivo. Se permiten todos los caracteres UTF-8.
statusUpdateTime solo lectura Un indicador temporal, que muestra la fecha y hora de la última actualización de estado.
connectionState solo lectura Un campo que indica el estado de la conexión: Conectado o Desconectado. Este campo representa la vista de IoT Hub del estado de conexión del dispositivo. Importante: Este campo debe usarse solo para fines de desarrollo o depuración. El estado de conexión se actualiza solo para dispositivos que usen AMQP o MQTT. Además, se basa en pings de nivel de protocolo (pings MQTT o pings AMQP) y puede tener un retraso de 5 minutos como máximo. Por estos motivos es posible que haya falsos positivos, como dispositivos desconectados que se notifican como conectados.
connectionStateUpdatedTime solo lectura Un indicador temporal que muestra la fecha y hora de la última vez que se actualizó el estado de conexión.
lastActivityTime solo lectura Un indicador temporal que muestra la fecha y hora de la última vez que el dispositivo se conectó, recibió o envió un mensaje. Está propiedad al final es coherente, pero puede retrasarse hasta 5 o 10 minutos. Por este motivo, no debe usarse en escenarios de producción.

Nota

El estado de la conexión solo puede representar la vista del IoT Hub del estado de la conexión. Las actualizaciones de este estado se pueden retrasar, dependiendo de las configuraciones y las condiciones de red.

Nota

Actualmente los SDK del dispositivo no admiten el uso de los caracteres + y # en deviceId.

Propiedades de la identidad de módulo

Las identidades de módulos se representan como documentos JSON con las propiedades siguientes:

Propiedad Opciones Descripción
deviceId necesarias, de solo lectura en actualizaciones Una cadena que distingue entre mayúsculas y minúsculas (de hasta 128 caracteres) de caracteres alfanuméricos ASCII de 7 bits más determinados caracteres especiales: - . + % _ # * ? ! ( ) , : = @ $ '.
moduleId necesarias, de solo lectura en actualizaciones Una cadena que distingue entre mayúsculas y minúsculas (de hasta 128 caracteres) de caracteres alfanuméricos ASCII de 7 bits más determinados caracteres especiales: - . + % _ # * ? ! ( ) , : = @ $ '.
generationId requerido, de solo lectura Una cadena de hasta 128 caracteres que distingue mayúsculas y minúsculas generada por el centro de IoT. Este valor se usa para distinguir dispositivos con el mismo deviceId, cuando se han eliminado y vuelto a crear.
ETag requerido, de solo lectura Una cadena que representa un valor de ETag débil para la identidad del dispositivo, como RFC7232.
autenticación opcional Un objeto compuesto que contiene material de seguridad e información de autenticación. Para más información, consulte el mecanismo de autenticación en la documentación de API REST.
managedBy opcional Identifica quién administra este módulo. Por ejemplo, este valor es "IoT Edge" si el entorno de ejecución perimetral posee este módulo.
cloudToDeviceMessageCount solo lectura Número de mensajes de nube a módulo actualmente en cola para enviarse al módulo.
connectionState solo lectura Un campo que indica el estado de la conexión: Conectado o Desconectado. Este campo representa la vista de IoT Hub del estado de conexión del dispositivo. Importante: Este campo debe usarse solo para fines de desarrollo o depuración. El estado de conexión se actualiza solo para dispositivos que usen AMQP o MQTT. Además, se basa en pings de nivel de protocolo (pings MQTT o pings AMQP) y puede tener un retraso de 5 minutos como máximo. Por estos motivos es posible que haya falsos positivos, como dispositivos desconectados que se notifican como conectados.
connectionStateUpdatedTime solo lectura Un indicador temporal que muestra la fecha y hora de la última vez que se actualizó el estado de conexión.
lastActivityTime solo lectura Un indicador temporal que muestra la fecha y hora de la última vez que el dispositivo se conectó, recibió o envió un mensaje.

Nota

Actualmente los SDK del dispositivo no admiten el uso de los caracteres + y # en deviceId y moduleId.

Material de referencia adicional

Otros artículos de referencia en la guía del desarrollador de IoT Hub son:

  • En Puntos de conexión de IoT Hub se describen los diferentes puntos de conexión que expone cada centro de IoT Hub para las operaciones en tiempo de ejecución y de administración.

  • En Cuotas y limitación se describen las cuotas y el comportamiento de limitación que se aplican al servicio IoT Hub.

  • En SDK de dispositivo y servicio IoT de Azure se muestran los diversos SDK de lenguaje que puede usar para desarrollar aplicaciones para dispositivo y de servicio que interactúen con IoT Hub.

  • En Lenguaje de consulta de IoT Hub se describe el lenguaje de consulta que se puede usar para recuperar información de IoT Hub sobre los trabajos y dispositivos gemelos.

  • En Compatibilidad con MQTT de IoT Hub se proporciona más información sobre la compatibilidad de IoT Hub con el protocolo MQTT.

Pasos siguientes

Ahora que ha aprendido a usar el registro de identidad de IoT Hub, pueden interesarle los siguientes artículos de la Guía para desarrolladores de IoT Hub:

Para explorar el uso del servicio IoT Hub Device Provisioning para habilitar el aprovisionamiento Just-In-Time sin intervención del usuario, vea: