hub IoT di Azure supporto del servizio Device Provisioning (DPS) per le reti virtuali

Questo articolo presenta il modello di connettività di rete virtuale (VNET) per il provisioning di dispositivi IoT con hub IoT tramite DPS. Questo modello fornisce connettività privata tra i dispositivi, il servizio Device Provisioning e l'hub IoT all'interno di una rete virtuale di Azure di proprietà del cliente.

Nella maggior parte degli scenari in cui dps è configurato con una rete virtuale, il hub IoT viene configurato anche nella stessa rete virtuale. Per informazioni più specifiche sul supporto e la configurazione della rete virtuale per le hub IoT, vedere hub IoT supporto della rete virtuale.

Introduzione

Per impostazione predefinita, i nomi host DPS eseguono il mapping a un endpoint pubblico con un indirizzo IP instradabile pubblicamente su Internet. Questo endpoint pubblico è visibile a tutti i clienti. I dispositivi IoT su reti a livello di area estesa e reti locali possono provare ad accedere all'endpoint pubblico.

Per diversi motivi, i clienti potrebbero voler limitare la connettività alle risorse di Azure, ad esempio dps. Di seguito sono elencati alcuni motivi per cui questa scelta è consigliabile:

  • Impedire l'esposizione della connessione su Internet pubblico. L'esposizione può essere ridotta introducendo più livelli di sicurezza tramite l'isolamento a livello di rete per le risorse dell'hub IoT e del servizio Device Provisioning

  • Abilitazione di un'esperienza di connettività privata dalle risorse di rete locali per garantire che i dati e il traffico vengano trasmessi direttamente alla rete di backbone di Azure.

  • Prevenzione degli attacchi di esfiltrazione da reti locali sensibili.

  • Applicazione di modelli di connettività consolidati a livello di Azure tramite endpoint privati.

Gli approcci comuni per limitare la connettività includono le regole di filtro IP DPS e la rete virtuale (VNET) con endpoint privati. L'obiettivo di questo articolo è descrivere l'approccio alla rete virtuale per il servizio Device Provisioning tramite endpoint privati.

I dispositivi che operano nelle reti locali possono usare la rete privata virtuale (VPN) o il peering privato ExpressRoute per connettersi a una rete virtuale in Azure e accedere alle risorse dps tramite endpoint privati.

Un endpoint privato è un indirizzo IP privato allocato all'interno di una rete virtuale di proprietà del cliente tramite cui una risorsa di Azure è accessibile. Avendo un endpoint privato per la risorsa DPS, è possibile consentire ai dispositivi che operano all'interno della rete virtuale di richiedere il provisioning tramite la risorsa dps senza consentire il traffico verso l'endpoint pubblico. Ogni risorsa dps può supportare più endpoint privati, ognuno dei quali può trovarsi in una rete virtuale in un'area diversa.

Prerequisiti

Prima di iniziare, verificare che siano soddisfatti i seguenti prerequisiti:

Limitazioni dell'endpoint privato

Si notino le limitazioni correnti seguenti per il servizio Device Provisioning quando si usano endpoint privati:

  • Gli endpoint privati non funzionano quando la risorsa DPS e l'hub IoT collegato si trovano in cloud diversi. Ad esempio, Azure per enti pubblici e Azure globale.

  • Gli endpoint privati nel servizio Device Provisioning usano collegamento privato di Azure, supportati solo nelle aree pubbliche. Per altre informazioni, vedere collegamento privato di Azure disponibilità.

  • Attualmente, i criteri di allocazione personalizzati con Funzioni di Azure per dps non funzionano quando la funzione di Azure è bloccata in una rete virtuale e in endpoint privati.

  • Il supporto corrente della rete virtuale DPS riguarda solo l'ingresso dei dati nel servizio Device Provisioning. I dati in uscita, ovvero il traffico da DPS a hub IoT, usano un meccanismo interno da servizio a servizio anziché una rete virtuale dedicata. Il supporto per il blocco in uscita completo basato su rete virtuale tra dps e hub IoT non è attualmente disponibile.

  • I criteri di allocazione della latenza più bassi vengono usati per assegnare un dispositivo all'hub IoT con la latenza più bassa. Questo criterio di allocazione non è affidabile in un ambiente di rete virtuale.

  • L'abilitazione di uno o più endpoint privati comporta in genere la disabilitazione dell'accesso pubblico all'istanza del servizio Device Provisioning. Una volta disabilitato l'accesso pubblico, non è più possibile usare il portale di Azure per gestire le registrazioni. È invece possibile gestire le registrazioni usando l'interfaccia della riga di comando di Azure, PowerShell o le API del servizio dai computer all'interno delle reti virtuali/endpoint privati configurati nell'istanza del servizio Device Provisioning.

  • Quando si usano endpoint privati, è consigliabile distribuire dps in una delle aree che supportano zone di disponibilità. In caso contrario, le istanze dps con endpoint privati abilitati possono visualizzare una disponibilità ridotta in caso di interruzioni.

Nota

Considerazioni sulla residenza dei dati:

Dps fornisce un endpoint del dispositivo globale (global.azure-devices-provisioning.net). Tuttavia, quando si usa l'endpoint globale, i dati possono essere reindirizzati all'esterno dell'area in cui è stata creata inizialmente l'istanza del servizio Device Provisioning. Per garantire la residenza dei dati all'interno dell'area dps iniziale, usare gli endpoint privati.

Configurare un endpoint privato

Per configurare un endpoint privato, seguire questa procedura:

  1. Nella portale di Azure aprire la risorsa dps e selezionare la scheda Rete. Selezionare Connessioni endpoint privati e + Endpoint privato.

    Screenshot that shows adding a new private endpoint for DPS.

  2. Nella pagina Creare un endpoint privato immettere le informazioni indicate nella tabella seguente.

    Screenshot that shows the private endpoints basics page.

    Campo Valore
    Abbonamento Scegliere la sottoscrizione di Azure desiderata per contenere l'endpoint privato.
    Gruppo di risorse Scegliere o creare un gruppo di risorse per contenere l'endpoint privato
    Nome Immettere un nome per l'endpoint privato
    Area L'area scelta deve essere la stessa dell'area che contiene la rete virtuale, ma non deve essere uguale alla risorsa dps.

    Selezionare Avanti: risorsa per configurare la risorsa a cui punta l'endpoint privato.

  3. Nella pagina Crea una risorsa endpoint privato immettere le informazioni indicate nella tabella seguente.

    Screenshot that shows the private endpoint resource page.

    Campo Valore
    Abbonamento Scegliere la sottoscrizione di Azure che contiene la risorsa DPS a cui punta l'endpoint privato.
    Tipo di risorsa Scegliere Microsoft.Devices/ProvisioningServices.
    Conto risorse Selezionare la risorsa DPS a cui viene eseguito il mapping dell'endpoint privato.
    Sotto-risorsa di destinazione Selezionare iotDps.

    Suggerimento

    Le informazioni sul Connessione a una risorsa di Azure in base all'ID risorsa o all'impostazione alias sono disponibili nella sezione Richiedere un endpoint privato in questo articolo.

    Selezionare Avanti: configurazione per configurare la rete virtuale per l'endpoint privato.

  4. Nella pagina Crea una configurazione dell'endpoint privato scegliere la rete virtuale e la subnet in cui creare l'endpoint privato.

    Selezionare Avanti : Tag e, facoltativamente, specificare eventuali tag per la risorsa.

    Screenshot that shows the private endpoint configuration page.

  5. Selezionare Rivedi e crea e quindi Crea per creare la risorsa endpoint privato.

Usare endpoint privati con dispositivi

Per usare gli endpoint privati con il codice di provisioning del dispositivo, il codice di provisioning deve usare l'endpoint di servizio specifico per l'istanza del servizio Device Provisioning, come illustrato nella pagina di panoramica dell'istanza del servizio Device Provisioning nel portale di Azure. L'endpoint del servizio ha il formato seguente.

<Your DPS Tenant Name>.azure-devices-provisioning.net

La maggior parte del codice di esempio illustrata nella documentazione e negli SDK usa l'endpoint del dispositivo globale (global.azure-devices-provisioning.net) e l'ambito ID per risolvere una particolare istanza del servizio Device Provisioning. Usare l'endpoint di servizio al posto dell'endpoint del dispositivo globale quando ci si connette a un'istanza del servizio Device Provisioning usando endpoint privati per effettuare il provisioning dei dispositivi.

Ad esempio, l'esempio di client del dispositivo di provisioning (pro_dev_client_sample) in Azure IoT C SDK è progettato per usare l'endpoint del dispositivo globale come URI di provisioning globale (global_prov_uri) in prov_dev_client_sample.c

MU_DEFINE_ENUM_STRINGS_WITHOUT_INVALID(PROV_DEVICE_RESULT, PROV_DEVICE_RESULT_VALUE);
MU_DEFINE_ENUM_STRINGS_WITHOUT_INVALID(PROV_DEVICE_REG_STATUS, PROV_DEVICE_REG_STATUS_VALUES);

static const char* global_prov_uri = "global.azure-devices-provisioning.net";
static const char* id_scope = "[ID Scope]";
}

PROV_DEVICE_RESULT prov_device_result = PROV_DEVICE_RESULT_ERROR;
PROV_DEVICE_HANDLE prov_device_handle;
if ((prov_device_handle = Prov_Device_Create(global_prov_uri, id_scope, prov_transport)) == NULL)
{
    (void)printf("failed calling Prov_Device_Create\r\n");

Per usare l'esempio con un endpoint privato, il codice evidenziato precedente verrà modificato per usare l'endpoint di servizio per la risorsa dps. Ad esempio, se l'endpoint di servizio è mydps.azure-devices-provisioning.net, il codice sarà simile al seguente.

static const char* global_prov_uri = "global.azure-devices-provisioning.net";
static const char* service_uri = "mydps.azure-devices-provisioning.net";
static const char* id_scope = "[ID Scope]";
    PROV_DEVICE_RESULT prov_device_result = PROV_DEVICE_RESULT_ERROR;
    PROV_DEVICE_HANDLE prov_device_handle;
    if ((prov_device_handle = Prov_Device_Create(service_uri, id_scope, prov_transport)) == NULL)
    {
        (void)printf("failed calling Prov_Device_Create\r\n");
    }

Richiedere un endpoint privato

È possibile richiedere un endpoint privato a un'istanza del servizio Device Provisioning in base all'ID risorsa. Per effettuare questa richiesta, è necessario che il proprietario della risorsa fornisca l'ID risorsa.

  1. L'ID risorsa viene fornito nella scheda delle proprietà per la risorsa DPS, come illustrato di seguito.

    Screenshot that shows the DPS Properties tab.

    Attenzione

    Tenere presente che l'ID risorsa contiene l'ID sottoscrizione.

  2. Dopo aver ottenuto l'ID risorsa, seguire i passaggi precedenti in Configurare un endpoint privato al passaggio 3 nella pagina Creare una risorsa endpoint privato. Selezionare Connessione a una risorsa di Azure in base all'ID risorsa o all'alias e immettere le informazioni nella tabella seguente.

    Campo Valore
    ID risorsa o alias Immettere l'ID risorsa per la risorsa dps.
    Sotto-risorsa di destinazione Immettere iotDps
    Messaggio di richiesta Immettere un messaggio di richiesta per il proprietario della risorsa DPS.
    Ad esempio, usare
    Please approve this new private endpoint
    for IoT devices in site 23 to access this DPS instance

    Selezionare Avanti: configurazione per configurare la rete virtuale per l'endpoint privato.

  3. Nella pagina Crea una configurazione dell'endpoint privato scegliere la rete virtuale e la subnet in cui creare l'endpoint privato.

    Selezionare Avanti : Tag e, facoltativamente, specificare eventuali tag per la risorsa.

  4. Selezionare Rivedi e crea e quindi Crea per creare la richiesta di endpoint privato.

  5. Il proprietario del servizio Device Provisioning visualizza la richiesta dell'endpoint privato nell'elenco Connessioni endpoint privato nella scheda Rete dps. In tale pagina il proprietario può approvare o rifiutare la richiesta dell'endpoint privato.

    Screenshot that shows the private endpoint request approval.

Prezzi degli endpoint privati

Per informazioni dettagliate sui prezzi, vedere Prezzi di Collegamento privato di Azure.

Passaggi successivi

Usare i collegamenti seguenti per altre informazioni sulle funzionalità di sicurezza del servizio Device Provisioning: