本文介绍使用 DPS 通过 IoT 中心预配 IoT 设备的虚拟网络连接模式。 此模式在客户拥有的 Azure 虚拟网络中的设备、DPS 和 IoT 中心之间提供专用连接。
在大多数使用虚拟网络配置 DPS 的情况下,IoT 中心也会在同一虚拟网络中配置。 有关 IoT 中心的虚拟网络支持和配置的详细信息,请参阅 使用 Azure 专用链接对虚拟网络的 IoT 中心支持。
简介
默认情况下,DPS 主机名会映射到一个公共终结点,该终结点具有可通过 Internet 以公开方式路由的 IP 地址。 此公共终结点对所有客户都可见。 广域网和本地网络上的 IoT 设备可以尝试访问公共终结点。
出于多种原因,客户可能希望限制与 Azure 资源(如 DPS)的连接。 其原因包括:
防止通过公共 Internet 的连接曝光。 可以通过网络级隔离为 IoT 中心和 DPS 资源引入更多安全层,从而降低曝光度
从本地网络资产启用专用连接体验,确保数据和流量直接传输到 Microsoft Azure 主干网络。
阻止来自敏感的本地网络的渗透攻击。
采用 Azure 范围内常见的专用终结点连接模式。
限制连接的常见方法包括 DPS IP 筛选器规则 和 专用终结点的虚拟网络。 本文旨在介绍使用专用终结点的 DPS 的虚拟网络方法。
在本地网络中运行的设备可以使用 虚拟专用网络(VPN) 或 ExpressRoute 专用对等互连连接到 Azure 中的虚拟网络,并通过专用终结点访问 DPS 资源。
专用终结点是在客户拥有的虚拟网络中分配的专用 IP 地址,可通过该地址访问 Azure 资源。 通过拥有 DPS 资源的专用终结点,可以允许在虚拟网络中运行的设备请求 DPS 资源预配,而无需允许流量流向公共终结点。 每个 DPS 资源都可以支持多个专用终结点,每个终结点可能位于不同区域中的虚拟网络中。
先决条件
在继续操作之前,请确保满足以下先决条件:
DPS 资源已创建并链接到 IoT 中心。 有关设置新 DPS 资源的指南,请参阅 快速入门:使用 Azure 门户设置 IoT 中心设备预配服务
你预配了一个包含在其中创建专用终结点的子网的 Azure 虚拟网络。 有关详细信息,请参阅 快速入门:创建 Azure 虚拟网络。
对于在本地网络中运行的设备,请设置 虚拟专用网络(VPN) 或通过 ExpressRoute 的私有对等连接至您的 Azure 虚拟网络。
专用终结点限制
使用专用终结点时,请注意以下对 DPS 的当前限制:
当 DPS 资源和链接的 IoT 中心位于不同的云中时,专用终结点不起作用。
DPS 中的专用终结点使用仅在公共区域中受支持的 Azure 专用链接。 有关详细信息,请参阅 Azure 专用链接可用性。
目前,Azure Functions for DPS 的 自定义分配策略 在 Azure 函数锁定到虚拟网络和专用终结点时不起作用。
当前的 DPS 虚拟网络支持仅适用于数据流入 DPS。 DPS 的数据出口,即从 DPS 到 IoT 中心的流量,使用的是内部的服务间机制,而不是专用的虚拟网络。 目前不支持 DPS 和 IoT 中心之间完全基于虚拟网络的出口锁定。
使用最短延迟分配策略,将设备分配到具有最低延迟的 IoT 中心。 此分配策略在虚拟网络环境中不可靠。
启用一个或多个专用终结点通常涉及禁用对 DPS 实例的公共访问权限。 禁用公共访问后,将无法再使用 Azure 门户管理注册。 可以使用 Azure CLI、PowerShell 或服务 API 管理一个或多个配置在 DPS 实例上的虚拟网络/专用终结点内计算机的注册。
使用专用终结点时,我们建议在支持可用性区域的区域之一中部署 DPS。 否则,启用了专用终结点的 DPS 实例可能会在中断期间看到可用性降低。
设置专用终结点
若要设置专用终结点,请执行以下步骤:
在 Azure 门户中,导航到 DPS 资源。
在服务菜单中的 “设置”下,选择“ 网络 ”选项卡。
在工作窗格中,选择 “专用访问 ”选项卡,然后选择“ + 创建专用终结点”。
在“创建专用终结点”页的“基本信息”选项卡上,输入下表中提到的信息。
字段 值 订阅 选择要包含专用终结点的所需 Azure 订阅。 资源组 选择或创建资源组以包含专用终结点。 名称 输入专用终结点的名称 网络接口名称 如果需要,请输入专用终结点网络接口的名称。 区域 选择专用终结点的区域。 所选区域必须与包含虚拟网络的区域相同,但不必与 DPS 资源相同。 选择“下一步: 资源”,以配置专用终结点将指向的资源。
在“创建专用终结点”页的“资源”选项卡上,输入下表中提到的信息。
字段 值 订阅 如果尚未选择,请选择包含您的私有终结点指向的 DPS 资源的 Azure 订阅。 资源类型 如果尚未选择,请选择 Microsoft.Devices/ProvisioningServices。 资源 如果尚未选择,请选择该专用终结点映射到的 DPS 资源。 目标子资源 选择 iotDps。 提示
有关“按资源 ID 或别名连接到 Azure 资源”设置的信息,请参阅本文中的请求专用终结点部分。
选择 “下一步:虚拟网络 ”,为专用终结点配置虚拟网络。
在“创建专用终结点”页的“虚拟网络”选项卡上,选择要在其中创建专用终结点的虚拟网络和子网。
选择 “下一步:DNS ”,选择专用终结点所需的任何专用 DNS 集成选项。
在“创建专用终结点”页的“DNS”选项卡上,选择专用终结点所需的任何专用 DNS 集成选项。
选择“下一步:标记”,为资源提供标记(可选)。
选择“ 下一步:查看 + 创建”,然后选择“ 创建 ”以创建专用终结点资源。
对设备使用专用终结点
若要将专用终结点与设备预配代码一起使用,预配代码必须使用 DPS 实例的特定服务终结点,如 Azure 门户中 DPS 实例的概述页所示。 服务终结点具有以下形式。
<Your DPS Tenant Name>.azure-devices-provisioning.net
文档和 SDK 中演示的大多数示例代码使用全局设备终结点 () 和 ID 范围来解析特定的 DPS 实例。 使用专用终结点连接到 DPS 实例来预配设备时,使用服务终结点来代替全局设备终结点。
例如,Azure IoT C SDK 中的预配设备客户端示例 (pro_dev_client_sample) 旨在使用全局设备终结点作为 prov_dev_client_sample.c 中的全局预配 URI (global_prov_uri)
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]";
``
```C
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");
}
若要将示例与专用终结点一起使用,将更改上一示例中突出显示的代码,以将服务终结点用于 DPS 资源。 例如,如果服务终结点为 mydps.azure-devices-provisioning.net,则代码将如下所示。
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");
}
请求专用终结点
可以按资源 ID 向 DPS 实例请求专用终结点。 若要提出此请求,需要资源所有者提供资源 ID。
资源 ID 在 Azure 门户中 DPS 资源的“属性”页上提供,如以下屏幕截图所示。
注意
资源 ID 中包含订阅 ID。
获得资源 ID 后,请按照 “创建专用终结点 ”页的“ 资源 ”选项卡上的步骤 3 设置 专用终结点 。 选择“按资源 ID 或别名连接到 Azure 资源”,并输入下表中的信息。
字段 值 资源 ID 或别名 输入 DPS 资源的资源 ID。 目标子资源 输入 iotDps 请求消息 输入面向 DPS 资源所有者的请求消息。
例如:Please approve this new private endpointfor IoT devices in site 23 to access this DPS instance选择 “下一步:虚拟网络 ”,为专用终结点配置虚拟网络。
在“创建专用终结点”页的“虚拟网络”选项卡上,选择要在其中创建专用终结点的虚拟网络和子网。
选择 “下一步:DNS ”,选择专用终结点请求所需的任何专用 DNS 集成选项。
在“创建专用终结点”页的“DNS”选项卡上,选择专用终结点请求所需的任何专用 DNS 集成选项。
选择“下一步:标记”,为资源提供标记(可选)。
选择 “下一步:查看 + 创建”,然后选择“ 创建 ”以创建专用终结点请求。
DPS 所有者在 Azure 门户中 DPS 实例的网络页上的“专用终结点连接”列表中看到专用终结点请求。 在该页上,所有者可以 批准 或 拒绝 专用终结点请求。
专用终结点定价
有关定价详细信息,请参阅 Azure 专用链接定价。