Condividi tramite


Controllare l'accesso all'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 un'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 insiti 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 le chiavi simmetriche o X.509 per autenticare i dispositivi nell'hub IoT.

Autenticazione e autorizzazione

L'autenticazione è un processo che consente di verificare che l'utente è chi dice di essere. L'autenticazione verifica l'identità di un utente o di un dispositivo nell'hub IoT. In lingua inglese, il termine autenticazione viene talvolta abbreviato in AuthN.

L'autorizzazione è il processo di conferma delle autorizzazioni per un utente o un dispositivo autenticato nell'hub IoT. Specifica le risorse e i comandi a cui è consentito l'accesso e le operazioni che è possibile eseguire con tali risorse e comandi. In lingua inglese, il termine autorizzazione viene talvolta abbreviato 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 di Funzioni di Azure o un'app del servizio app di Azure, può essere rappresentata come un'identità gestita.

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

Gestire l'accesso all'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, l'hub IoT richiede che l'entità che richiede l'API disponga del livello di autorizzazione appropriato. Per concedere l'autorizzazione all’entità, dargli un'assegnazione di ruolo.

Per garantire il privilegio minimo, assegnare sempre il ruolo appropriato all'ambito di risorsa più basso possibile, che è probabilmente l'ambito dell'hub IoT.

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

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

È anche possibile definire ruoli personalizzati da usare con l'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 preferibile concedere solo l'ambito più restrittivo 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 di accesso all’hub IoT, a partire dall'ambito più restrittivo:

  • Hub IoT. In questo ambito, un'assegnazione di ruolo viene applicata all'hub IoT. Non esiste un ambito inferiore a un singolo hub IoT. L'assegnazione di ruolo in ambiti più piccoli, ad esempio l'identità del singolo dispositivo, non è supportata.
  • Il gruppo di risorse. In questo ambito, un'assegnazione di ruolo viene applicata a tutti gli hub IoT nel gruppo di risorse.
  • La sottoscrizione. In questo ambito, un'assegnazione di ruolo viene applicata a tutti gli hub IoT in tutti i gruppi di risorse nella sottoscrizione.
  • Un gruppo di gestione. In questo ambito, un'assegnazione di ruolo viene applicata 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 dell'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 Crea o aggiorna tutti i processi.
Microsoft.Devices/IotHubs/jobs/delete Elimina tutti i processi.
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 del dispositivo e del servizio.
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

Nota

Per ottenere dati dall'hub IoT usando Microsoft Entra ID, configurare il routing a un endpoint di Hub eventi personalizzato. 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, l'hub IoT supporta l'accesso all'API del servizio tramite Microsoft Entra ID e i criteri di accesso condiviso e i 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 con 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 cautela e pianificare la sostituzione dell'accesso con l'accesso basato sui ruoli di Microsoft Entra.

Non procedere se si utilizza il servizio di provisioning dei dispositivi.

  1. Assicurarsi che i clienti e gli utenti del servizio abbiano un accesso sufficiente all'hub IoT. Seguire il principio del privilegio minimo.

  2. Nel portale di Azure passare all'hub IoT.

  3. Nel riquadro sinistro, selezionare Criteri di accesso condiviso.

  4. In corrispondenza di Connetti usando i criteri di accesso condivisi, selezionare Rifiuta e controllare l'avviso.

    Schermata che mostra come disattivare i criteri di accesso condiviso dell’hub IoT.

  5. Seleziona Salva.

È ora possibile accedere alle API del servizio dell'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 all'hub IoT dal portale di Azure con i criteri di accesso condiviso o le autorizzazioni di Microsoft Entra.

Quando si prova ad accedere all'hub IoT dal portale di Azure, il portale di Azure verifica innanzitutto 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 a hub IoT. In caso contrario, il portale di Azure tenta di accedere ai dati usando l'account Microsoft Entra.

Per accedere all'hub IoT dal portale di Azure usando l'account Microsoft Entra, sono necessarie le autorizzazioni per accedere alle risorse dati dell'hub IoT, ad esempio dispositivi e gemelli. Sono necessarie anche le autorizzazioni per passare alla risorsa dell'hub IoT nel portale di Azure. I ruoli predefiniti forniti da hub IoT concedono 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 poiché è il ruolo più limitato che consente di esplorare il portale. Non include l'autorizzazione Microsoft.Devices/iotHubs/listkeys/action (che fornisce l'accesso a tutte le risorse dati dell'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 dati Microsoft.Devices/IotHubs/devices/read.
  • Non dispone dell'azione dati Microsoft.Devices/IotHubs/devices/write.
  • Non dispone dell'azione dati Microsoft.Devices/IotHubs/devices/delete.
  • Non dispone dell'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 sull'hub IoT supporta l'autenticazione di Microsoft Entra. È possibile controllare il tipo di autenticazione usato per eseguire i comandi usando il parametro --auth-type, che accetta valori key o login. Il valore key è il valore predefinito.

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

  • Quando --auth-type ha il valore login, 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