共用方式為


適用虛擬網路的 Azure IoT 中樞裝置佈建服務 (DPS) 支援

本文介紹使用 DPS 搭配 IoT 中樞進行 IoT 裝置佈建的虛擬網路 (VNET) 連線模式。 此模式可在客戶擁有的 Azure VNET 之內的裝置、DPS 和 IoT 中樞之間提供私人連線能力。

在大部分使用 VNET 設定 DPS 的案例中,您的 IoT 中樞也會在相同的 VNET 中設定。 如需 VNET 支援和 IoT 中樞設定的特定資訊,請參閱 IoT 中樞虛擬網路支援

簡介

根據預設,DPS 主機名稱會使用可透過網際網路公開路由傳送 IP 位址來對應至公用端點。 所有客戶都可以看到此公用端點。 IoT 裝置可以透過廣域網路和內部部署網路嘗試存取公用端點。

基於數個原因,客戶可能會想要限制對 Azure 資源的連線,例如 DPS。 這些原因包括:

  • 防止透過公用網際網路公開連線。 透過 IoT 中樞和 DPS 資源的網路層級隔離,建立更多層級的安全性,以降低暴露風險

  • 從內部部署網路資產啟用私人連線體驗,以確保資料和流量會直接傳輸到 Azure 骨幹網路。

  • 防止來自敏感性內部部署網路的外洩攻擊。

  • 遵循使用私人端點建立的全 Azure 連線模式。

限制連線的常見方法包括 DPS IP 篩選規則和虛擬網路 (VNET) 搭配私人端點。 本文的目標是描述使用私人端點執行 DPS 的 VNET 方法。

在內部部署網路中運作的裝置可以使用虛擬私人網路 (VPN)ExpressRoute 私人對等互連來連線到 Azure 中的 VNET,並透過私人端點存取 DPS 資源。

私人端點是在客戶擁有 VNet 之中所配置的私人 IP 位址,使用者可透過此位址存取 Azure 資源。 透過擁有 DPS 資源的私人端點,您就能夠讓 VNET 內部運作的裝置要求 DPS 資源佈建,而不用讓流量流向公用端點。 每個 DPS 資源都可以支援多個私人端點,每個端點可以位於不同區域的 VNET 中。

必要條件

請確定符合下列先決條件,再繼續進行:

私人端點限制

使用私人端點時,請注意 DPS 目前的下列限制:

  • 當 DPS 資源和連結的 IoT 中樞位於不同的雲端時,私人端點將無法使用。 例如,Azure Government 和全域 Azure

  • DPS 中的私人端點會使用 Azure Private Link,其僅支持公用區域。 如需詳細資訊,請參閱 Azure Private Link 可用性

  • 目前,當 VNET 和私人端點已鎖定 Azure Function 時,適用 DPS 的使用 Azure Functions 的自訂配置原則即無法作用。

  • 目前的 DPS VNET 支援僅適用於傳入 DPS 的資料輸入。 資料輸出是從 DPS 到 IoT 中樞的流量,會使用內部服務對服務機制,而不是專用的 VNET。 目前無法提供 DPS 與 IoT 中樞之間的完整 VNET 型輸出鎖定支援。

  • 您可以使用最低延遲配置原則,將裝置指派給具有最低延遲的 IoT 中樞。 此配置原則在虛擬網路環境中並不可靠。

  • 啟用一或多個私人端點通常必須停用 DPS 執行個體的公用存取。 停用公用存取之後,您就無法再使用 Azure 入口網站來管理註冊。 您可以改從 DPS 執行個體設定的 VNET 內部電腦/私人端點使用 Azure CLI、PowerShell 或服務 API 來管理註冊。

  • 使用私人端點時,建議您在支援可用性區域的其中一個區域中部署 DPS。 否則,啟用私人端點的 DPS 執行個體可能會在服務中斷時發現可用性降低。

注意

資料落地考量:

DPS 提供全域裝置端點 (global.azure-devices-provisioning.net)。 不過,當您使用全域端點時,您的資料可能會重新導向至最初建立 DPS 執行個體的區域之外。 若要確保初始 DPS 區域內的資料落地,請使用私人端點。

設定私人端點

若要設定私人端點,請遵循下列步驟:

  1. Azure 入口網站中,開啟您的 DPS 資源,然後選取 [網络] 索引標籤。在 [私人端點連線] 中,選取 [+ 私人端點]

    Screenshot that shows adding a new private endpoint for DPS.

  2. [建立私人端點] 的 [基本] 頁面上,輸入下表所提到的資訊。

    Screenshot that shows the private endpoints basics page.

    欄位
    訂用帳戶 選擇所需的 Azure 訂用帳戶以包含私人端點。
    資源群組 選擇或建立資源群組以包含私人端點
    名稱 輸入私人端點的名稱
    區域 選擇的區域必須與包含 VNET 的區域相同,但不需要與 DPS 資源相同。

    [下一步:資源] 以設定私人端點指向的資源。

  3. [建立私人端點的資源] 頁面上,輸入下表所提到的資訊。

    Screenshot that shows the private endpoint resource page.

    欄位
    訂用帳戶 選擇包含私人端點所指向之 DPS 資源的 Azure 訂用帳戶。
    資源類型 選擇 Microsoft.Devices/ProvisioningServices
    資源 選取私人端點對應到的 DPS 資源。
    目標子資源 選取 iotDps

    提示

    如需 [依資源識別碼或別名連線至 Azure 資源] 設定的相關資訊,請參閱本文的要求私人端點一節。

    選取 [下一步:設定] 以設定私人端點的 VNET。

  4. 在 [建立私人端點] 的 [設定] 頁面上,選擇要用來建立私人端點的虛擬網路和子網路。

    選取 [下一步:標籤],選擇性地為資源提供任何標籤。

    Screenshot that shows the private endpoint configuration page.

  5. 選取 [檢閱] + [建立],然後按一下 [建立] 以建立私人端點資源。

使用私人端點與裝置

若要搭配裝置佈建程式碼使用私人端點,您的佈建程式碼必須使用 DPS 執行個體的特定服務端點,如 Azure 入口網站中 DPS 執行個體的概觀頁面所示。 服務端點具有下列表單。

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

在我們的文件和 SDK 中示範的大部分範例程式碼,使用全域裝置端點 (global.azure-devices-provisioning.net) 和識別碼範圍來解析特定的 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]";
}

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");
    }

要求私人端點

您可以依資源識別碼向 DPS 執行個體要求私人端點。 若要提出此要求,您需要資源擁有者為您提供資源識別碼。

  1. 提供的資源識別碼會顯示在 DPS 資源的屬性索引標籤上,如下所示。

    Screenshot that shows the DPS Properties tab.

    警告

    請注意,資源識別碼確實包含訂用帳戶識別碼。

  2. 取得資源識別碼之後,請遵循 [設定私人端點] 頁面中執行上述步驟,並在 [建立私人端點] 的 [資源] 頁面執行步驟 3。 選取 [依資源識別碼或別名連線至 Azure 資源],然後輸入下表中的資訊。

    欄位
    資源識別碼或別名 輸入 DPS 資源的資源識別碼。
    目標子資源 輸入 iotDps
    要求訊息 輸入 DPS 資源擁有者的要求訊息。
    例如,
    Please approve this new private endpoint
    for IoT devices in site 23 to access this DPS instance

    選取 [下一步:設定] 以設定私人端點的 VNET。

  3. 在 [建立私人端點] 的 [設定] 頁面上,選擇要用來建立私人端點的虛擬網路和子網路。

    選取 [下一步:標籤],選擇性地為資源提供任何標籤。

  4. 選取 [檢閱] + [建立],然後 [建立] 來建立私人端點要求。

  5. DPS 擁有者會在 [DPS 網络] 索引標籤上的 [私人端點連線] 清單中看到私人端點要求。在該頁面上,擁有者可以 [核准][拒絕] 私人端點要求。

    Screenshot that shows the private endpoint request approval.

私人端點計價

如需價格詳細資料,請參閱 Azure Private Link 價格

下一步

若要深入了解 DPS 安全性功能,請使用下列連結: