Compartilhar via


Suporte ao DPS (Serviço de Provisionamento de Dispositivos) do Hub IoT do Azure para redes virtuais

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

Na maioria dos cenários em que o DPS está configurado com uma rede virtual, o hub IoT também é configurado na mesma rede virtual. Para obter mais informações sobre o suporte à rede virtual e a configuração para hubs IoT, consulte o suporte do Hub IoT para redes virtuais com o Link Privado do Azure.

Introdução

Por padrão, os nomes de host DPS são mapeados para um ponto de extremidade público com um endereço IP roteável publicamente pela Internet. Este endpoint público é visível para todos os clientes. Dispositivos IoT em redes de ampla área 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. Estes motivos incluem:

  • Impedir a exposição à conexão pela Internet pública. A exposição pode ser reduzida introduzindo mais camadas de segurança por meio do isolamento de nível de rede para seus recursos de Hub IoT e DPS

  • Habilitando uma experiência de conectividade privada de seus ativos de rede locais, garantindo que seus dados e tráfego sejam transmitidos diretamente para a rede de backbone do Azure.

  • Impedindo ataques de exfiltração de redes locais confidenciais.

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

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

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

Um ponto de extremidade privado é um endereço IP privado alocado dentro de uma rede virtual de propriedade do cliente pela qual um recurso do Azure está acessível. Ao ter um ponto de extremidade privado para o recurso DPS, você pode permitir que dispositivos que operam dentro de sua rede virtual solicitem o provisionamento pelo recurso DPS sem permitir o tráfego para o ponto de extremidade público. Cada recurso DPS pode dar suporte a vários pontos de extremidade privados, sendo que cada um pode estar localizado em uma rede virtual em uma região diferente.

Pré-requisitos

Antes de continuar, verifique se os seguintes pré-requisitos são atendidos:

Limitações dos endpoints privados

Observe as seguintes limitações atuais do DPS ao utilizar 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 Government 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 a 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 é bloqueada para uma rede virtual e pontos de extremidade privados.

  • O suporte à rede virtual DPS atual é 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 interno de serviço a serviço em vez de uma rede virtual dedicada. O suporte para bloqueio de saída completo baseado em rede virtual 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 estiver desabilitado, você não poderá mais usar o portal do Azure para gerenciar registros. Em vez disso, você pode gerenciar inscrições usando a CLI do Azure, o PowerShell ou as APIs de serviço a partir de máquinas dentro de uma ou mais redes virtuais ou pontos de extremidade privados configurados na instância do 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, instâncias de DPS com pontos de extremidade privados habilitados podem ter disponibilidade reduzida durante 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 em que a instância do DPS foi criada inicialmente. 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 configurar um ponto de extremidade privado, siga estas etapas:

  1. No portal do Azure, navegue até o recurso DPS.

  2. No menu de serviço, em Configurações, selecione a guia Rede .

  3. No painel de trabalho, selecione a guia Acesso Privado e, em seguida, selecione + Criar um ponto de extremidade privado.

    Captura de tela que mostra a adição de um novo ponto de extremidade privado para uma instância de DPS no portal do Azure.

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

    Captura de tela que mostra a guia Noções básicas da página Criar um ponto de extremidade privado.

    Campo Value
    Subscription Escolha a assinatura desejada do Azure para hospedar 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.
    Nome da Interface de Rede Se desejar, insira um nome para a interface de rede do ponto de extremidade privado.
    Região Escolha a região para o ponto de extremidade privado. A região escolhida deve ser a mesma que a região que contém a rede virtual, mas não precisa ser a mesma que o recurso DPS.

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

  5. Na guia Recurso da página Criar um ponto de extremidade privado , insira as informações mencionadas na tabela a seguir.

    Captura de tela que mostra a guia Recurso da página Criar um ponto de extremidade privado.

    Campo Value
    Subscription Se ainda não tiver sido escolhida, escolha a assinatura do Azure que contém o recurso DPS para o qual o ponto de extremidade privado aponta.
    Tipo de recurso Se ainda não tiver sido escolhido, escolha Microsoft.Devices/ProvisioningServices.
    Recurso Se ainda não estiver escolhido, selecione o recurso DPS para o qual o ponto de extremidade privado é mapeado.
    Sub-recurso de destino Selecione iotDps.

    Dica

    As informações sobre a configuração Conectar 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: Rede Virtual para configurar a rede virtual para o ponto de extremidade privado.

  6. Na guia Rede Virtual da página Criar um ponto de extremidade privado , escolha sua rede virtual e sub-rede para criar o ponto de extremidade privado.

    Captura de tela que mostra a guia Rede Virtual da página Criar um ponto de extremidade privado.

    Selecione Avançar: DNS para escolher as opções de integração DNS privadas necessárias para o ponto de extremidade privado.

  7. Na guia DNS da página Criar um ponto de extremidade privado , escolha as opções de integração DNS privadas necessárias para o ponto de extremidade privado.

    Captura de tela que mostra a guia DNS da página Criar um ponto de extremidade privado.

    Selecione Avançar: Tags e, opcionalmente, adicione tags para o recurso.

  8. Selecione Avançar: Revisar + Criar e, em seguida, selecione Criar para criar seu recurso de endpoint privado.

Usar pontos de extremidade privados com dispositivos

Para usar pontos de extremidade privados com código de provisionamento de dispositivo, o seu código de provisionamento deve usar o ponto de extremidade de serviço específico para sua instância DPS, conforme mostrado na página de visão geral da sua instância do DPS no Azure portal. O ponto de extremidade de serviço tem o formato a seguir.

<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 do dispositivo global ao se conectar a uma instância DPS usando pontos de extremidade privados para provisionar seus dispositivos.

Por exemplo, o exemplo de cliente do dispositivo de provisionamento (pro_dev_client_sample) no SDK do Azure IoT C foi projetado 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 o exemplo com um endpoint privado, o código destacado no exemplo anterior precisaria ser alterado para utilizar o endpoint de serviço do seu recurso DPS. Por exemplo, se o endpoint do serviço fosse mydps.azure-devices-provisioning.net, o código seria como segue.

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 endpoint 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 solicitar ao proprietário do recurso que forneça o ID do recurso.

  1. A ID do recurso é fornecida na página Propriedades do recurso DPS no portal do Azure, conforme mostrado na captura de tela a seguir.

    Captura de tela que mostra a página Propriedades de uma instância de DPS no portal do Azure, realçando a ID do recurso para a instância do DPS.

    Cuidado

    O ID do recurso contém o ID da assinatura.

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

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

    Selecione Avançar: Rede Virtual para configurar a rede virtual para o ponto de extremidade privado.

  3. Na guia Rede Virtual da página Criar um ponto de extremidade privado , escolha sua rede virtual e sub-rede para criar o ponto de extremidade privado.

    Captura de tela que mostra a guia Rede Virtual da página Criar um ponto de extremidade privado.

    Selecione Avançar: DNS para escolher as opções de integração DNS privadas necessárias para sua solicitação de ponto de extremidade privado.

  4. Na guia DNS da página Criar um ponto de extremidade privado , escolha as opções de integração DNS privadas necessárias para sua solicitação de ponto de extremidade privado.

    Captura de tela que mostra a guia DNS da página Criar um ponto de extremidade privado.

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

  5. Selecione Avançar: Revisar + criar e, em seguida, selecione Criar para criar sua solicitação de ponto de extremidade privado.

  6. O proprietário do DPS vê a solicitação de ponto de extremidade privado na lista de conexões de ponto de extremidade privado na página Rede da instância do DPS no portal do Azure. Nessa página, o proprietário pode aprovar ou rejeitar a solicitação de ponto de extremidade privado.

    Captura de tela que mostra a página Rede da instância do DPS no portal do Azure, realçando a solicitação de ponto de extremidade privado.

Preços de pontos de extremidade privados

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

Próximas etapas

Saiba mais sobre os recursos de segurança do DPS: