Partilhar via


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

Este artigo apresenta o padrão de conectividade de rede virtual (VNET) 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 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 e configuração de VNET para Hubs IoT, consulte Suporte de rede virtual do Hub IoT.

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 publicamente roteável pela Internet. Este ponto de extremidade público é visível para todos os clientes. Os 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. Estas razões incluem:

  • Evite a exposição da ligação através da Internet pública. A exposição pode ser reduzida introduzindo mais camadas de segurança por meio do isolamento no nível da rede para seus recursos de hub IoT e DPS

  • Habilitar 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.

  • Prevenção de ataques de exfiltração de redes locais sensíveis.

  • Seguir 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 (VNET) com pontos de extremidade privados. O objetivo deste artigo é descrever a abordagem VNET para DPS usando pontos de extremidade privados.

Os dispositivos que operam em redes locais podem usar a Rede Privada Virtual (VPN) ou o emparelhamento privado da Rota Expressa para se conectar a uma VNET no 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 VNET de propriedade do cliente pela qual um recurso do Azure é acessível. Ao ter um ponto de extremidade privado para seu recurso DPS, você pode permitir que dispositivos que operam dentro de sua VNET solicitem provisionamento por seu recurso DPS sem permitir tráfego para o ponto de extremidade público. Cada recurso DPS pode suportar 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 prosseguir, certifique-se de que os seguintes pré-requisitos são atendidos:

Limitações do ponto final privado

Observe as seguintes limitações atuais para 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 Government e Azure global.

  • Os pontos de extremidade privados no DPS usam o Azure Private Link, 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 for DPS não funcionam quando a função do Azure é bloqueada para uma VNET e pontos de extremidade privados.

  • O suporte atual da VNET do DPS é apenas para a 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 para serviço em vez de uma VNET dedicada. O suporte para bloqueio de saída completo baseado em VNET entre DPS e 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 normalmente envolve desabilitar o acesso público à sua 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 de máquinas dentro da(s) VNET(s)/ponto de extremidade privado configurado(s) na instância do DPS.

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

Nota

Consideração da 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 onde a instância DPS foi criada inicialmente. Para garantir a residência de dados na região DPS inicial, use pontos de extremidade privados.

Configurar um ponto de extremidade privado

Para configurar 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, insira as informações mencionadas na tabela a seguir.

    Screenshot that shows the private endpoints basics page.

    Campo Valor
    Subscrição Escolha a assinatura desejada do Azure para conter o ponto de extremidade privado.
    Grupo de recursos Escolher ou criar um grupo de recursos para conter o ponto de extremidade privado
    Name Introduza um nome para o 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 a mesma que o 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
    Subscrição 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.
    Subrecurso de destino Selecione iotDps.

    Gorjeta

    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 : 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 para criar o ponto de extremidade privado.

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

    Screenshot that shows the private endpoint configuration page.

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

Utilizar terminais privados com dispositivos

Para usar pontos de extremidade privados com código de provisionamento de dispositivo, 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 DPS no portal do Azure. O ponto de extremidade do serviço tem a seguinte forma.

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

A maioria dos exemplos de código demonstrados em nossa documentação e SDKs, usam o ponto de extremidade de dispositivo global (global.azure-devices-provisioning.net) e o escopo de ID para resolver uma instância específica do DPS. Use o ponto de extremidade de serviço no lugar do ponto de extremidade de 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 de dispositivo de provisionamento (pro_dev_client_sample) no Azure IoT C SDK foi projetado para usar o ponto de extremidade de 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 ponto de extremidade privado, o código realçado acima seria alterado para usar o ponto de extremidade de serviço para seu recurso DPS. Por exemplo, se o ponto de extremidade do 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 DPS por ID de recurso. Para fazer essa solicitação, você precisa que o proprietário do recurso forneça a ID do recurso.

  1. O ID do recurso é fornecido na guia de propriedades do recurso DPS, conforme mostrado abaixo.

    Screenshot that shows the DPS Properties tab.

    Atenção

    Lembre-se de que o ID do recurso contém o 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 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 o ID do recurso DPS.
    Subrecurso de destino Digite iotDps
    Solicitar mensagem 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 : 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 a rede virtual e a sub-rede para criar o ponto de extremidade privado.

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

  4. Selecione Rever + criar e, em seguida, Criar para criar o seu pedido de ponto final 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.

Fixação de preços de terminais privados

Para obter detalhes de preços, consulte Preços do Azure Private Link.

Próximos passos

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