Presentación de los flujos de dispositivos IoT Hub en versión preliminar pública

Publicado el 23 enero, 2019

Senior Program Manager, Azure IoT

En la primera era de hoy en día en la que prima la seguridad, garantizar la conectividad segura con los dispositivos de IoT es de suma importancia. Una amplia gama de escenarios operativos y de mantenimiento en el espacio de IoT dependen de la conectividad con dispositivos de extremo a extremo para que los usuarios y servicios puedan interactuar, iniciar sesión, resolver problemas, enviar o recibir datos de los dispositivos. La seguridad y el cumplimiento de las directivas de la organización son, por lo tanto, un ingrediente esencial en todos estos escenarios.

Los flujos de dispositivos de Azure IoT Hub son un nuevo servicio PaaS que responde a estas necesidades proporcionando una base para una conectividad segura de extremo a extremo con los dispositivos de IoT. Los clientes, asociados, desarrolladores de aplicaciones y proveedores de plataformas de terceros pueden aprovechar los flujos de dispositivos para comunicarse de forma segura con dispositivos IoT que se encuentran detrás de los firewalls o se implementan dentro de redes privadas. Además, la compatibilidad integrada con la pila TCP/IP hace que los flujos de dispositivos se puedan utilizar en a una amplia gama de aplicaciones, que incluyen tanto protocolos propietarios personalizados como protocolos basados ​​en estándares como shell remoto, web, transferencia de archivos y streaming de vídeo, entre otros.

En su núcleo, un flujo de dispositivo de IoT Hub es un túnel de transferencia de datos que proporciona conectividad entre dos puntos de conexión habilitados para TCP/IP: un lado del túnel es un dispositivo de IoT y el otro lado es un punto de conexión del cliente que intenta comunicarse con el dispositivo (a este último se hace referencia aquí como punto de conexión del servicio). Hemos visto muchas configuraciones en las que se prohíbe la conectividad directa con un dispositivo en función de las directivas de seguridad de la organización y las restricciones de conectividad implementadas en sus redes. Estas restricciones, aunque están justificadas, suelen afectar a varios escenarios legítimos que requieren conectividad con un dispositivo de IoT.

A continuación figuran algunos ejemplos de estos escenarios:

  • Un operador desea iniciar sesión en un dispositivo para realizar tareas de inspección o mantenimiento. Este escenario generalmente implica el registro en el dispositivo utilizando Secure Shell (SSH) para Linux y el protocolo de escritorio remoto (RDP) para Windows. El dispositivo o las configuraciones del firewall de red a menudo bloquean la estación de trabajo del operador e impiden que llegue al dispositivo.
  • Un operador necesita acceder de forma remota al portal de diagnósticos del dispositivo para solucionar problemas. Los portales de diagnósticos suelen tener la forma de un servidor web hospedado en el dispositivo. Igualmente, la dirección IP privada de un dispositivo o la configuración de su firewall pueden impedir que el usuario interactúe con el servidor web del dispositivo.
  • Un desarrollador de aplicaciones necesita recuperar de forma remota los registros y otra información de diagnóstico en tiempo de ejecución del sistema de archivos de un dispositivo. Los protocolos comúnmente utilizados para esta finalidad pueden incluir el protocolo de transferencia de archivos (FTP) o el de copia segura (SCP), entre otros. Nuevamente, las configuraciones del firewall generalmente restringen estos tipos de tráfico.

Los flujos de dispositivos de IoT Hub abordan las necesidades de conectividad de extremo a extremo de los escenarios anteriores mediante el aprovechamiento de un punto de conexión de nube de IoT Hub que actúa como un proxy para el tráfico de aplicaciones intercambiado entre el dispositivo y el servicio. Esta configuración se representa en la siguiente figura y funciona de la siguiente manera.

iot-hub-device-streams-overview

  • Los puntos de conexión de dispositivo y servicio crean conexiones de salida independientes con un punto de conexión de IoT Hub que actúa como un proxy para el tráfico que se transmite entre ellos.
  • El punto de conexión de IoT Hub retransmitirá los paquetes de tráfico enviados desde el dispositivo al servicio y viceversa. Esto establece un túnel bidireccional de extremo a extremo a través del cual las aplicaciones de dispositivos y servicios pueden comunicarse.
  • El túnel establecido a través de IoT Hub proporciona garantías de entrega de paquetes confiables y ordenadas. Además, la transferencia del tráfico a través de IoT Hub como intermediario se enmascara desde las aplicaciones, ofreciéndoles la experiencia perfecta de comunicación bidireccional directa que está al mismo nivel que TCP.

Ventajas

Los flujos de dispositivos de IoT Hub ofrecen las siguientes ventajas:

  • Conectividad segura apta para firewall: se puede acceder a los dispositivos de IoT desde los puntos de conexión de servicio sin abrir el puerto del firewall de entrada en los perímetros del dispositivo o de la red. Todo lo que se necesita es la capacidad de crear conexiones de salida a los puntos de conexión de la nube de IoT Hub a través del puerto 443 (los dispositivos que usan el SDK de IoT Hub ya mantienen tal conexión).
  • Cumplimiento de la autenticación: para establecer un flujo, tanto el dispositivo como los puntos de conexión necesitan autenticarse con IoT Hub utilizando sus credenciales correspondientes. Esto mejora la seguridad de la capa de comunicación del dispositivo, garantizando que la identidad de cada lado del túnel se comprueba antes de que se tenga lugar cualquier comunicación entre ellos.
  • Cifrado: de forma predeterminada, los flujos de dispositivos de IoT Hub utilizan conexiones habilitadas para TLS. Esto garantiza que el tráfico de la aplicación esté cifrado, independientemente de si la aplicación utiliza o no el cifrado.
  • Simplicidad de conectividad: el uso de flujos de dispositivos elimina la necesidad de una configuración compleja de redes privadas virtuales (VPN) para habilitar la conectividad con dispositivos de IoT. Además, a diferencia de las redes privadas virtuales, que ofrecen un amplio acceso a toda la red, los flujos de dispositivos son punto a punto, de manera que involucran a un solo dispositivo y un solo servicio en cada lado del túnel.
  • Compatibilidad con la pila TCP/IP: los flujos de dispositivos de IoT Hub pueden acomodar el tráfico de aplicaciones TCP/IP. Esto significa que una amplia gama de protocolos propietarios y basados ​​en estándares pueden aprovechar esta función. Esto incluye protocolos perfectamente establecidos, como el protocolo de escritorio remoto (RDP), Secure Shell (SSH), el protocolo de transferencia de archivos (FTP) y HTTP/REST, entre muchos otros.
  • Facilidad de uso en configuraciones de redes privadas: se puede acceder a los dispositivos que se implementan dentro de redes privadas sin tener que asignar direcciones IP públicamente enrutables a cada dispositivo. Otro caso similar afecta a dispositivos con asignación de dirección IP dinámica que el servicio podría no conocer en todo momento. En ambos casos, los flujos de dispositivos permiten la conectividad con un dispositivo de destino utilizando su identificador de dispositivo (en lugar de la dirección IP) como identificador.

Como se describió anteriormente, los flujos de dispositivos de IoT Hub son particularmente útiles cuando los dispositivos se ubican detrás de un firewall o dentro de una red privada (sin una dirección IP de acceso público). A continuación, revisamos una configuración de este tipo como un caso práctico donde la conectividad directa con el dispositivo está restringida.

Caso práctico: acceso a dispositivos remotos en una configuración de fabricación

Para ilustrar mejor la aplicabilidad de los flujos de dispositivos en escenarios de IoT reales, considere una configuración que incluya equipos y maquinaria (es decir, dispositivos de IoT) en la planta de una fábrica que estén conectados a la red de área local de dicha fábrica. La red de área local normalmente está conectada a Internet a través de una puerta de enlace de red o un proxy HTTP y está protegida mediante un firewall en el límite de la red. En esta configuración, el firewall se configura en función de las directivas de seguridad de las organizaciones que pueden prohibir la apertura de ciertos puertos del firewall. Por ejemplo, el puerto 3389, que el protocolo de escritorio remoto usa, suele estar bloqueado. Por lo tanto, los usuarios externos a la red no pueden acceder a los dispositivos a través de este puerto.

Si bien esta configuración de red es de uso generalizado, presenta desafíos para muchos escenarios comunes de IoT. Por ejemplo, si los operadores necesitan acceder a equipos desde fuera de la red de área local, es posible que el firewall necesite permitir la conectividad de entrada en puertos arbitrarios utilizados por la aplicación. En el caso de una máquina Windows que usa el protocolo RDP, esto entra en conflicto con las directivas de seguridad que bloquean el puerto 3389.

Mediante el uso de flujos de dispositivos, el tráfico RDP a los dispositivos de destino se canaliza a través de IoT Hub. Específicamente, este túnel se establece a través del puerto 443 utilizando conexiones de salida que se originan desde el dispositivo y el servicio. Por consiguiente, no es necesario relajar las directivas de firewall en la red de la fábrica. En nuestras guías de inicio rápido disponibles en los lenguajes C, C# y NodeJS, hemos incluido instrucciones sobre cómo aprovechar los flujos de dispositivos de IoT Hub para habilitar el escenario RDP. Otros protocolos pueden utilizar un enfoque similar simplemente configurando su puerto de comunicación correspondiente.

Pasos siguientes

Estamos entusiasmados con las posibilidades que se pueden habilitar para comunicarse con dispositivos de IoT de forma segura a través de flujos de dispositivos de IoT Hub. Durante la versión preliminar pública, la característica estará disponible para las instancias de IoT Hub creadas en algunas regiones. Si desea obtener más información, utilice los siguientes vínculos: