Ondersteuning voor Azure IoT Hub Device Provisioning Service (DPS) voor virtuele netwerken
In dit artikel wordt het VNET-verbindingspatroon (virtual network) geïntroduceerd voor het inrichten van IoT-apparaten met IoT-hubs met behulp van DPS. Dit patroon biedt privéconnectiviteit tussen de apparaten, DPS en de IoT-hub in een Azure VNET dat eigendom is van de klant.
In de meeste scenario's waarin DPS is geconfigureerd met een VNET, wordt uw IoT Hub ook geconfigureerd in hetzelfde VNET. Voor meer specifieke informatie over VNET-ondersteuning en -configuratie voor IoT Hubs raadpleegt u ondersteuning voor virtuele IoT Hub-netwerken.
Introductie
DPS-hostnamen worden standaard toegewezen aan een openbaar eindpunt met een openbaar routeerbaar IP-adres via internet. Dit openbare eindpunt is zichtbaar voor alle klanten. IoT-apparaten via wide area networks en on-premises netwerken kunnen proberen toegang te krijgen tot het openbare eindpunt.
Om verschillende redenen willen klanten mogelijk de connectiviteit met Azure-resources beperken, zoals DPS. Deze redenen zijn onder andere:
Blootstelling aan verbindingen via het openbare internet voorkomen. Blootstelling kan worden verminderd door meer beveiligingslagen te introduceren via isolatie op netwerkniveau voor uw IoT-hub en DPS-resources
Het inschakelen van een privéverbindingservaring vanuit uw on-premises netwerkassets, zodat uw gegevens en verkeer rechtstreeks naar het Backbone-netwerk van Azure worden verzonden.
Exfiltratieaanvallen van gevoelige on-premises netwerken voorkomen.
Na vastgestelde azure-connectiviteitspatronen met behulp van privé-eindpunten.
Veelvoorkomende benaderingen voor het beperken van connectiviteit zijn DPS IP-filterregels en virtuele netwerken (VNET) met privé-eindpunten. Het doel van dit artikel is om de VNET-benadering voor DPS te beschrijven met behulp van privé-eindpunten.
Apparaten die in on-premises netwerken werken, kunnen VPN (Virtual Private Network) of ExpressRoute-privépeering gebruiken om verbinding te maken met een VNET in Azure en toegang te krijgen tot DPS-resources via privé-eindpunten.
Een privé-eindpunt is een privé-IP-adres dat is toegewezen binnen een VNET dat eigendom is van de klant, waarmee een Azure-resource toegankelijk is. Door een privé-eindpunt voor uw DPS-resource te hebben, kunt u toestaan dat apparaten die binnen uw VNET werken, inrichten door uw DPS-resource aanvragen zonder verkeer naar het openbare eindpunt toe te staan. Elke DPS-resource kan ondersteuning bieden voor meerdere privé-eindpunten, die elk zich in een VNET in een andere regio kunnen bevinden.
Vereisten
Voordat u doorgaat, moet u ervoor zorgen dat aan de volgende vereisten wordt voldaan:
Uw DPS-resource is al gemaakt en gekoppeld aan uw IoT-hubs. Zie IoT Hub Device Provisioning Service instellen met Azure Portal voor hulp bij het instellen van een nieuwe DPS-resource
U hebt een Azure-VNET ingericht met een subnet waarin het privé-eindpunt wordt gemaakt. Zie voor meer informatie een virtueel netwerk maken met behulp van Azure CLI.
Voor apparaten die binnen on-premises netwerken werken, stelt u VPN (Virtual Private Network) of ExpressRoute-privépeering in uw Azure-VNET in.
Privé-eindpuntbeperkingen
Let op de volgende huidige beperkingen voor DPS bij het gebruik van privé-eindpunten:
Privé-eindpunten werken niet wanneer de DPS-resource en de gekoppelde IoT-hub zich in verschillende clouds bevinden. Bijvoorbeeld Azure Government en global Azure.
Privé-eindpunten in DPS maken gebruik van Azure Private Link, die alleen worden ondersteund in openbare regio's. Zie de beschikbaarheid van Azure Private Link voor meer informatie.
Op dit moment werkt aangepast toewijzingsbeleid met Azure Functions voor DPS niet wanneer de Azure-functie is vergrendeld voor een VNET en privé-eindpunten.
De huidige VNET-ondersteuning voor DPS is alleen bedoeld voor inkomend gegevens in DPS. Uitgaande gegevens, het verkeer van DPS naar IoT Hub, maakt gebruik van een intern mechanisme voor service-naar-service in plaats van een toegewezen VNET. Ondersteuning voor volledige uitgaande VNET-vergrendeling tussen DPS en IoT Hub is momenteel niet beschikbaar.
Het laagste toewijzingsbeleid voor latentie wordt gebruikt om een apparaat toe te wijzen aan de IoT-hub met de laagste latentie. Dit toewijzingsbeleid is niet betrouwbaar in een virtuele netwerkomgeving.
Het inschakelen van een of meer privé-eindpunten omvat meestal het uitschakelen van openbare toegang tot uw DPS-exemplaar. Zodra openbare toegang is uitgeschakeld, kunt u Azure Portal niet meer gebruiken om inschrijvingen te beheren. In plaats daarvan kunt u inschrijvingen beheren met behulp van de Azure CLI, PowerShell of service-API's van machines in de VNET(s)/privé-eindpunten die zijn geconfigureerd op het DPS-exemplaar.
Wanneer u privé-eindpunten gebruikt, raden we u aan DPS te implementeren in een van de regio's die ondersteuning bieden voor Beschikbaarheidszones. Anders kunnen DPS-exemplaren waarvoor privé-eindpunten zijn ingeschakeld, een verminderde beschikbaarheid zien in het geval van storingen.
Notitie
Overwegingen voor gegevenslocatie:
DPS biedt een globaal apparaateindpunt (global.azure-devices-provisioning.net
). Wanneer u echter het globale eindpunt gebruikt, worden uw gegevens mogelijk omgeleid buiten de regio waar de DPS-instantie in eerste instantie is gemaakt. Gebruik privé-eindpunten om de gegevenslocatie binnen de eerste DPS-regio te garanderen.
Een privé-eindpunt instellen
Voer de volgende stappen uit om een privé-eindpunt in te stellen:
Open uw DPS-resource in Azure Portal en selecteer het tabblad Netwerken. Selecteer Privé-eindpuntverbindingen en + Privé-eindpunt.
Voer op de pagina Basisinformatie over privé-eindpunten maken de informatie in die wordt vermeld in de volgende tabel.
Veld Waarde Abonnement Kies het gewenste Azure-abonnement dat het privé-eindpunt moet bevatten. Resourcegroep Een resourcegroep kiezen of maken die het privé-eindpunt bevat Naam Voer een naam in voor uw privé-eindpunt Regio De gekozen regio moet hetzelfde zijn als de regio die het VNET bevat, maar hoeft niet hetzelfde te zijn als de DPS-resource. Selecteer Volgende: Resource om de resource te configureren waarnaar het privé-eindpunt verwijst.
Voer op de pagina Een privé-eindpuntresource maken de informatie in die wordt vermeld in de volgende tabel.
Veld Waarde Abonnement Kies het Azure-abonnement met de DPS-resource waarnaar uw privé-eindpunt verwijst. Resourcetype Kies Microsoft.Devices/ProvisioningServices. Resource Selecteer de DPS-resource waaraan het privé-eindpunt is toegewezen. Doelsubresource Selecteer iotDps. Fooi
Informatie over de Verbinding maken naar een Azure-resource op basis van resource-id of aliasinstelling vindt u in de sectie Een privé-eindpunt aanvragen in dit artikel.
Selecteer Volgende: Configuratie om het VNET voor het privé-eindpunt te configureren.
Kies op de pagina Een privé-eindpuntconfiguratie maken uw virtuele netwerk en subnet waarin u het privé-eindpunt wilt maken.
Selecteer Volgende: Tags en eventueel eventuele tags voor uw resource opgeven.
Selecteer Beoordelen en maken en vervolgens Maken om uw privé-eindpuntresource te maken.
Privé-eindpunten gebruiken met apparaten
Als u privé-eindpunten wilt gebruiken met apparaatinrichtingscode, moet uw inrichtingscode het specifieke service-eindpunt voor uw DPS-exemplaar gebruiken, zoals wordt weergegeven op de overzichtspagina van uw DPS-exemplaar in Azure Portal. Het service-eindpunt heeft het volgende formulier.
<Your DPS Tenant Name>.azure-devices-provisioning.net
De meeste voorbeeldcode die wordt gedemonstreerd in onze documentatie en SDK's, gebruiken het globale apparaateindpunt (global.azure-devices-provisioning.net
) en het id-bereik om een bepaald DPS-exemplaar op te lossen. Gebruik het service-eindpunt in plaats van het globale apparaateindpunt wanneer u verbinding maakt met een DPS-exemplaar met behulp van privé-eindpunten om uw apparaten in te richten.
Het voorbeeld van de inrichtingsapparaatclient (pro_dev_client_sample) in de Azure IoT C SDK is bijvoorbeeld ontworpen om het globale apparaateindpunt te gebruiken als de globale inrichtings-URI (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");
Als u het voorbeeld wilt gebruiken met een privé-eindpunt, wordt de bovenstaande gemarkeerde code gewijzigd om het service-eindpunt voor uw DPS-resource te gebruiken. Als uw service-eindpunt bijvoorbeeld is mydps.azure-devices-provisioning.net
, ziet de code er als volgt uit.
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");
}
Een privé-eindpunt aanvragen
U kunt een privé-eindpunt aanvragen bij een DPS-exemplaar op resource-id. Als u deze aanvraag wilt indienen, hebt u de resource-eigenaar nodig om u de resource-id te verstrekken.
De resource-id wordt weergegeven op het tabblad Eigenschappen voor DPS-resource, zoals hieronder wordt weergegeven.
Let op
Houd er rekening mee dat de resource-id wel de abonnements-id bevat.
Zodra u de resource-id hebt, volgt u de bovenstaande stappen in Een privé-eindpunt instellen op stap 3 op de pagina Een privé-eindpuntresource maken. Selecteer Verbinding maken naar een Azure-resource op resource-id of alias en voer de gegevens in de volgende tabel in.
Veld Waarde Resource-id of alias Voer de resource-id in voor de DPS-resource. Doelsubresource Voer iotDps in Bericht aanvragen Voer een aanvraagbericht in voor de EIGENAAR van de DPS-resource.
Bijvoorbeeld:Please approve this new private endpoint
for IoT devices in site 23 to access this DPS instance
Selecteer Volgende: Configuratie om het VNET voor het privé-eindpunt te configureren.
Kies op de pagina Een privé-eindpuntconfiguratie maken het virtuele netwerk en subnet waarin u het privé-eindpunt wilt maken.
Selecteer Volgende: Tags en eventueel eventuele tags voor uw resource opgeven.
Selecteer Beoordelen en maken en vervolgens Maken om uw privé-eindpuntaanvraag te maken.
De DPS-eigenaar ziet de aanvraag voor het privé-eindpunt in de lijst met privé-eindpuntverbindingen op het tabblad DPS-netwerken. Op die pagina kan de eigenaar de aanvraag voor het privé-eindpunt goedkeuren of afwijzen.
Prijzen voor privé-eindpunten
Zie prijzen van Azure Private Link voor meer informatie over prijzen.
Volgende stappen
Gebruik de onderstaande koppelingen voor meer informatie over DPS-beveiligingsfuncties: