Supporto dell'hub IoT per le identità gestite
Le identità gestite offrono ai servizi di Azure un'identità gestita automaticamente in Microsoft Entra ID in modo sicuro. Ciò elimina la necessità per gli sviluppatori di dover gestire le credenziali fornendo un'identità. Esistono due tipi di identità gestite: assegnata dal sistema e assegnata dall'utente. L'hub IoT supporta entrambe.
Nell'hub IoT, le identità gestite possono essere usate per connettere l'hub IoT ad altri servizi di Azure per funzionalità come il routing dei messaggi, il caricamento di file e l'importazione/esportazione di dispositivi in blocco. Questo articolo illustra come usare le identità gestite assegnate dal sistema e assegnate dall'utente nell'hub IoT per diverse funzionalità.
Prerequisiti
Comprendere le differenze tra le identità gestite assegnate dal sistema e assegnate dall'utente in Che cosa sono le identità gestite per le risorse di Azure?
Un hub IoT nella sottoscrizione di Azure. Se non si ha ancora un hub, è possibile seguire la procedura descritta in Creare un hub IoT.
Identità gestita assegnata dal sistema
È possibile abilitare o disabilitare l'identità gestita assegnata dal sistema nel portale di Azure
Accedere al portale di Azure e passare all'hub IoT.
Selezionare Identità nella sezione Impostazioni di sicurezza del menu di spostamento.
Selezionare la scheda Assegnata dal sistema.
Impostare lo stato dell'identità gestita assegnata dal sistema su Attivato o Disattivato, quindi selezionare Salva.
Nota
Non è possibile disattivare l'identità gestita assegnata dal sistema mentre è in uso. Assicurarsi che nessun endpoint personalizzato usi l'autenticazione dell'identità gestita assegnata dal sistema prima di disabilitare la funzionalità.
Identità gestita assegnata dall'utente
Questa sezione illustra come aggiungere e rimuovere un'identità gestita assegnata dall'utente da un hub IoT usando il portale di Azure.
Prima di tutto, è necessario creare un'identità gestita assegnata dall'utente come risorsa autonoma. A tale scopo, è possibile seguire le istruzioni riportate in Gestire identità gestite assegnate dall'utente.
Passare all'hub IoT, passare a Identità nel portale dell'hub IoT.
Nella scheda Assegnata dall'utente, fare clic su Associa un'identità gestita assegnata dall'utente. Scegliere l'identità gestita assegnata dall'utente da aggiungere all'hub e quindi fare clic su Seleziona.
È possibile rimuovere un'identità assegnata dall'utente da un hub IoT. Scegliere l'identità assegnata dall'utente da rimuovere e fare clic sul pulsante Rimuovi. Si noti che si sta rimuovendo solo dall'hub IoT e questa rimozione non elimina l'identità assegnata dall'utente come risorsa. Per eliminare l'identità assegnata dall'utente come risorsa, seguire le istruzioni in Gestire identità gestite assegnate dall'utente.
Connettività in uscita dall'hub IoT ad altre risorse di Azure
Le identità gestite possono essere usate per la connettività in uscita dall'hub IoT ad altri servizi di Azure. È possibile scegliere l'identità gestita da usare per ogni connettività in uscita dell'hub IoT agli endpoint di proprietà del cliente, inclusi gli account di archiviazione, gli hub eventi e gli endpoint del bus di servizio.
Nota
Solo l'identità gestita assegnata dal sistema offre l'accesso tramite hub IoT alle risorse private. Se si vuole usare l'identità gestita assegnata dall'utente, è necessario abilitare l'accesso pubblico su tali risorse private per consentire la connettività.
Configurare il routing dei messaggi con identità gestite
In questa sezione viene usato il routing dei messaggi a un endpoint personalizzato di Hub eventi come esempio. L'esempio si applica anche ad altri endpoint personalizzati di routing.
Passare all'hub eventi nel portale di Azure per assegnare l'identità gestita all'accesso corretto.
Seleziona Controllo di accesso (IAM).
Selezionare Aggiungi > Aggiungi assegnazione di ruolo.
Nella scheda Ruolo, selezionare Mittente dati di Hub eventi di Azure.
Nota
Per un account di archiviazione, selezionare Collaboratore dati BLOB di archiviazione (nonCollaboratore o Collaboratore account di archiviazione) come ruolo. Per un bus di servizio, selezionare Mittente dati del bus di servizio di Azure.
Nella scheda Membri selezionare Identità gestita e quindi Seleziona membri.
Per le identità gestite assegnate dall'utente, selezionare la sottoscrizione, selezionare Identità gestita assegnata dall'utente e quindi selezionare l'identità gestita assegnata dall'utente.
Per le identità gestite assegnate dal sistema, selezionare la sottoscrizione, selezionare Tutte le identità gestite assegnate dal sistema e quindi selezionare il nome della risorsa dell'hub IoT.
Nella scheda Rivedi e assegna selezionare Rivedi e assegna per assegnare il ruolo.
Per altre informazioni sulle assegnazioni di ruolo, vedere Assegnare ruoli di Azure tramite il portale di Azure.
Se è necessario limitare la connettività all'endpoint personalizzato tramite una rete virtuale, è necessario attivare l'eccezione di prima parte Microsoft attendibile per concedere all'hub IoT l'accesso all'endpoint specifico. Ad esempio, se si aggiunge un endpoint personalizzato dell'hub eventi, passare alla scheda Firewall e reti virtuali nell'hub eventi e abilitare l'opzione Consenti l'accesso dalle reti selezionate. Nell'elenco Eccezioni selezionare la casella di controllo per consentire ai servizi Microsoft attendibili di accedere a questo account di archiviazione. Fare clic sul pulsante Salva. Questo vale anche per l'account di archiviazione e il bus di servizio. Altre informazioni sul supporto dell'hub IoT per le reti virtuali.
Nota
È necessario completare i passaggi precedenti per assegnare all'identità gestita l'accesso corretto, prima di aggiungere l'hub eventi come endpoint personalizzato nell'hub IoT. Attendere alcuni minuti per la propagazione dell'assegnazione di ruolo.
Passare quindi all'hub IoT. Nell'hub, passare a Routing messaggi e quindi selezionare Aggiungi.
Nella scheda Endpoint, creare un endpoint per l'hub eventi specificando le informazioni seguenti:
Parametro Valore Tipo di endpoint Selezionare Hub eventi. Nome endpoint Specificare un nome univoco per un nuovo endpoint oppure selezionare Seleziona esistente per scegliere un endpoint di Hub eventi esistente. Spazio dei nomi dell'Hub eventi di Azure Usare il menu a discesa per selezionare uno spazio dei nomi di Hub eventi esistente nella sottoscrizione. Istanza di hub eventi Usare il menu a discesa per selezionare un hub eventi esistente nello spazio dei nomi. Tipo di autenticazione Selezionare Assegnato dall'utente, quindi usare il menu a discesa per selezionare l'identità assegnata dall'utente creata nell'hub eventi. Selezionare Crea e avanti. È possibile continuare con la procedura guidata per creare una route che punta a questo endpoint oppure chiudere la procedura guidata.
È possibile modificare il tipo di autenticazione di un endpoint personalizzato esistente. Usare la procedura seguente per modificare un endpoint:
Nell'hub IoT, selezionare Routing dei messaggi nel riquadro di spostamento sinistro e quindi Endpoint personalizzati.
Selezionare la casella di controllo per l'endpoint personalizzato da modificare e quindi selezionare Modifica tipo di autenticazione.
Scegliere il nuovo tipo di autenticazione per questo endpoint e quindi selezionare Salva.
Configurare il caricamento di file con identità gestite
La funzionalità di caricamento di file dell'hub IoT consente ai dispositivi di caricare i file in un account di archiviazione di proprietà del cliente. Per consentire il caricamento dei file, l'hub IoT deve disporre di connettività all'account di archiviazione. Analogamente al routing dei messaggi, è possibile scegliere il tipo di autenticazione preferito e l'identità gestita per la connettività in uscita dell'hub IoT all'account di Archiviazione di Azure.
Nel portale di Azure passare all'account di archiviazione.
Seleziona Controllo di accesso (IAM).
Selezionare Aggiungi > Aggiungi assegnazione di ruolo.
Nella scheda Ruolo, selezionare Contributore dati BLOB di archiviazione. (Non selezionare Collaboratore oCollaboratore account di archiviazione).
Nella scheda Membri selezionare Identità gestita e quindi Seleziona membri.
Per le identità gestite assegnate dall'utente, selezionare la sottoscrizione, selezionare Identità gestita assegnata dall'utente e quindi selezionare l'identità gestita assegnata dall'utente.
Per le identità gestite assegnate dal sistema, selezionare la sottoscrizione, selezionare Tutte le identità gestite assegnate dal sistema e quindi selezionare il nome della risorsa dell'hub IoT.
Nella scheda Rivedi e assegna selezionare Rivedi e assegna per assegnare il ruolo.
Per altre informazioni sulle assegnazioni di ruolo, vedere Assegnare ruoli di Azure tramite il portale di Azure.
Se è necessario limitare la connettività all'account di archiviazione tramite una rete virtuale, è necessario attivare l'eccezione di prima parte Microsoft attendibile per concedere all'hub IoT l'accesso all'account di archiviazione. Nella pagina delle risorse dell'account di archiviazione, passare alla scheda Firewall e reti virtuali e abilitare l'opzione Consenti l'accesso dalle reti selezionate. Nell'elenco Eccezioni selezionare la casella di controllo Consenti ai servizi Microsoft attendibili di accedere a questo account di archiviazione. Fare clic sul pulsante Salva. Altre informazioni sul supporto dell'hub IoT per le reti virtuali.
Nota
È necessario completare i passaggi precedenti per assegnare all'identità gestita l'accesso corretto, prima di salvare l'account di archiviazione nell'hub IoT per il caricamento di file usando l'identità gestita. Attendere alcuni minuti per la propagazione dell'assegnazione di ruolo.
Nella pagina delle risorse dell'hub IoT, passare alla scheda Caricamento file.
Nella pagina visualizzata, selezionare il contenitore che si desidera utilizzare nell'archivio BLOB, configurare i valori per i campi Impostazioni di notifica file, Durata TTL della firma di accesso condiviso, Durata TTL predefinita e Numero massimo di distribuzioni in base alle esigenze. Scegliere il tipo di autenticazione preferito e fare clic su Salva. Se viene visualizzato un errore in questo passaggio, impostare temporaneamente l'account di archiviazione per consentire l'accesso da Tutte le reti, quindi riprovare. È possibile configurare il firewall nell'account di archiviazione al termine della configurazione Caricamento file.
Nota
Nello scenario di caricamento dei file, sia l'hub che il dispositivo devono connettersi con l'account di archiviazione. I passaggi precedenti consentono di connettere l'hub IoT all'account di archiviazione con il tipo di autenticazione desiderato. È comunque necessario connettere il dispositivo all'archiviazione usando l'URI di firma di accesso condiviso. Oggi l'URI di firma di accesso condiviso viene generato usando la stringa di connessione. Verrà aggiunto il supporto per generare presto l'URI di firma di accesso condiviso con l'identità gestita. Seguire la procedura descritta nel Caricamento file.
Configurare l'importazione/esportazione di dispositivi in blocco con identità gestite
L'hub IoT supporta la funzionalità per l'importazione/esportazione in blocco delle informazioni dei dispositivi da o verso un BLOB di archiviazione fornito dal cliente. Questa funzionalità richiede la connettività dall'hub IoT all'account di archiviazione.
Nel portale di Azure passare all'account di archiviazione.
Seleziona Controllo di accesso (IAM).
Selezionare Aggiungi > Aggiungi assegnazione di ruolo.
Nella scheda Ruolo, selezionare Contributore dati BLOB di archiviazione. (Non selezionare Collaboratore oCollaboratore account di archiviazione).
Nella scheda Membri selezionare Identità gestita e quindi Seleziona membri.
Per le identità gestite assegnate dall'utente, selezionare la sottoscrizione, selezionare Identità gestita assegnata dall'utente e quindi selezionare l'identità gestita assegnata dall'utente.
Per le identità gestite assegnate dal sistema, selezionare la sottoscrizione, selezionare Tutte le identità gestite assegnate dal sistema e quindi selezionare il nome della risorsa dell'hub IoT.
Nella scheda Rivedi e assegna selezionare Rivedi e assegna per assegnare il ruolo.
Per altre informazioni sulle assegnazioni di ruolo, vedere Assegnare ruoli di Azure tramite il portale di Azure
Uso dell'API REST o dell'SDK per i processi di importazione ed esportazione
È ora possibile usare le API REST di Azure IoT per la creazione di processi di importazione ed esportazione. Sarà necessario specificare le proprietà seguenti nel corpo della richiesta:
- storageAuthenticationType: impostare il valore su identityBased.
- inputBlobContainerUri: impostare questa proprietà solo per i processi di importazione.
- outputBlobContainerUri: impostare questa proprietà per i processi di importazione ed esportazione.
- identity: impostare il valore all'identità gestita da usare.
Gli SDK dell'hub IoT di Azure supportano questa funzionalità anche nel gestore del Registro di sistema del client del servizio. Il frammento di codice seguente mostra come avviare un processo di importazione o esportazione usando l'SDK C#.
Frammento di codice C#
// Create an export job
JobProperties jobProperties = JobProperties.CreateForExportJob(
outputBlobContainerUri: blobContainerUri,
excludeKeysInExport: false,
storageAuthenticationType: StorageAuthenticationType.IdentityBased,
identity: new ManagedIdentity
{
userAssignedIdentity = userDefinedManagedIdentityResourceId
});
// Create an import job
JobProperties jobProperties = JobProperties.CreateForImportJob(
inputBlobContainerUri: blobContainerUri,
outputBlobContainerUri: blobContainerUri,
storageAuthenticationType: StorageAuthenticationType.IdentityBased,
identity: new ManagedIdentity
{
userAssignedIdentity = userDefinedManagedIdentityResourceId
});
Frammento di codice Python
# see note below
iothub_job_manager = IoTHubJobManager("<IoT Hub connection information>")
# Create an import job
result = iothub_job_manager.create_import_export_job(JobProperties(
type="import",
input_blob_container_uri="<input container URI>",
output_blob_container_uri="<output container URI>",
storage_authentication_type="identityBased",
identity=ManagedIdentity(
user_assigned_identity="<resource ID of user assigned managed identity>"
)
))
# Create an export job
result = iothub_job_manager.create_import_export_job(JobProperties(
type="export",
output_blob_container_uri="<output container URI>",
storage_authentication_type="identityBased",
exclude_keys_in_export=True,
identity=ManagedIdentity(
user_assigned_identity="<resource ID of user assigned managed identity>"
)
))
Nota
- Se storageAuthenticationType è impostato su identityBased e la proprietà userAssignedIdentity non è null, i processi useranno l'identità gestita assegnata dall'utente specificata.
- Se l'hub IoT non è configurato con l'identità gestita assegnata dall'utente specificata in userAssignedIdentity, il processo avrà esito negativo.
- Se storageAuthenticationType è impostato su identityBased la proprietà userAssignedIdentity è null, i processi useranno l'identità assegnata dal sistema.
- Se l'hub IoT non è configurato con l'identità gestita assegnata dall'utente, il processo avrà esito negativo.
- Se storageAuthenticationType è impostato su identityBased e non sono configurate né identità gestite assegnate dall'utente né assegnate dal sistema nell'hub, il processo avrà esito negativo.
Esempi di SDK
Passaggi successivi
Consultare i collegamenti seguenti per altre informazioni sulle funzionalità dell'hub IoT: