共用方式為


使用 Azure IoT DPS IP 連線篩選器

安全性是任何 IoT 解決方案的一個重要課題。 有時候您需要在執行安全性設定的程序中明確地指定可連線的裝置 IP 位址。 Azure IoT 中樞裝置佈建服務 (DPS) 的「IP 篩選器」功能可讓您設定規則,以拒絕或接受來自特定 IPv4 位址的流量。

使用時機

有兩個特定的使用案例適合封鎖來自特定 IP 位址的 DPS 端點連線:

  • 您的 DPS 只應接收來自指定 IP 位址範圍的流量,並拒絕其他所有流量。 例如,您正在使用 具有 Azure Express Route 的 DPS,來在 DPS 執行個體與您的設備之間建立私人連線。

  • 您必須拒絕來自 DPS 系統管理員識別為可疑的 IP 位址的流量。

IP 篩選規則的限制

如果已啟用 IP 篩選,請注意下列限制:

  • 您可能無法使用 Azure 入口網站來管理註冊。 如果發生此情況,您可以將一或多部機器的 IP 位址新增至 ipFilterRules,然後使用 Azure CLI、PowerShell 或服務 API 從這些機器管理 DPS 執行個體的註冊。

    想使用 IP 篩選功能來允許僅限對所選 IP 位址的存取權時,最可能出現這種情境。 在此情況下,需設定規則以啟用特定位址或位址範圍,並設定用來封鎖所有其他位址的預設規則 (0.0.0.0/0)。 此預設規則會封鎖 Azure 入口網站執行作業,例如管理 DPS 執行個體上的註冊。 如需詳細資訊,請參閱本文中的 IP 篩選規則評估

篩選器規則的套用方式

IP 篩選器規則會套用在 DPS 執行個體層級。 因此,IP 篩選器規則會套用至來自裝置和後端應用程式的所有連接 (使用任何受支援的通訊協定)。

嘗試建立連線的 IP 位址若符合 DPS 執行個體內的拒絕 IP 規則,將會收到未授權 401 狀態碼和描述。 回應訊息未提及 IP 規則。

這很重要

拒絕 IP 位址可防止其他 Azure 服務與 DPS 執行個體互動。

預設設定

根據預設已將 IP 篩選停用,且 [公用網路存取] 會設定為 [所有網路]。 此預設設定表示您的 DPS 會接受來自任何 IP 位址的連線,或者會遵守可接受 0.0.0.0/0 IP 位址範圍的規則。

螢幕擷取畫面,顯示 Azure 入口網站中 IoT DPS 預設 IP 篩選設定。

新增 IP 篩選器規則

如何新增 IP 篩選規則:

  1. 前往 Azure 入口網站

  2. 從入口網站功能表或入口網站頁面中,選取 [ 所有資源]。

  3. 選取您的裝置布建服務實例。

  4. 在服務功能表中的 [設定] 底下,選取 [網路]

  5. 在工作窗格的 [ 公用網路存取] 底下,選取 [選取的 IP 範圍]

  6. 請選取 [+ 新增 IP 篩選規則]

    螢幕擷取畫面,示範如何將 IP 篩選規則新增至 Azure 入口網站中的 IoT DPS 執行個體。

  7. 填寫下列欄位:

    領域 說明
    名稱 名稱必須是唯一且不區分大小寫的英數字元字串,長度上限為 128 個字元。 所能接受的字元只有 ASCII 7 位元英數字元以及 {'-', ':', '/', '\', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '''}
    位址範圍 單一 IPv4 位址或 IP 位址區塊,採用無類別 Inter-Domain 路由 (CIDR) 表示法。 例如,在 CIDR 表示法中,192.168.100.0/22 表示從 192.168.100.0 到 192.168.103.255 的 1024 個 IPv4 位址。
    行動 請選取 [允許] 或 [區塊]

    螢幕擷取畫面,示範如何在 Azure 入口網站中定義和儲存 IoT DPS 執行個體的 IP 篩選規則。

  8. 選取 [儲存]。 您應該會看到一則警示,告知正在進行更新。

    螢幕擷取畫面,顯示在 Azure 入口網站 中儲存 IP 篩選規則時所顯示的通知。

    備註

    達到 100 個 IP 篩選規則的上限後,[+ 新增 IP 篩選規則] 選項會因此停用。

編輯 IP 篩選規則

如何編輯現有的規則:

  1. 請選取您想要變更的 IP 篩選規則資料。

    螢幕擷取畫面,顯示如何在 Azure 入口網站中編輯 IoT DPS 執行個體的 IP 篩選規則。

  2. 做出變更。

  3. 選取 [儲存]。

刪除 IP 篩選器規則

如何刪除 IP 篩選規則:

  1. 請在想要刪除的 IP 規則資料列上,選擇 [刪除] 圖示。

    螢幕擷取畫面,顯示如何在 Azure 入口網站中刪除 IoT DPS 執行個體的 IP 篩選規則。

  2. 選取 [儲存]。

IP 篩選器規則評估

IP 篩選規則會依序套用。 由符合 IP 位址的第一條規則來決定接受或拒絕的動作。

例如,如果您想要接受 192.168.100.0/22 範圍中的位址,並拒絕其他所有位址,則方格中的第一個規則應接受位址範圍 192.168.100.0/22。 下一個規則應使用 0.0.0.0/0 範圍拒絕所有位址。

如何變更 IP 篩選規則的順序:

  1. 選取您想要移動的規則。

  2. 將欄位拖放至想要的位置。

  3. 選取 [儲存]。

使用 Azure Resource Manager 範本更新 IP 篩選規則

有兩種方式可以更新 DPS IP 篩選:

  1. 呼叫 IoT 中樞資源提供者 REST API 方法。 若要瞭解如何使用 REST 更新 IP 篩選規則,請參閱 IpFilterRuleIoT 中樞資源 - 更新定義一節。

  2. 使用 Azure Resource Manager 範本。 如需如何使用 Resource Manager 範本的詳細資訊,請參閱什麼是 ARM 範本?。 下列範例示範如何使用 Azure Resource Manager 範本來建立、編輯和刪除 DPS IP 篩選規則。

    備註

    Azure CLI 和 Azure PowerShell 目前不支援 DPS IP 篩選規則更新。

新增 IP 篩選器規則

下列範本範例會建立名為 "AllowAll" 的新 IP 篩選器規則,以接受所有流量。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": {
        "iotDpsName": {
            "type": "string",
            "defaultValue": "[resourceGroup().name]",
            "minLength": 3,
            "metadata": {
                "description": "Specifies the name of the IoT DPS service."
            }
        }, 
        "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]",
            "metadata": {
                "description": "Location for Iot DPS resource."
            }
        }        
    }, 
    "variables": {
        "iotDpsApiVersion": "2020-01-01"
    }, 
    "resources": [
        {
            "type": "Microsoft.Devices/provisioningServices",
            "apiVersion": "[variables('iotDpsApiVersion')]",
            "name": "[parameters('iotDpsName')]",
            "location": "[parameters('location')]",
            "sku": {
                "name": "S1",
                "tier": "Standard",
                "capacity": 1
            },
            "properties": {
                "IpFilterRules": [
                    {
                        "FilterName": "AllowAll",
                        "Action": "Accept",
                        "ipMask": "0.0.0.0/0"
                    }
                ]
            }            
        }
    ]
}

根據您的需求更新範本的 IP 篩選器規則屬性。

屬性 說明
FilterName 提供 IP 篩選規則的名稱。 此值必須是唯一的、不區分大小寫的英數字串,長度不得為 128 個字元。 所能接受的字元只有 ASCII 7 位元英數字元以及 {'-', ':', '/', '\', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '''}
行動 接受的值為 [接受] 或 [拒絕] 作為 IP 篩選規則的動作。
ipMask 提供單一 IPv4 位址或以 CIDR 標記法表示的 IP 位址區塊。 例如,在 CIDR 表示法中,192.168.100.0/22 表示從 192.168.100.0 到 192.168.103.255 的 1024 個 IPv4 位址。

更新 IP 篩選器規則

下列範本範例會更新名為 "AllowAll" 的 IP 篩選器規則 (如先前所示),以拒絕所有流量。

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",  
    "contentVersion": "1.0.0.0",  
    "parameters": { 
        "iotDpsName": { 
            "type": "string", 
            "defaultValue": "[resourceGroup().name]", 
            "minLength": 3, 
            "metadata": { 
                "description": "Specifies the name of the IoT DPS service." 
            } 
        },  
        "location": { 
            "type": "string", 
            "defaultValue": "[resourceGroup().location]", 
            "metadata": { 
                "description": "Location for Iot DPS resource." 
            } 
        }        
    },  
    "variables": { 
        "iotDpsApiVersion": "2020-01-01" 
    },  
    "resources": [ 
        { 
            "type": "Microsoft.Devices/provisioningServices", 
            "apiVersion": "[variables('iotDpsApiVersion')]", 
            "name": "[parameters('iotDpsName')]", 
            "location": "[parameters('location')]", 
            "sku": { 
                "name": "S1", 
                "tier": "Standard", 
                "capacity": 1 
            }, 
            "properties": { 
                "IpFilterRules": [ 
                    { 
                        "FilterName": "AllowAll", 
                        "Action": "Reject", 
                        "ipMask": "0.0.0.0/0" 
                    } 
                ] 
            }             
        } 
    ] 
}

刪除 IP 篩選器規則

下列範本範例會刪除 DPS 執行個體的所有 IP 篩選器規則。

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",  
    "contentVersion": "1.0.0.0",  
    "parameters": { 
        "iotDpsName": { 
            "type": "string", 
            "defaultValue": "[resourceGroup().name]", 
            "minLength": 3, 
            "metadata": { 
                "description": "Specifies the name of the IoT DPS service." 
            } 
        },  
        "location": { 
            "type": "string", 
            "defaultValue": "[resourceGroup().location]", 
            "metadata": { 
                "description": "Location for Iot DPS resource." 
            } 
        }        
    },  
    "variables": { 
        "iotDpsApiVersion": "2020-01-01" 
    },  
    "resources": [ 
        { 
            "type": "Microsoft.Devices/provisioningServices", 
            "apiVersion": "[variables('iotDpsApiVersion')]", 
            "name": "[parameters('iotDpsName')]", 
            "location": "[parameters('location')]", 
            "sku": { 
                "name": "S1", 
                "tier": "Standard", 
                "capacity": 1 
            }, 
            "properties": { 
            }             
        } 
    ] 
}

後續步驟

若要進一步探索管理 DPS,請參閱: