共用方式為


使用 Azure IoT DPS IP 連線篩選器

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

使用時機

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

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

  • 您需要拒絕 DPS 系統管理員認為可疑的 IP 位址所傳來的流量。

IP 篩選規則的限制

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

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

    想使用 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 位址範圍的規則。

IoT DPS default IP filter settings.

新增 IP 篩選器規則

如何新增 IP 篩選規則:

  1. 前往 Azure 入口網站

  2. 在左側功能表或入口網站頁面上,選取 [所有資源]

  3. 選取您的裝置佈建服務。

  4. 請在左側的 [設定] 功能表中,選取 [網路]

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

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

    Add an IP filter rule to an IoT DPS.

  7. 填寫下列欄位:

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

    After selecting Add an IP Filter rule.

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

    Notification about saving an IP filter rule.

    注意

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

編輯 IP 篩選規則

如何編輯現有的規則:

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

    Edit an IP filter rule.

  2. 做出變更。

  3. 選取 [儲存]。

刪除 IP 篩選器規則

如何刪除 IP 篩選規則:

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

    Delete an IoT DPS IP filter rule.

  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 篩選規則,請參閱位於IoT 中樞資源 - 更新方法定義一節的 IpFilterRule

  2. 使用 Azure Resource Manager 範本。 如需使用 Resource Manager 範本的指引,請參閱Azure Resource Manager 範本。 下列範例示範如何使用 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,請參閱: