共用方式為


Azure IoT Hub 裝置配置服務(DPS)對虛擬網路的支援

本文介紹使用 DPS 配置物聯網集線器的虛擬網路連線模式。 此模式提供裝置、DPS 與 IoT 集線器之間的私密連接,並置於客戶擁有的 Azure 虛擬網路中。

在大多數 DPS 以虛擬網路配置的情況下,你的物聯網集線也會在同一個虛擬網路中配置。 欲了解更多關於物聯網集線虛擬網路支援與設定的資訊,請參閱 IoT 集線對 Azure Private Link 虛擬網路的支援

簡介

預設情況下,DPS 主機名稱會對應到具有可公開路由 IP 位址的公共端點。 這個公開端點對所有客戶都是可見的。 透過廣域網路和本地網路的物聯網裝置可以嘗試存取公共端點。

基於多種原因,客戶可能希望限制與 Azure 資源的連線,例如 DPS。 這些原因包括:

  • 防止透過公用網際網路公開連線。 透過為您的物聯網樞紐與DPS資源引入更多網路層級隔離,可以降低風險暴露

  • 讓您的本地網路資產提供私密連線體驗,確保您的資料與流量直接傳輸至 Azure 骨幹網路。

  • 防止來自敏感本地網路的外洩攻擊。

  • 遵循已建立的 Azure 全域連接模式,使用 私有端點

限制連接的常見方法包括 DPS IP 過濾規則 以及與 私有端點的虛擬網路。 本文的目標是描述利用私有端點進行 DPS 虛擬網路的方法。

在本地網路中運作的裝置可使用 虛擬私人網路(VPN)ExpressRoute 私有對等連接,連接 Azure 中的虛擬網路,並透過私人端點存取 DPS 資源。

私人端點是指分配於客戶擁有的虛擬網路中的私有 IP 位址,透過此網路可存取 Azure 資源。 透過為你的 DPS 資源設置私人端點,你可以允許虛擬網路內的裝置請求 DPS 資源的配置,而不會允許流量流到公共端點。 每個 DPS 資源可支援多個私有端點,每個端點可能位於不同區域的虛擬網路中。

先決條件

在繼續前,請確保已符合以下先決條件:

私有端點的限制

請注意以下 DPS 在使用私有端點時的限制:

  • 當 DPS 資源和連結的物聯網樞紐在不同雲端時,私有端點就無法運作。 例如 Azure Government 和 global Azure

  • DPS 中的私有端點使用 Azure Private Link,僅支援於公共區域。 欲了解更多資訊,請參閱 Azure Private Link 可用性。

  • 目前,當 Azure 函式被限制在虛擬網路和私有端點時,用於 DPS 的 自訂配置政策無法運作。

  • 目前 DPS 虛擬網路支援僅限於資料輸入至 DPS。 資料出口,也就是從 DPS 到 IoT Hub 的流量,採用內部服務對服務機制,而非專用虛擬網路。 目前尚未支援 DPS 與 IoT Hub 之間完整的虛擬網路出口封鎖。

  • 最低延遲分配政策用於將裝置分配到延遲最低的物聯網樞線。 這種配置策略在虛擬網路環境中並不可靠。

  • 啟用一個或多個私有端點通常需要停用對 DPS 實例 的公開存取 。 一旦停用公開存取,你就無法再使用 Azure 入口網站來管理註冊。 取而代之的是,你可以透過 Azure CLI、PowerShell 或服務 API 來管理註冊,從配置於一個或多個虛擬網路/私有端點的 DPS 實例中的機器進行操作。

  • 使用私有端點時,我們建議在支援 可用性區域的區域部署 DPS。 否則,啟用私有端點的 DPS 實例在停電期間可用性可能會下降。

備註

資料駐留考量:

DPS 提供 一個全域裝置端點global.azure-devices-provisioning.net)。 不過,當你使用全域端點時,資料可能會被導向到最初建立 DPS 實例的區域外。 為確保資料在初始 DPS 區域內駐留,請使用私人端點。

設定私人端點

要建立私有端點,請依照以下步驟操作:

  1. Azure 入口網站中,瀏覽至您的 DPS 資源。

  2. 在服務選單中,在 設定中選擇 「網路」 標籤。

  3. 在工作面板中,選擇 「私人存取 」標籤,然後選擇 + 「建立私人端點」。

    截圖顯示在 Azure 入口網站新增一個 DPS 實例的私有端點。

  4. 「建立私人端點」頁面的基礎標籤中,輸入下表中提及的資訊。

    這張截圖顯示了「建立私人端點」頁面的「基礎」標籤。

    領域 價值觀
    Subscription 選擇想要的 Azure 訂閱來包含私有端點。
    資源群組 選擇或建立一個資源群組來包含私有端點。
    名稱 輸入私人端點的名稱。
    網路介面名稱 如果需要,請輸入你私有端點的網路介面名稱。
    區域 選擇私有端點的區域。 所選區域必須與包含虛擬網路的區域相同,但不必與 DPS 資源相同。

    選擇 「下一步:資源 」來設定私有端點所指向的資源。

  5. 「建立私人端點」頁面的資源標籤中,輸入下表中提及的資訊。

    這張截圖顯示了「建立私有端點」頁面的資源標籤。

    領域 價值觀
    Subscription 如果還沒選好,請選擇包含你私人端點指向的 DPS 資源的 Azure 訂閱。
    資源類型 如果還沒選,請選擇 Microsoft.Devices/ProvisioningServices
    資源 如果還未選擇,請選擇私有端點映射到的 DPS 資源。
    目標子資源 選擇 iotDps

    小提示

    關於 以資源 ID 或別名連接 Azure 資源 設定的資訊,請參閱本文的 「請求私人端點 」章節。

    選擇 下一步:虛擬網路 ,以設定私有端點的虛擬網路。

  6. 「建立私人端點」頁面的虛擬網路標籤中,選擇你的虛擬網路和子網路來建立私有端點。

    顯示「建立私人端點」頁面虛擬網路標籤的截圖。

    選擇 「下一步:DNS 」以選擇私人端點所需的任何私有 DNS 整合選項。

  7. 「建立私人端點」頁面的 DNS 標籤中,選擇任何私有端點所需的私有 DNS 整合選項。

    截圖顯示「建立私人端點」頁面的 DNS 標籤。

    選擇 下一部:標籤,並可選擇性地為你的資源提供任何標籤。

  8. 選擇 「下一步:檢視+建立」,然後選擇 「建立 」來建立你的私有端點資源。

使用私人端點與裝置

要使用帶有裝置配置代碼的私有端點,你的配置代碼必須使用你 DPS 實例的特定 服務端點 ,如 Azure 入口網站中 DPS 實例的概覽頁面所示。 服務端點的形式如下。

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

我們文件和 SDK 中展示的大多數範例程式碼,使用 全域裝置端點global.azure-devices-provisioning.net)和 ID 範圍 來解析特定的 DPS 實例。 連接 DPS 實例並使用私有端點配置裝置時,請使用服務端點取代全域裝置端點。

例如,Azure IoT C SDK 中的配置裝置用戶端範例(pro_dev_client_sample)設計為在 prov_dev_client_sample.c 中使用global_prov_uri點作為全域配置 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");
    }

請求一個私人端點

你可以透過資源 ID 請求 DPS 實例的私有端點。 要提出此請求,你需要資源擁有者提供資源 ID。

  1. 資源 ID 顯示在 Azure 入口網站中 DPS 資源的屬性頁面,如下圖所示。

    這張截圖顯示 Azure 入口網站中 DPS 實例的屬性頁面,並標示該 DPS 實例的資源 ID。

    謹慎

    資源 ID 確實包含訂閱 ID。

  2. 取得資源 ID 後,請按照設定私有端點的步驟,到建立私有端點頁面的資源分頁進行第 3 步的設定。 選擇 依資源 ID 或別名連接 Azure 資源 ,並在下表中輸入相關資訊。

    領域 價值觀
    資源識別碼或別名 輸入該 DPS 資源的資源 ID。
    目標子資源 輸入 iotDps
    請求訊息 輸入一個請求訊息給 DPS 資源擁有者。
    例如,
    Please approve this new private endpoint
    for IoT devices in site 23 to access this DPS instance

    選擇 下一步:虛擬網路 ,以設定私有端點的虛擬網路。

  3. 「建立私人端點」頁面的虛擬網路標籤中,選擇你的虛擬網路和子網路來建立私有端點。

    顯示「建立私人端點」頁面虛擬網路標籤的截圖。

    選擇 「下一步:DNS 」以選擇私有端點請求所需的任何私有 DNS 整合選項。

  4. 「建立私人端點」頁面的 DNS 標籤中,選擇任何針對私人端點請求所需的私有 DNS 整合選項。

    截圖顯示「建立私人端點」頁面的 DNS 標籤。

    選擇 下一部:標籤,並可選擇性地為你的資源提供任何標籤。

  5. 選擇 下一步:檢視 + 建立,然後選擇 建立 以建立你的私有端點請求。

  6. DPS 擁有者會在 Azure 入口網站的 DPS 實例網路頁面的私人端點連線列表中看到私有端點請求。 在該頁面, 擁有者可以 批准或 拒絕 私有端點請求。

    截圖顯示 Azure 入口網站中 DPS 實例的網路頁面,並標示私有端點請求。

私有端點的定價

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

後續步驟

了解更多關於DPS安全功能: