Revisión de opciones de almacenamiento en la nube para soluciones de Azure IoT

Completado

Hay una amplia variedad de opciones de almacenamiento en la nube disponibles para los arquitectos que diseñan soluciones de Azure IoT. Cada solución tiene consideraciones de diseño que se deben ponderar.

Entre las opciones de almacenamiento de Azure que se encuentran normalmente en las soluciones de Azure IoT Hub se incluyen las siguientes:

  • Azure Blob Storage y Azure Data Lake Gen2, que están disponibles como puntos de conexión de enrutamiento de IoT Hub.
  • Azure Cosmos DB y Azure SQL Database, que están disponibles como salidas de Azure Stream Analytics.

Características de Azure Storage

Azure Storage es la solución de almacenamiento de Microsoft para los escenarios modernos de almacenamiento de datos. Azure Storage ofrece un almacén de objetos que se puede escalar de forma masiva destinado a objetos de datos, un servicio de sistema de archivos para la nube, un almacén de mensajería para mensajería confiable y un almacén NoSQL. Azure Storage se caracteriza por ofrecer lo siguiente:

  • Duradero y altamente disponible. La redundancia garantiza que los datos estén seguros en caso de producirse un error de hardware transitorio. También puede optar por replicar datos entre centros de datos o regiones geográficas para obtener protección adicional frente a catástrofes locales o desastres naturales. Los datos replicados de esta manera permanecen con una alta disponibilidad en caso de una interrupción inesperada.
  • Seguro. El servicio cifra todos los datos escritos en Azure Storage. Azure Storage proporciona un control pormenorizado sobre quién tiene acceso a los datos.
  • Escalable. Azure Storage está diseñado para poderse escalar de forma masiva para satisfacer las necesidades de rendimiento y almacenamiento de datos de las aplicaciones de hoy en día.
  • Administrado. Microsoft Azure controla automáticamente el mantenimiento, las actualizaciones y los problemas críticos del hardware.
  • Accesible. Es posible acceder a los datos de Azure Storage desde cualquier parte del mundo a través de HTTP o HTTPS. Microsoft proporciona bibliotecas cliente para Azure Storage en distintos lenguajes, como .NET, Java, Node.js, Python, Go y otros, y una API REST sólida. Azure Storage admite la escritura en Azure PowerShell o la CLI de Azure. Y Azure Portal y el Explorador de Azure Storage ofrecen soluciones visuales sencillas para trabajar con los datos.

Azure Storage como punto de conexión de enrutamiento

Hay dos servicios de almacenamiento a los que IoT Hub puede enrutar mensajes:

  • Azure Blob Storage
  • Cuentas de Azure Data Lake Storage Gen2 (ADLS Gen2)

Los dos servicios usan blobs para su almacenamiento. Las cuentas de Azure Data Lake Storage son cuentas de almacenamiento habilitadas para espacios de nombres jerárquicos que se basan en Blob Storage.

IoT Hub admite la escritura de datos en Azure Storage en los formatos Apache Avro y JSON. El predeterminado es Avro. Al usar codificación de JSON, debe establecer Content-Type en application/json y contentEncoding en UTF-8 en las propiedades del sistema de mensajes. Ambos valores no distinguen mayúsculas de minúsculas. Si no está establecida la codificación del contenido, IoT Hub escribe los mensajes en formato codificado base 64.

El formato de codificación solo se puede establecer cuando se configura el punto de conexión de Blob Storage; no se puede editar para un punto de conexión existente. Para cambiar los formatos de codificación de un punto de conexión existente, debe eliminar y volver a crear el punto de conexión personalizado con el formato que quiera. Una estrategia útil podría ser crear un nuevo punto de conexión personalizado con el formato de codificación deseado y agregar una ruta paralela a ese punto de conexión. De esta manera, puede comprobar los datos antes de eliminar el punto de conexión existente.

Protección del acceso a las cuentas de almacenamiento

Cada vez que accede a datos de la cuenta de almacenamiento, la aplicación cliente realiza una solicitud a través de HTTP/HTTPS a Azure Storage. De forma predeterminada, todos los recursos de Azure Storage están protegidos y todas las solicitudes a un recurso seguro se deben autorizar. La autorización garantiza que la aplicación cliente tenga los permisos adecuados para acceder a un recurso en concreto de la cuenta de almacenamiento.

Cada opción de autorización se describe brevemente a continuación:

  • Autorización con clave compartida para blobs, archivos, colas y tablas. Los clientes con clave compartida pasan un encabezado con cada solicitud que está firmado con la clave de acceso de la cuenta de almacenamiento.

    Microsoft recomienda impedir la autorización de clave compartida para la cuenta de almacenamiento. Si no se permite la autorización de clave compartida, los clientes deben usar Microsoft Entra ID o una delegación de usuario con firma de acceso compartido para autorizar solicitudes de datos en esa cuenta de almacenamiento.

  • Firmas de acceso compartido para blobs, archivos, colas y tablas. Las firmas de acceso compartido (SAS) proporcionan acceso delegado limitado a recursos de una cuenta de almacenamiento a través de una URL firmada. La dirección URL firmada especifica los permisos concedidos al recurso y el intervalo en el que la firma es válida. Una SAS de servicio o SAS de cuenta está firmada con la clave de cuenta, mientras que la SAS de delegación de usuarios está firmada con credenciales de Microsoft Entra y solo se aplica a blobs.

  • Integración de Microsoft Entra para autorizar solicitudes a recursos de blob, cola y tabla. Microsoft recomienda usar las credenciales de Microsoft Entra para autorizar las solicitudes de datos siempre que sea posible para mayor seguridad y facilidad de uso.

    Puede usar el control de acceso basado en rol de Azure (RBAC de Azure) para administrar los permisos de una entidad de seguridad para los recursos de blob, cola y tabla de una cuenta de almacenamiento. Además, puede usar el control de acceso basado en atributos (ABAC) de Azure para agregar condiciones a las asignaciones de roles de Azure para los recursos de blob.

  • Autenticación de Microsoft Entra Domain Services para Azure Files. Azure Files admite la autorización basada en identidad sobre Bloque de mensajes del servidor(SMB) mediante Microsoft Entra Domain Services. Puede usar Azure RBAC para el control específico de acceso de los clientes a los recursos de Azure Files en una cuenta de almacenamiento.

  • Autenticación de Active Directory Domain Services (AD DS o AD DS local) para Azure Files. Azure Files admite la autorización basada en identidad sobre SMB mediante AD DS. El entorno de AD DS se puede hospedar en máquinas locales o en VM de Azure. El acceso de SMB a Files se admite mediante el uso de las credenciales de AD DS de las máquinas unidas a un dominio, independientemente de que sea local o en Azure. Puede usar una combinación de Azure RBAC para el control de acceso a nivel de recurso compartido y listas de control de acceso discrecional de NTFS para el cumplimiento de los permisos a nivel de archivo/directorio.

  • Se admite el acceso de lectura anónimo para los datos de blobs, pero no se recomienda. Cuando se configura el acceso anónimo, los clientes pueden leer datos de blob sin autorización. Se recomienda deshabilitar el acceso anónimo para todas las cuentas de almacenamiento.

  • Los usuarios locales de almacenamiento se pueden usar para acceder a blobs con SFTP o archivos con SMB. Los usuarios locales de almacenamiento admiten permisos de nivel de contenedor para la autorización.