Controllare l'accesso alle hub IoT usando Microsoft Entra ID

È possibile usare Microsoft Entra ID per autenticare le richieste alle API del servizio hub IoT di Azure, ad esempio creare l'identità del dispositivo e richiamare il metodo diretto. È anche possibile usare il controllo degli accessi in base al ruolo di Azure per autorizzare le stesse API del servizio. Usando queste tecnologie insieme, è possibile concedere le autorizzazioni per accedere alle API del servizio hub IoT a un'entità di sicurezza Di Microsoft Entra. Questa entità di sicurezza può essere un utente, un gruppo o un'entità servizio dell'applicazione.

L'autenticazione dell'accesso tramite Microsoft Entra ID e il controllo delle autorizzazioni tramite il controllo degli accessi in base al ruolo di Azure offre una maggiore sicurezza e facilità d'uso sui token di sicurezza. Per ridurre al minimo i potenziali problemi di sicurezza intrinseci nei token di sicurezza, è consigliabile applicare l'autenticazione di Microsoft Entra quando possibile.

Nota

L'autenticazione con Microsoft Entra ID non è supportata per le API del dispositivo hub IoT (ad esempio i messaggi da dispositivo a cloud e aggiornare le proprietà segnalate). Usare chiavi simmetriche o X.509 per autenticare i dispositivi per hub IoT.

Autenticazione e autorizzazione

L'autenticazione è il processo di dimostrazione di chi si dice di essere. L'autenticazione verifica l'identità di un utente o di un dispositivo per hub IoT. A volte viene abbreviato in AuthN. L'autorizzazione è il processo di conferma delle autorizzazioni per un utente o un dispositivo autenticato in hub IoT. Specifica le risorse e i comandi a cui è consentito l'accesso e le operazioni che è possibile eseguire con tali risorse e comandi. L'autorizzazione viene talvolta abbreviata in AuthZ.

Quando un'entità di sicurezza Di Microsoft Entra richiede l'accesso a un'API del servizio hub IoT, l'identità dell'entità viene prima autenticata. Per l'autenticazione, la richiesta deve contenere un token di accesso OAuth 2.0 in fase di esecuzione. Il nome della risorsa per la richiesta del token è https://iothubs.azure.net. Se l'applicazione viene eseguita in una risorsa di Azure come una macchina virtuale di Azure, un'app Funzioni di Azure o un'app del servizio app Azure, può essere rappresentata come identità gestita.

Dopo l'autenticazione dell'entità microsoft Entra, il passaggio successivo è l'autorizzazione. In questo passaggio, hub IoT usa il servizio di assegnazione dei ruoli Microsoft Entra per determinare quali autorizzazioni dispone dell'entità. Se le autorizzazioni dell'entità corrispondono alla risorsa o all'API richiesta, hub IoT autorizza la richiesta. Questo passaggio richiede quindi l'assegnazione di uno o più ruoli di Azure all'entità di sicurezza. hub IoT fornisce alcuni ruoli predefiniti che dispongono di gruppi comuni di autorizzazioni.

Gestire l'accesso alle hub IoT usando l'assegnazione di ruolo controllo degli accessi in base al ruolo di Azure

Con Microsoft Entra ID e controllo degli accessi in base al ruolo, hub IoT richiede all'entità di sicurezza che richiede all'API di disporre del livello di autorizzazione appropriato. Per concedere all'entità l'autorizzazione, assegnargli un'assegnazione di ruolo.

Per garantire il privilegio minimo, assegnare sempre il ruolo appropriato al più basso ambito possibile della risorsa, probabilmente l'ambito hub IoT.

hub IoT fornisce i ruoli predefiniti di Azure seguenti per autorizzare l'accesso alle API del servizio hub IoT tramite Microsoft Entra ID e controllo degli accessi in base al ruolo:

Ruolo Descrizione
Collaboratore dati hub IoT Consente l'accesso completo alle operazioni hub IoT piano dati.
lettore dati hub IoT Consente l'accesso in lettura completo alle proprietà del piano dati hub IoT.
Collaboratore del Registro di sistema hub IoT Consente l'accesso completo al registro dei dispositivi hub IoT.
Collaboratore hub IoT gemello Consente l'accesso in lettura e scrittura a tutti i dispositivi e moduli gemelli hub IoT.

È anche possibile definire ruoli personalizzati da usare con hub IoT combinando le autorizzazioni necessarie. Per altre informazioni, vedere Creare ruoli personalizzati per il controllo degli accessi in base al ruolo di Azure.

Ambito risorsa

Prima di assegnare un ruolo controllo degli accessi in base al ruolo di Azure a un'entità di sicurezza, determinare l'ambito di accesso che l'entità di sicurezza deve avere. È sempre consigliabile concedere solo l'ambito più ristretto possibile. I ruoli controllo degli accessi in base al ruolo di Azure definiti in un ambito più ampio vengono ereditati dalle risorse sottostanti.

Questo elenco descrive i livelli in cui è possibile definire l'ambito dell'accesso a hub IoT, a partire dall'ambito più ristretto:

  • Hub IoT. In questo ambito, un'assegnazione di ruolo si applica all'hub IoT. Non esiste un ambito inferiore a un singolo hub IoT. L'assegnazione di ruolo in ambiti più piccoli, ad esempio la singola sezione relativa all'identità del dispositivo o al dispositivo gemello, non è supportata.
  • Il gruppo di risorse. In questo ambito, un'assegnazione di ruolo si applica a tutti gli hub IoT nel gruppo di risorse.
  • La sottoscrizione. In questo ambito, un'assegnazione di ruolo si applica a tutti gli hub IoT in tutti i gruppi di risorse nella sottoscrizione.
  • Un gruppo di gestione. In questo ambito, un'assegnazione di ruolo si applica a tutti gli hub IoT in tutti i gruppi di risorse in tutte le sottoscrizioni nel gruppo di gestione.

Autorizzazioni per le API del servizio hub IoT

Nella tabella seguente vengono descritte le autorizzazioni disponibili per le operazioni API del servizio hub IoT. Per consentire a un client di chiamare una determinata operazione, assicurarsi che il ruolo controllo degli accessi in base al ruolo assegnato al client offra autorizzazioni sufficienti per l'operazione.

Azione controllo degli accessi in base al ruolo Descrizione
Microsoft.Devices/IotHubs/devices/read Legge qualsiasi identità del dispositivo o del modulo.
Microsoft.Devices/IotHubs/devices/write Creare o aggiornare qualsiasi identità del dispositivo o del modulo.
Microsoft.Devices/IotHubs/devices/delete Eliminare qualsiasi identità del dispositivo o del modulo.
Microsoft.Devices/IotHubs/twins/read Legge qualsiasi dispositivo o modulo gemello.
Microsoft.Devices/IotHubs/twins/write Scrivere qualsiasi dispositivo o modulo gemello.
Microsoft.Devices/IotHubs/jobs/read Restituisce un elenco di processi.
Microsoft.Devices/IotHubs/jobs/write Creare o aggiornare qualsiasi processo.
Microsoft.Devices/IotHubs/jobs/delete Eliminare qualsiasi processo.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/send/action Inviare un messaggio da cloud a dispositivo a qualsiasi dispositivo.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/feedback/action Ricevere, completare o abbandonare una notifica di feedback dei messaggi da cloud a dispositivo.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/queue/purge/action Eliminare tutti i comandi in sospeso per un dispositivo.
Microsoft.Devices/IotHubs/directMethods/invoke/action Richiamare un metodo diretto in qualsiasi dispositivo o modulo.
Microsoft.Devices/IotHubs/fileUpload/notifications/action Ricevere, completare o abbandonare le notifiche di caricamento dei file.
Microsoft.Devices/IotHubs/statistics/read Leggere le statistiche relative a dispositivi e servizi.
Microsoft.Devices/IotHubs/configurations/read Leggere le configurazioni di gestione dei dispositivi.
Microsoft.Devices/IotHubs/configurations/write Creare o aggiornare le configurazioni di gestione dei dispositivi.
Microsoft.Devices/IotHubs/configurations/delete Eliminare qualsiasi configurazione di gestione dei dispositivi.
Microsoft.Devices/IotHubs/configurations/applyToEdgeDevice/action Applicare il contenuto di configurazione a un dispositivo perimetrale.
Microsoft.Devices/IotHubs/configurations/testQueries/action Convalidare la condizione di destinazione e le query di metrica personalizzate per una configurazione.

Suggerimento

  • L'operazione di aggiornamento del Registro di sistema bulk richiede sia Microsoft.Devices/IotHubs/devices/write che Microsoft.Devices/IotHubs/devices/delete.
  • L'operazione Di query gemella richiede Microsoft.Devices/IotHubs/twins/read.
  • Get Digital Twin richiede Microsoft.Devices/IotHubs/twins/read. L'aggiornamento di Gemelli digitali richiede Microsoft.Devices/IotHubs/twins/write.
  • Sia il comando Invoke Component che il comando Invoke Root Level richiedono Microsoft.Devices/IotHubs/directMethods/invoke/action.

Nota

Per ottenere dati da hub IoT usando Microsoft Entra ID, configurare il routing in un hub eventi separato. Per accedere all'endpoint compatibile con Hub eventi predefinito, usare il metodo stringa di connessione (chiave di accesso condiviso) come in precedenza.

Applicare l'autenticazione di Microsoft Entra

Per impostazione predefinita, hub IoT supporta l'accesso all'API del servizio tramite Microsoft Entra ID e criteri di accesso condiviso e token di sicurezza. Per ridurre al minimo le potenziali vulnerabilità di sicurezza intrinseche nei token di sicurezza, è possibile disabilitare l'accesso con i criteri di accesso condiviso.

