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 para o provisionamento de dispositivos IoT com hubs IoT usando DPS. Este padrão proporciona conectividade privada entre os dispositivos, DPS e o hub IoT dentro de uma rede virtual Azure propriedade do cliente.

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

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 passível de roteamento público pela Internet. Este ponto de acesso público é visível para todos os clientes. Os dispositivos IoT em redes de área ampla e redes locais podem tentar aceder ao ponto de extremidade público.

Por várias razões, os clientes podem querer restringir a conectividade aos recursos 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.

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

Abordagens comuns para restringir a conectividade incluem regras de filtro IP DPS e redes virtuais com endpoints privados. O objetivo deste artigo é descrever a abordagem de redes virtuais para DPS utilizando endpoints privados.

Dispositivos que operam em redes locais podem usar Rede Privada Virtual (VPN) ou peering privado ExpressRoute para se conectar a uma rede virtual no Azure e aceder a recursos DPS por meio de endpoints privados.

Um endpoint privado é um endereço IP privado atribuído dentro de uma rede virtual propriedade do cliente, através da qual um recurso Azure é acessível. Ao ter um endpoint privado para o seu recurso DPS, pode permitir que dispositivos que operam dentro da sua rede virtual solicitem provisionamento pelo seu recurso DPS sem permitir tráfego para o endpoint público. Cada recurso DPS pode suportar múltiplos endpoints privados, cada um dos quais pode estar localizado numa rede virtual numa 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 para DPS não funcionam quando a função Azure está limitada a uma rede virtual e endpoints privados.

  • O suporte atual para redes virtuais DPS é apenas para entrada de dados no DPS. A saída de dados, que é o tráfego do DPS para o IoT Hub, utiliza um mecanismo interno de serviço-a-serviço em vez de uma rede virtual dedicada. O suporte para bloqueio total de saída baseado em rede virtual entre DPS e IoT Hub não está atualmente disponível.

  • A política de alocação de latência mais baixa é usada para atribuir um dispositivo ao hub IoT com a menor latência. Esta política de alocação não é fiável num 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, pode gerir inscrições usando a CLI do Azure, PowerShell ou APIs de serviço a partir de máquinas dentro de uma ou mais redes virtuais/endpoints privados configurados na instância 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, instâncias DPS com endpoints privados ativados podem ter uma disponibilidade reduzida durante as interrupções.

Observação

Considerações sobre a localização dos dados:

DPS fornece um ponto de extremidade global de dispositivo (global.azure-devices-provisioning.net). No entanto, quando usa o endpoint global, os seus dados podem ser redirecionados para fora da região onde a instância DPS foi inicialmente criada. 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 Azure, navega até ao teu recurso DPS.

  2. No menu de serviço, em Definições, selecione o separador Rede .

  3. No painel de trabalho, selecione o separador de acesso privado e depois selecione + Criar um endpoint privado.

    Captura de ecrã que mostra a adição de um novo endpoint privado para uma instância DPS no portal Azure.

  4. No separador Basics da página Criar um endpoint privado , introduza as informações mencionadas na tabela seguinte.

    Captura de ecrã que mostra o separador Basics da página Criar um endpoint privado.

    Campo Valor
    Subscrição 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 endpoint privado.
    Nome Introduza um nome para o seu ponto de extremidade privado.
    Nome da interface de rede Se desejar, introduza um nome para a interface de rede do seu endpoint privado.
    Região Escolha a região do endpoint privado. A região escolhida deve ser a mesma que a região que contém a rede virtual, mas não tem de 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. No separador Recursos da página Criar um endpoint privado , introduza as informações mencionadas na tabela seguinte.

    Captura de ecrã que mostra o separador de Recursos da página Criar um endpoint privado.

    Campo Valor
    Subscrição Se ainda não estiver escolhido, escolhe a subscrição Azure que contém o recurso DPS para o qual o teu endpoint privado aponta.
    Tipo de recurso Se ainda não estiver escolhido, escolha Microsoft.Devices/ProvisioningServices.
    Recurso Se ainda não estiver escolhido, selecione o recurso DPS para o qual o endpoint privado está mapeado.
    Subrecurso de destino Selecione iotDps.

    Sugestão

    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.

    Selecionar Próximo: Rede Virtual para configurar a rede virtual para o endpoint privado.

  6. No separador Rede Virtual da página Criar um endpoint privado , escolha a sua rede virtual e sub-rede para criar o endpoint privado.

    Captura de ecrã que mostra o separador Rede Virtual da página Criar um endpoint privado.

    Selecione Próximo: DNS para escolher quaisquer opções de integração DNS privada necessárias para o seu endpoint privado.

  7. No separador DNS da página Criar um endpoint privado , escolha quaisquer opções de integração DNS privada necessárias para o seu endpoint privado.

    Captura de ecrã que mostra o separador DNS da página Criar um endpoint privado.

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

  8. Selecione Seguinte: Rever + criar, e depois selecionar Criar para criar o seu recurso de endpoint privado.

Utilizar pontos finais 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 instância do 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 SDK do Azure IoT C 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 endpoint privado, o código destacado no exemplo anterior seria alterado para usar o endpoint de serviço para o 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 página de Propriedades do recurso DPS no portal Azure, como mostrado na captura de ecrã seguinte.

    Captura de ecrã que mostra a página de Propriedades de uma instância DPS no portal Azure, destacando o ID do recurso da instância DPS.

    Atenção

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

  2. Depois de ter o ID de recurso, siga os passos em Configurar um endpoint privado até ao passo 3 na aba Recursos da página Criar um endpoint 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

    Selecionar Próximo: Rede Virtual para configurar a rede virtual para o endpoint privado.

  3. No separador Rede Virtual da página Criar um endpoint privado , escolha a sua rede virtual e sub-rede para criar o endpoint privado.

    Captura de ecrã que mostra o separador Rede Virtual da página Criar um endpoint privado.

    Selecione Próximo: DNS para escolher quaisquer opções de integração privada de DNS necessárias para o seu pedido de endpoint privado.

  4. No separador DNS da página Criar um endpoint privado , escolha quaisquer opções de integração DNS privada necessárias para o seu pedido de endpoint privado.

    Captura de ecrã que mostra o separador DNS da página Criar um endpoint privado.

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

  5. Selecione Seguinte: Rever + criar, e depois selecione Criar para fazer o seu pedido de ponto final privado.

  6. O proprietário do DPS vê o pedido de endpoint privado na lista de ligações de pontos finais privados na página Rede da instância DPS no portal Azure. Nessa página, o proprietário pode aprovar ou rejeitar o pedido de endpoint privado.

    Captura de ecrã que mostra a página de Rede da instância DPS no portal Azure, destacando o pedido de endpoint privado.

Fixação de preços de terminais privados

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

Próximos passos

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