Compartir a través de


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. Un dispositivo o un módulo se puede autenticar en el centro de IoT en función de 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.

El registro de identidades es una colección compatible con REST de recursos de identidad. 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.

Use el registro de identidad para lo siguiente:

  • Aprovisionar dispositivos o módulos que se conectan a la instancia de IoT Hub
  • Control del acceso por dispositivo o por módulo a los puntos de conexión del centro.

Operaciones de registro de identidad

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

  • Creación de la identidad
  • Identidad de actualización
  • Recuperación de la identidad por identificador
  • Eliminar identidad
  • Enumerar hasta 1.000 identidades
  • Exportación de identidades a Azure Blob Storage
  • Importar todas las identidades desde Azure Blob Storage

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

Un registro de identidades de IoT Hub no contiene ningún metadato 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

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

Use operaciones asincrónicas en el punto de conexión del proveedor de recursos de IoT Hub para importar o exportar identidades de dispositivo de forma masiva desde el registro de identidades de un centro de IoT. Las importaciones y exportaciones son trabajos de larga duración que usan un contenedor de blobs proporcionado por el cliente.

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 registro de identidades de IoT Hub 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 es posible 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. Para más información, consulte la documentación de Device Provisioning Service.

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 el origen de datos igual a DeviceLifecycleEvents, los eventos de ciclo de vida se envían tanto para identidades de dispositivo como para identidades de módulo. El contenido del mensaje difiere en función de si los eventos se generan para identidades de módulo o identidades de dispositivo. 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.

Las notificaciones para la creación de identidades de módulo son diferentes para los módulos de IoT Edge que para otros módulos. En el caso de los módulos de IoT Edge, la notificación de creación solo se envía si se está ejecutando el dispositivo IoT Edge correspondiente. 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.

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 Enabled o Disabled. Si Enabled, el dispositivo puede conectarse. Si Disabled, el dispositivo no puede acceder a ningún punto de conexión orientado al 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 Campo que indica el estado de conexión: Connected o Disconnected. Este campo representa la vista de IoT Hub del estado de conexión del dispositivo. Importante: Este campo solo se debe usar con fines de desarrollo y 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.

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: - . % _ * ? ! ( ) , : = @ $ '. 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.
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 Campo que indica el estado de conexión: Connected o Disconnected. Este campo representa la vista de IoT Hub del estado de conexión del dispositivo. Importante: Este campo solo se debe usar con fines de desarrollo y 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.

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