Avviso

Negando le connessioni tramite criteri di accesso condiviso, tutti gli utenti e i servizi che si connettono usando questo metodo perdono immediatamente l'accesso. In particolare, poiché il servizio Device Provisioning supporta solo il collegamento degli hub IoT tramite criteri di accesso condiviso, tutti i flussi di provisioning dei dispositivi avranno esito negativo con errore "non autorizzato". Procedere con attenzione e pianificare la sostituzione dell'accesso con l'accesso basato sul ruolo Microsoft Entra. Non procedere se si usa DPS.

  1. Assicurarsi che i client e gli utenti del servizio abbiano accesso sufficiente all'hub IoT. Seguire il principio dei privilegi minimi.
  2. Nel portale di Azure passare all'hub IoT.
  3. Nel riquadro sinistro selezionare Criteri di accesso condiviso.
  4. In Connessione uso dei criteri di accesso condiviso selezionare Nega ed esaminare l'avviso. Screenshot that shows how to turn off IoT Hub shared access policies.

È ora possibile accedere alle API del servizio hub IoT solo tramite Microsoft Entra ID e controllo degli accessi in base al ruolo.

Accesso all'ID Microsoft Entra dal portale di Azure

È possibile fornire l'accesso alle hub IoT dal portale di Azure con i criteri di accesso condiviso o le autorizzazioni di Microsoft Entra.

Quando si tenta di accedere a hub IoT dal portale di Azure, il portale di Azure controlla prima di tutto se è stato assegnato un ruolo di Azure con Microsoft.Devices/iotHubs/listkeys/action. In caso affermativo, il portale di Azure usa le chiavi dei criteri di accesso condiviso per accedere alle hub IoT. In caso contrario, il portale di Azure tenta di accedere ai dati usando l'account Microsoft Entra.

Per accedere alle hub IoT dal portale di Azure usando l'account Microsoft Entra, sono necessarie le autorizzazioni per accedere alle risorse dati hub IoT (ad esempio dispositivi e gemelli). Sono necessarie anche le autorizzazioni per passare alla risorsa hub IoT nella portale di Azure. I ruoli predefiniti forniti da hub IoT concedere l'accesso a risorse come dispositivi e dispositivi gemelli, ma non concedono l'accesso alla risorsa hub IoT. L'accesso al portale richiede quindi anche l'assegnazione di un ruolo di Azure Resource Manager, ad esempio Lettore. Il ruolo lettore è una scelta ottimale perché è il ruolo più limitato che consente di esplorare il portale. Non include l'autorizzazione ( che fornisce l'accesso Microsoft.Devices/iotHubs/listkeys/action a tutte le risorse dati hub IoT tramite criteri di accesso condiviso).

Per assicurarsi che un account non abbia accesso all'esterno delle autorizzazioni assegnate, non includere l'autorizzazione Microsoft.Devices/iotHubs/listkeys/action quando si crea un ruolo personalizzato. Ad esempio, per creare un ruolo personalizzato in grado di leggere le identità dei dispositivi, ma non può creare o eliminare i dispositivi, creare un ruolo personalizzato che:

  • Ha l'azione Microsoft.Devices/IotHubs/devices/read dei dati.
  • L'azione relativa ai dati non è disponibile Microsoft.Devices/IotHubs/devices/write .
  • L'azione relativa ai dati non è disponibile Microsoft.Devices/IotHubs/devices/delete .
  • Non ha l'azione Microsoft.Devices/iotHubs/listkeys/action .

Assicurarsi quindi che l'account non disponga di altri ruoli che dispongono dell'autorizzazione Microsoft.Devices/iotHubs/listkeys/action , ad esempio Proprietario o Collaboratore. Per consentire all'account di avere accesso alle risorse e spostarsi nel portale, assegnare Lettore.

Accesso a Microsoft Entra ID dall'interfaccia della riga di comando di Azure

La maggior parte dei comandi in hub IoT supporta l'autenticazione di Microsoft Entra. È possibile controllare il tipo di autenticazione usato per eseguire i comandi usando il --auth-type parametro , che accetta o login valorikey. Il key valore è il valore predefinito.

  • Quando --auth-type ha il key valore , come in precedenza, l'interfaccia della riga di comando individua automaticamente un criterio appropriato quando interagisce con hub IoT.

  • Quando --auth-type ha il login valore , viene usato un token di accesso dall'interfaccia della riga di comando di Azure connesso all'entità per l'operazione.

Per altre informazioni, vedere la pagina relativa alla versione dell'estensione Azure IoT per l'interfaccia della riga di comando di Azure.

Esempi di SDK

Passaggi successivi

Usare il servizio Device Provisioning per effettuare il provisioning di più dispositivi X.509 usando i gruppi di registrazione.