Controlar acceso a IoT Hub mediante Microsoft Entra ID
Artículo
Puede usar Microsoft Entra ID para autenticar las solicitudes a las API del servicio Azure IoT Hub, como crear una identidad de dispositivo o invocar un método directo. También puede usar el control de acceso basado en roles de Azure (RBAC de Azure) para autorizar esas mismas API del servicio. Al usar conjuntamente estas tecnologías, puede conceder permisos para acceder a API del servicio IoT Hub a una entidad de seguridad de Microsoft Entra. Esta entidad de seguridad podría ser un usuario, grupo o entidad de servicio de aplicación.
La autenticación del acceso con Microsoft Entra ID y el control de permisos con RBAC de Azure proporcionan una mayor seguridad y facilidad de uso respecto a los tokens de seguridad. Para minimizar los posibles problemas de seguridad inherentes a los tokens de seguridad, se recomienda aplicar la autenticación de Microsoft Entra siempre que sea posible.
Nota
La autenticación con Microsoft Entra ID no es compatible con las API de dispositivo de IoT Hub (como mensajes del dispositivo a la nube y la actualización de las propiedades notificadas). Use claves simétricas o X.509 para autenticar dispositivos en IoT Hub.
Autenticación y autorización
La autenticación es el proceso de demostrar que es quien dice ser. La autenticación comprueba la identidad de un usuario o dispositivo en IoT Hub. A veces se acorta a AuthN.
La autorización es el proceso de confirmar permisos para un usuario o dispositivo autenticado en IoT Hub. Especifica los recursos y comandos a los que puede acceder y lo que puede hacer con esos recursos y comandos. A veces, la autorización se acorta a AuthZ.
Cuando una entidad de seguridad de Microsoft Entra solicita el acceso a una API del servicio IoT Hub, la identidad de la entidad de seguridad primero se autentica. Para realizar la autenticación, la solicitud debe contener un token de acceso de OAuth 2.0 en el entorno de ejecución. El nombre del recurso para solicitar el token es https://iothubs.azure.net. Si la aplicación se ejecuta en un recurso de Azure, como una máquina virtual de Azure, una aplicación de función de Azure Functions o una aplicación de Azure App Service, se puede representar como una identidad administrada.
Una vez autenticada la entidad de Microsoft Entra, el siguiente paso es la autorización. En este paso, IoT Hub usa el servicio de asignación de roles de Microsoft Entra para determinar que permisos tiene la entidad de seguridad. Si los permisos de la entidad de seguridad coinciden con el recurso o la API solicitados, IoT Hub autoriza la solicitud. Así, este paso exige que se asignen uno o varios roles de Azure a la entidad de seguridad. IoT Hub proporciona algunos roles integrados que tienen grupos comunes de permisos.
Administración del acceso a IoT Hub mediante la asignación de roles de RBAC de Azure
Con Microsoft Entra ID y RBAC, IoT Hub requiere que la entidad de seguridad que solicita la API tenga el nivel de permiso adecuado para la autorización. Para conceder permiso a la entidad de seguridad, asígnele también una asignación de roles.
Para garantizar los privilegios mínimos, asigne siempre el rol adecuado en el ámbito de recursos más bajo posible,que es probable que sea el ámbito de IoT Hub.
Azure proporciona los siguientes roles integrados de Azure para autorizar el acceso a la API del servicio IoT Hub mediante Microsoft Entra ID y RBAC:
Antes de asignar un rol de Azure RBAC a una entidad de seguridad, determine el ámbito de acceso que debería tener la entidad de seguridad. Siempre es mejor conceder únicamente el ámbito más restringido posible. Los roles de Azure RBAC definidos en un ámbito más amplio los heredan los recursos que están debajo de ellos.
En la lista se describen los niveles en los que puede definir el ámbito de acceso a IoT Hub, empezando por el ámbito más restringido:
IoT Hub. En este ámbito, se aplica una asignación de roles a IoT Hub. No hay ningún ámbito menor que un centro de IoT individual. No se admite la asignación de roles en ámbitos más pequeños, como la identidad de dispositivo individual.
el grupo de recursos. En este ámbito, se aplica una asignación de roles a todos los centros de IoT del grupo de recursos.
Suscripción. En este ámbito, se aplica una asignación de roles a todos los centros de IoT de todos los grupos de recursos de la suscripción.
Un grupo de administración. En este ámbito, se aplica una asignación de roles a todos los centros de IoT de todos los grupos de recursos de todas las suscripciones del grupo de administración.
Permisos para las API del servicio IoT Hub
En las tablas siguientes se describen los permisos disponibles para las API del servicio IoT Hub. Para permitir que un cliente llame a una operación determinada, asegúrese de que el rol RBAC asignado del cliente ofrezca permisos suficientes para esa operación.
Acción de RBAC
Descripción
Microsoft.Devices/IotHubs/devices/read
Lee cualquier identidad de dispositivo o módulo.
Microsoft.Devices/IotHubs/devices/write
Crea o actualiza cualquier identidad de dispositivo o módulo.
Microsoft.Devices/IotHubs/devices/delete
Elimina cualquier identidad del dispositivo o módulo.
De forma predeterminada, IoT Hub permite el acceso a la API de servicio a través de Microsoft Entra ID, además de mediante directivas de acceso compartido y tokens de seguridad. Para minimizar posibles vulnerabilidades de seguridad asociadas a los tokens de seguridad, puede deshabilitar el acceso con directivas de acceso compartido.
Advertencia
Al denegar las conexiones mediante directivas de acceso compartido, todos los usuarios y servicios que se conectan mediante este método pierden el acceso inmediatamente. En particular, dado que Device Provisioning Service (DPS) solo admite la vinculación de centros de IoT mediante directivas de acceso compartido, se producirá el error "No autorizado" en todos los flujos de aprovisionamiento de dispositivos. Proceda con cautela y planee reemplazar el acceso por el acceso basado en roles de Microsoft Entra.
No continuar si usa un servicio de aprovisionamiento de dispositivos.
En Azure Portal, vaya hasta su instancia de IoT Hub.
En el panel izquierdo, seleccione Directivas de acceso compartido.
En Conectar con las directivas de acceso compartido, seleccione Denegar y revise la advertencia.
Seleccione Guardar.
Ahora solo se puede acceder a las API del servicio IoT Hub mediante Microsoft Entra ID y RBAC.
Acceso de Microsoft Entra ID desde Azure Portal
Puede proporcionar acceso a IoT Hub desde Azure Portal con directivas de acceso compartido o permisos de Microsoft Entra.
Cuando intenta acceder a IoT Hub desde Azure Portal, Azure Portal primero comprueba si se le ha asignado un rol de Azure con Microsoft.Devices/iotHubs/listkeys/action. Si es así, Azure Portal usará las claves de las directivas de acceso compartido para acceder a IoT Hub. En caso contrario, Azure Portal intentará acceder a los datos mediante su cuenta de Microsoft Entra.
Para acceder a IoT Hub desde Azure Portal con su cuenta de Microsoft Entra, necesita permisos para acceder a los recursos de datos de IoT Hub (como los dispositivos y gemelos). También necesita permisos para acceder al recurso de IoT Hub en Azure Portal. Los roles integrados proporcionados por IoT Hub conceden acceso a recursos como dispositivos y gemelos, pero no conceden acceso al recurso de IoT Hub. Por lo tanto, el acceso al portal también requiere la asignación de un rol de Azure Resource Manager, como Lector. El rol Lector es una buena opción porque es el rol más restringido que le permite navegar por el portal. y no incluye el permiso Microsoft.Devices/iotHubs/listkeys/action (que proporciona acceso a todos los recursos de datos de IoT Hub a través de directivas de acceso compartido).
Para asegurarse de que una cuenta no tiene acceso fuera de los permisos asignados, no incluya el permiso Microsoft.Devices/iotHubs/listkeys/action al crear un rol personalizado. Por ejemplo, para crear un rol personalizado que pueda leer identidades de dispositivo, pero que no pueda crear ni eliminar dispositivos, cree un rol personalizado que:
Tenga la acción de datos Microsoft.Devices/IotHubs/devices/read.
No tenga la acción de datos Microsoft.Devices/IotHubs/devices/write.
No tenga la acción de datos Microsoft.Devices/IotHubs/devices/delete.
No tenga la acción Microsoft.Devices/iotHubs/listkeys/action.
A continuación, asegúrese de que la cuenta no tiene ningún otro rol que tenga el permiso Microsoft.Devices/iotHubs/listkeys/action, como Propietario o Colaborador. Para permitir que la cuenta tenga acceso a los recursos y pueda navegar por el portal, asigne Lector.
Acceso de Microsoft Entra ID desde la CLI de Azure
La mayoría de comandos de IoT Hub admiten autenticación de Microsoft Entra. Puede controlar el tipo de autenticación que se usa para ejecutar comandos mediante el parámetro --auth-type, que acepta los valores key o login. El valor predeterminado es key.
Cuando --auth-type tiene el valor de key, como antes, la CLI detecta automáticamente una directiva adecuada al interactuar con IoT Hub.
Cuando --auth-type tiene el valor login, se utiliza un token de acceso de la entidad de seguridad que ha iniciado sesión en la CLI de Azure para llevar a cabo la operación.
Para saber cómo se usan los tokens de acceso, los tokens de actualización y los tokens de identificación en la autorización y la autenticación, consulte Tokens de seguridad.
Muestre las características de Microsoft Entra ID para modernizar las soluciones de identidad, implementar soluciones híbridas e implementar la gobernanza de identidades.
Este artículo una descripción del registro de identidades de IoT Hub y cómo usarlo para administrar los dispositivos. Incluye información sobre la importación y exportación de identidades de dispositivos de forma masiva.
Obtenga información sobre cómo las API REST para IoT Hub ofrecen acceso mediante programación al dispositivo, la mensajería y los servicios de trabajo, así como al proveedor de recursos, en IoT Hub.