Utilizar os filtros de ligação IP do Azure IoT DPS

A segurança é um aspeto importante de qualquer solução IoT. Por vezes, como parte da sua configuração de segurança, tem de especificar explicitamente os endereços IP a partir dos quais os dispositivos se podem ligar. A funcionalidade de filtro de IP do Serviço Aprovisionamento de Dispositivos no Hub IoT (DPS) permite-lhe configurar regras para rejeitar ou aceitar o tráfego de endereços IPv4 específicos.

Quando utilizar o

Há dois casos de utilização nos quais é útil bloquear as ligações a um ponto final do DPS a partir de determinados endereços IP:

  • O seu DPS só deve receber tráfego de um intervalo especificado de endereços IP e rejeitar tudo o resto. Por exemplo, você está usando seu DPS com a Rota Expressa do Azure para criar conexões privadas entre uma instância do DPS e seus dispositivos.

  • Tem de rejeitar o tráfego de endereços IP que o administrador do DPS identificou como sendo suspeitos.

Limitações das regras de filtro IP

Observe as seguintes limitações se a filtragem de IP estiver habilitada:

  • Talvez você não consiga usar o portal do Azure para gerenciar registros. Se isso ocorrer, você poderá adicionar o endereço IP de uma ou mais máquinas à ipFilterRules instância do DPS e gerenciar as inscrições na instância do DPS dessas máquinas com a CLI do Azure, o PowerShell ou as APIs de serviço.

    Esse cenário é mais provável de acontecer quando você deseja usar a filtragem de IP para permitir o acesso apenas a endereços IP selecionados. Nesse caso, você configura regras para habilitar determinados endereços ou intervalos de endereços e uma regra padrão que bloqueia todos os outros endereços (0.0.0.0/0). Essa regra padrão impedirá que o portal do Azure execute operações como gerenciar inscrições na instância do DPS. Para obter mais informações, consulte Avaliação de regras de filtro IP mais adiante neste artigo.

Como são aplicadas as regras de filtro

As regras de filtro de IPs são aplicadas ao nível das instâncias do DPS. Dessa forma, essas regras são aplicadas a todas as ligações de dispositivos e aplicações de back-end que utilizem qualquer protocolo suportado.

Qualquer tentativa de ligação de um endereço IP que corresponda a uma regra de IP de rejeição na sua instância do DPS recebe o código de estado 401 não autorizado e uma descrição. A mensagem da resposta não menciona a regra de IP.

Importante

A rejeição de endereços IP pode impedir que outros serviços do Azure interajam com a instância do DPS.

Definição predefinida

Por predefinição, a filtragem IP está desativada e o acesso à rede pública está definido como Todas as redes. Essa configuração padrão significa que seu DPS aceita conexões de qualquer endereço IP ou está em conformidade com uma regra que aceita o intervalo de endereços IP 0.0.0.0/0.

IoT DPS default IP filter settings.

Adicionar uma regra de filtro IP

Para adicionar uma regra de filtro IP:

  1. Aceda ao portal do Azure.

  2. No menu à esquerda ou na página do portal, selecione Todos os recursos.

  3. Selecione o Serviço de Provisionamento de Dispositivo.

  4. No menu Configurações do lado esquerdo, selecione Rede.

  5. Em Acesso à rede pública, selecione Intervalos IP selecionados

  6. Selecione + Adicionar regra de filtro IP.

    Add an IP filter rule to an IoT DPS.

  7. Preencha os seguintes campos:

    Campo Descrição
    Nome Uma cadeia alfanumérica única, que não diferencia maiúsculas de minúsculas, com até 128 caracteres. Só são aceites os carateres alfanuméricos ASCII 7-bit mais {'-', ':', '/', '\', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '''}.
    Intervalo de endereços Um único endereço IPv4 ou um bloco de endereços IP na notação CIDR. Por exemplo, em notação CIDR, 192.168.100.0/22 representa os endereços IPv4 1024 de 192.168.100.0 a 192.168.103.255.
    Ação Selecione Permitir ou Bloquear.

    After selecting Add an IP Filter rule.

  8. Selecione Guardar. Você verá um alerta notificando que a atualização está em andamento.

    Notification about saving an IP filter rule.

    Nota

    + Adicionar Regra de Filtro IP é desativado quando você atinge o máximo de 100 regras de filtro IP.

Editar uma regra de filtro IP

Para editar uma regra existente:

  1. Selecione os dados da regra de filtro IP que deseja alterar.

    Edit an IP filter rule.

  2. Faça a mudança.

  3. Selecione Guardar.

Eliminar uma regra de filtro de IP

Para excluir uma regra de filtro IP:

  1. Selecione o ícone de exclusão na linha da regra de IP que você deseja excluir.

    Delete an IoT DPS IP filter rule.

  2. Selecione Guardar.

Avaliação das regras de filtros de IP

As regras de filtro IP são aplicadas em ordem. A primeira regra que corresponde ao endereço IP determina a ação de aceitação ou rejeição.

Por exemplo, se quiser aceitar os endereços no intervalo 192.168.100.0/22 e rejeitar todos os outros, a primeira regra na grelha deve aceitar o intervalo de endereços 192.168.100.0/22. A regra seguinte deve rejeitar todos os endereços mediante a utilização do intervalo 0.0.0.0/0.

Para alterar a ordem das regras de filtro de IP:

  1. Selecione a regra que deseja mover.

  2. Arraste e solte a regra no local desejado.

  3. Selecione Guardar.

Atualizar regras de filtro IP usando modelos do Azure Resource Manager

Há duas maneiras de atualizar seu filtro IP DPS:

  1. Chame o método REST API do Recurso do Hub IoT. Para saber como atualizar suas regras de filtro IP usando REST, consulte a seção Definições do método Recurso do Hub Iot - Atualização.IpFilterRule

  2. Use os modelos do Azure Resource Manager. Para obter orientação sobre como usar os modelos do Resource Manager, consulte Modelos do Azure Resource Manager. Os exemplos a seguir mostram como criar, editar e excluir regras de filtro IP do DPS com modelos do Azure Resource Manager.

    Nota

    Atualmente, a CLI do Azure e o Azure PowerShell não oferecem suporte a atualizações de regras de filtro IP do DPS.

Adicionar uma regra de filtro IP

O exemplo de modelo seguinte cria uma regra de filtro de IP nova com o nome "AllowAll", que aceita todo o tráfego.

{
    "$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"
                    }
                ]
            }            
        }
    ]
}

Atualize os atributos da regra de filtro de IP do modelo de acordo com os seus requisitos.

Atributo Description
FilterName Indique um nome para a regra de Filtro de IP. O nome tem de ser uma cadeia alfanumérica exclusiva, sensível a maiúsculas e minúsculas com um máximo de 128 carateres. Só são aceites os carateres alfanuméricos ASCII 7-bit mais {'-', ':', '/', '\', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '''}.
Ação Os valores aceitos são Aceitar ou Rejeitar como a ação para a regra de filtro IP.
ipMask Indique um endereço IPv4 individual ou um bloco de endereços IP em notação CIDR. Por exemplo, em notação CIDR, 192.168.100.0/22 representa os endereços IPv4 1024 de 192.168.100.0 a 192.168.103.255.

Atualizar uma regra de filtro de IP

O exemplo de modelo seguinte atualiza a regra de filtro de IP denominada "AllowAll", mostrada acima, para rejeitar todo o tráfego.

{ 
    "$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" 
                    } 
                ] 
            }             
        } 
    ] 
}

Eliminar uma regra de filtro de IP

O exemplo de modelo seguinte elimina todas as regras de filtro de IP da instância do DPS.

{ 
    "$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": { 
            }             
        } 
    ] 
}

Próximos passos

Para explorar ainda mais a gestão do DPS, veja: