Suporte do DPS (serviço de provisionamento de dispositivos) do Azure IoT para redes virtuais

Este artigo apresenta o padrão de conectividade de rede virtual (VNET) para o provisionamento de dispositivos IoT com hubs IoT usando o DPS. Esse padrão fornece conectividade privada entre os dispositivos, o DPS e o Hub IoT dentro de uma VNET do Azure de Propriedade do cliente.

Na maioria dos cenários em que o DPS é configurado com uma VNET, seu Hub IoT também é configurado na mesma VNET. Para obter informações mais específicas sobre suporte VNET e configuração para hubs IoT, consulte Suporte à rede virtual do Hub IoT.

Introdução

Por padrão, os nomes de host do Hub IoT são mapeados para um ponto de extremidade público com um endereço IP roteado publicamente pela Internet. Esse ponto de extremidade público é visível para todos os clientes. Dispositivos IoT em redes de longa distância e redes locais podem tentar acessar o ponto de extremidade público.

Por vários motivos, os clientes podem querer restringir a conectividade aos recursos do Azure, como o DPS. Esses motivos incluem:

  • Impeça a exposição da conexão pela Internet pública. Para reduzir a exposição, introduza mais camadas de segurança usando o isolamento no nível da rede para o hub IoT e os recursos do DPS.

  • A habilitação de uma experiência de conectividade privada de seus ativos de rede local, garantindo que seus dados e tráfego sejam transmitidos diretamente para a rede de backbone do Azure.

  • Impedir ataques de vazamento de redes locais confidenciais.

  • Seguindo os padrões estabelecidos de conectividade de todo o Azure usando pontos de extremidade privados.

Abordagens comuns para restringir a conectividade incluem regras de filtro IP de DPS e rede virtual (VNET) com pontos de extremidade privados. O objetivo deste artigo é descrever a abordagem de VNET para o DPS usando pontos de extremidade privados.

Os dispositivos que operam em redes locais podem usar a VPN (rede virtual privada) ou o emparelhamento privado do ExpressRoute para se conectar a uma VNET no Azure e acessar os recursos de DPS por meio de pontos de extremidade privados.

Um ponto de extremidade privado é um endereço IP privado alocado dentro de uma VNet de propriedade do cliente por meio da qual um recurso do Azure pode ser acessado. Ao ter um ponto de extremidade privado para seu recurso DPS, você pode permitir que dispositivos que operam dentro de sua VNET solicitem provisionamento pelo recurso DPS sem permitir o tráfego para o ponto de extremidade público. Cada recurso do DPS pode dar suporte a vários pontos de extremidade privados, cada um dos quais pode estar localizado em uma VNet em uma região diferente.

Pré-requisitos

Antes de continuar, verifique se os seguintes pré-requisitos foram atendidos:

Limitações do ponto de extremidade privado do Azure

Observe as seguintes limitações atuais do DPS ao usar pontos de extremidade privados:

  • Os pontos de extremidade privados não funcionam quando o recurso DPS e o hub IoT vinculado estão em nuvens diferentes. Por exemplo, Azure Governament e Azure global.

  • Os pontos de extremidade privados no DPS usam o Link Privado do Azure, que só tem suporte em regiões públicas. Para obter mais informações, consulte Disponibilidade do Link Privado do Azure.

  • Atualmente, as políticas de alocação personalizadas com o Azure Functions para DPS não funcionam quando a função do Azure está bloqueada para uma VNET e pontos de extremidade privados.

  • O suporte atual à VNET do DPS é apenas para entrada de dados no DPS. A saída de dados, que é o tráfego do DPS para o Hub IoT, usa um mecanismo de serviço a serviço interno em vez de uma VNET dedicada. O suporte para bloqueio de saída baseado em VNET completo entre o DPS e o Hub IoT não está disponível no momento.

  • A política de alocação de latência mais baixa é usada para atribuir um dispositivo ao Hub IoT com a menor latência. Essa política de alocação não é confiável em um ambiente de rede virtual.

  • Habilitar um ou mais pontos de extremidade privados geralmente envolve desabilitar o acesso público à instância do DPS. Depois que o acesso público for desabilitado, você não poderá mais usar o portal do Azure para gerenciar registros. Em vez disso, você pode gerenciar registros usando a CLI do Azure, o PowerShell ou as APIs de serviço de computadores nas VNET(s)/pontos de extremidade privados configurados na instância DPS.

  • Ao usar pontos de extremidade privados, recomendamos implantar o DPS em uma das regiões que dão suporte a Zonas de Disponibilidade. Caso contrário, as instâncias do DPS com pontos de extremidade privados habilitados poderão ter disponibilidade reduzida em caso de interrupções.

Observação

Consideração sobre residência de dados:

O DPS fornece um Ponto de extremidade de dispositivo global (global.azure-devices-provisioning.net). No entanto, quando você usa o ponto de extremidade global, seus dados podem ser redirecionados para fora da região na qual a instância do DPS foi inicialmente criada. Para garantir a residência de dados na região de DPS inicial, use pontos de extremidade privados.

Criar um ponto de extremidade privado

Para criar um ponto de extremidade privado, siga estas etapas:

  1. No portal do Azure, abra seu recurso DPS e selecione a guia Rede. Selecione Conexões de ponto de extremidade privado e + Ponto de extremidade privado.

    Screenshot that shows adding a new private endpoint for DPS.

  2. Na página Criar um ponto de extremidade privado Noções básicas, insira as informações mencionadas na tabela a seguir.

    Screenshot that shows the private endpoints basics page.

    Campo Valor
    Assinatura Escolha a assinatura desejada do Azure para conter o ponto de extremidade privado.
    Grupo de recursos Escolha ou crie um grupo de recursos para conter o ponto de extremidade privado
    Nome Insira qualquer nome para seu ponto de extremidade privado
    Região A região escolhida deve ser a mesma que a região que contém a VNET, mas não precisa ser igual ao recurso DPS.

    Selecione Avançar: Recurso para configurar o recurso para o qual o ponto de extremidade privado aponta.

  3. Na página Criar um recurso de ponto de extremidade privado, insira as informações mencionadas na tabela a seguir.

    Screenshot that shows the private endpoint resource page.

    Campo Valor
    Assinatura Escolha a assinatura do Azure que contém o recurso DPS para o qual seu ponto de extremidade privado aponta.
    Tipo de recurso Escolha Microsoft.Devices/provisioningservices.
    Recurso Selecione o recurso DPS para o qual o ponto de extremidade privado é mapeado.
    Sub-recurso de destino Selecione iotDps.

    Dica

    Informações sobre a configuração Conectar-se a um recurso do Azure por ID de recurso ou alias são fornecidas na seção Solicitar um ponto de extremidade privado neste artigo.

    Selecione Avançar : Configuração para configurar a VNET para o ponto de extremidade privado.

  4. Na página Criar uma configuração de ponto de extremidade privado, escolha sua rede virtual e sub-rede na qual criar o ponto de extremidade privado.

    Selecione Avançar: Tags e, opcionalmente, forneça todas as tags para seu recurso.

    Screenshot that shows the private endpoint configuration page.

  5. Selecione Revisar + criar e, em seguida, Criar para criar seu recurso de ponto de extremidade privado.

Usar pontos de extremidade privados com dispositivos

Para usar pontos de extremidade privados com o código de provisionamento de dispositivos, é necessário que o seu código use o ponto de extremidades de serviço específico para a instância do DPS, conforme mostrado na página de visão geral da sua instância do DPS no portal do Azure. O ponto de extremidade de serviço tem o seguinte formulário.

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

A maioria dos códigos de amostra demonstrados na nossa documentação e SDKs usam o Ponto de extremidade do dispositivo global (global.azure-devices-provisioning.net) e o Escopo do ID para resolver uma instância do DPS específica. Use o ponto de extremidade de serviço no lugar do ponto de extremidade global do dispositivo ao se conectar a uma instância do DPS usando pontos de extremidade privados para provisionar dispositivos.

Por exemplo, a amostra de cliente de dispositivo de provisionamento (pro_dev_client_sample) no SDK de C da internet das Coisas do Azure foi projetada para usar o Ponto de extremidade do dispositivo global como o URI de provisionamento global (global_prov_uri) em prov_dev_client_sample.c

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

Para usar a amostra com um ponto de extremidade privado, o código realçado acima seria alterado para usar o ponto de extremidade de serviço do seu o recurso de DPS. Por exemplo, se o ponto de extremidade de serviço fosse mydps.azure-devices-provisioning.net, o código teria a seguinte aparência.

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

Solicitar um ponto de extremidade privado

Você pode solicitar um ponto de extremidade privado para uma instância do DPS por ID de recurso. Para fazer essa solicitação, você precisa do proprietário do recurso para fornecer a ID do recurso.

  1. A ID do recurso é fornecida na guia propriedades do recurso DPS, conforme mostrado abaixo.

    Screenshot that shows the DPS Properties tab.

    Cuidado

    Lembre-se de que a ID do recurso contém a ID da assinatura.

  2. Depois de ter a ID do recurso, siga as etapas acima em Configurar um ponto de extremidade privado para a etapa 3 na página Criar um recurso de ponto de extremidade privado. Selecione Conectar-se a um recurso do Azure por ID de recurso ou alias e insira as informações na tabela a seguir.

    Campo Valor
    ID do recurso ou alias Insira a ID de recurso para o recurso de DPS.
    Sub-recurso de destino Insira iotDps
    Mensagem de solicitação Insira uma mensagem de solicitação para o proprietário do recurso de DPS.
    Por exemplo,
    Please approve this new private endpoint
    for IoT devices in site 23 to access this DPS instance

    Selecione Avançar : Configuração para configurar a VNET para o ponto de extremidade privado.

  3. Na página Criar uma configuração de ponto de extremidade privado, escolha sua rede virtual e sub-rede na qual criar o ponto de extremidade privado.

    Selecione Avançar: Tags e, opcionalmente, forneça todas as tags para seu recurso.

  4. Selecione Revisar + criar e, em seguida, Criar para criar sua solicitação de ponto de extremidade privado.

  5. O proprietário do DPS vê a solicitação de ponto de extremidade privado na lista Conexões de ponto de extremidade privado na guia Rede DPS. Nessa página, o proprietário pode Aprovar ou Rejeitar a solicitação de ponto de extremidade privado.

    Screenshot that shows the private endpoint request approval.

Preços de pontos de extremidade privados

Para obter detalhes de preço, confira Preço do Link Privado do Azure.

Próximas etapas

Use os links abaixo para saber mais sobre os recursos de segurança do DPS: