Este artigo descreve como usar uma rede privada para carregar arquivos em uma conta de Armazenamento do Azure.
Para implantações típicas do Azure IoT, os dispositivos cliente IoT precisam se comunicar diretamente com a conta de armazenamento para carregar arquivos. Os dispositivos cliente IoT normalmente são distribuídos em locais diferentes e não fazem parte de uma rede privada, portanto, eles se conectam pela Internet pública. Você não pode integrar esses dispositivos em uma rede privada, portanto, a conta de armazenamento exige que você permita o tráfego de entrada da Internet.
Mas se você tiver requisitos de segmentação de rede mais rígidos, poderá restringir o acesso à conta de armazenamento de dentro de uma rede privada. Essa solução bloqueia o tráfego direto da Internet para a conta de armazenamento para que a conta de armazenamento aceite apenas o tráfego que passa pela instância de entrada do Gateway de Aplicativo do Azure. Se você implementar uma topologia de rede hub-spoke, o Firewall do Azure normalmente deverá inspecionar o tráfego, o que fornece uma camada extra de segurança.
Arquitetura
Baixe um Arquivo Visio dessa arquitetura.
Workflow
O fluxo de dados a seguir corresponde ao diagrama anterior.
Uma topologia de rede hub-spoke tem uma rede virtual de hub que emparelha cada rede virtual de recurso, também chamada de spoke. Todo o tráfego passa pelo Firewall do Azure para inspeção de tráfego.
Uma conta de Armazenamento de Blobs do Azure nega acesso público à Internet. Ele só permite conexões de outras redes virtuais. Uma regra de instância de recurso permite que um serviço escolhido do Hub IoT do Azure se conecte por meio de uma identidade gerenciada. A conta de Armazenamento de Blobs só dá suporte ao RBAC (controle de acesso baseado em função) do Azure para acesso ao plano de dados.
O gateway de aplicativo tem DNS (Sistema de Nomes de Domínio) personalizado e encerra o tráfego TLS (Transport Layer Security). Ele reside em uma rede virtual. Essa rede virtual emparelha com a rede virtual que o link privado da conta de Armazenamento de Blobs usa. Um túnel forçado por meio da rede virtual do hub estabelece a conexão.
O dispositivo cliente IoT que usa o SDK do Hub IoT solicita um URI de SAS (assinatura de acesso compartilhado) para uploads de arquivos no Hub IoT. O dispositivo cliente IoT envia a solicitação pela Internet pública.
O Hub IoT lida com essa solicitação para o dispositivo. Ele se conecta diretamente à conta de Armazenamento de Blobs por meio da autenticação de identidade gerenciada, que tem permissões de Colaborador de Dados do Blob de Armazenamento para solicitações de chave de delegação de usuário.
O Hub IoT solicita uma chave de delegação de usuário para a conta de Armazenamento de Blobs. Um token SAS de curta duração concede ao dispositivo permissão de leitura/gravação no blob solicitado no contêiner de blob.
O Hub IoT envia o URI da conta de Armazenamento de Blobs público e o token SAS para o dispositivo cliente IoT, juntamente com uma ID de correlação.
O dispositivo cliente IoT tem lógica para substituir o URI público do Armazenamento de Blobs por um domínio personalizado, por exemplo, um dispositivo gêmeo. O dispositivo IoT usa um SDK de Armazenamento de Blobs padrão para carregar o arquivo por meio do DNS de Armazenamento de Blobs personalizado.
O Gateway de Aplicativo recebe o HTTP POST do dispositivo cliente e o envia para a conta de Armazenamento de Blobs por meio do Link Privado do Azure.
Quando o upload do arquivo é concluído, o dispositivo cliente IoT usa o SDK do IoT do Azure para notificar o Hub IoT.
O dispositivo cliente IoT atualiza o status de carregamento de arquivo para que o Hub IoT possa disparar uma notificação de carregamento de arquivo para serviços de back-end, se a notificação estiver configurada. O dispositivo cliente também libera recursos associados ao carregamento de arquivos no Hub IoT.
Componentes
O Gateway de Aplicativo é uma solução gerenciada de PaaS (plataforma como serviço) que você pode usar para criar front-ends altamente seguros, escalonáveis e altamente disponíveis. Nessa arquitetura, o Gateway de Aplicativo lida com o tráfego HTTPS de entrada da Internet, aplica a terminação TLS, negocia o TLS com a conta de Armazenamento de Blobs e encaminha o tráfego por meio de uma rede privada para a conta de Armazenamento de Blobs.
O Firewall do Azure fornece proteção para seus recursos de Rede Virtual do Azure. Nessa arquitetura, o Firewall do Azure filtra e roteia o tráfego entre a rede de perímetro e as redes spoke.
O Hub IoT é uma solução gerenciada por PaaS que atua como um hub de mensagens central para comunicação bidirecional entre um aplicativo IoT e os dispositivos que ele gerencia. Nessa arquitetura, o Hub IoT é o ponto de extremidade central ao qual os dispositivos cliente IoT se conectam para operações de controle e plano de dados.
O Link Privado fornece acesso privado a serviços hospedados na plataforma do Azure, mantendo seus dados na rede da Microsoft. Nessa arquitetura, o Link Privado fornece comunicação privada entre o Gateway de Aplicativo e a conta de Armazenamento de Blobs.
O armazenamento oferece uma solução de armazenamento em nuvem durável, altamente disponível e altamente escalável. Inclui funcionalidades de armazenamento de objetos, de arquivos, de discos, de filas e de tabelas. Nessa arquitetura, os dispositivos usam o Armazenamento de Blobs para carregar arquivos na nuvem por meio de tokens SAS de curta duração que o Hub IoT fornece por meio da delegação do usuário.
As zonas DNS privadas fornecem um serviço DNS confiável e de segurança aprimorada para gerenciar e resolver nomes de domínio em uma rede virtual sem a necessidade de uma solução DNS personalizada. Nessa arquitetura, uma zona DNS privada fornece uma entrada DNS privada para o Armazenamento de Blobs para que o ponto de extremidade do blob de armazenamento seja convertido em seu ponto de extremidade IP privado na rede.
A Rede Virtual é o bloco de construção fundamental para sua rede privada no Azure. Esse serviço permite que muitos tipos de recursos do Azure, como máquinas virtuais do Azure, se comuniquem entre si, com a Internet e com redes locais com segurança aprimorada. Essa arquitetura usa a Rede Virtual para criar uma topologia de rede privada, o que evita pontos de extremidade públicos da Internet para serviços baseados no Azure.
Detalhes do cenário
Para implantações regulares, um dispositivo cliente IoT do Azure precisa se comunicar diretamente com uma conta de armazenamento para carregar um arquivo. Desabilitar o tráfego da Internet na conta de armazenamento impede que todos os dispositivos cliente IoT carreguem arquivos. A funcionalidade de carregamento de arquivos do Hub IoT atua apenas como uma delegação de usuário para gerar um token SAS que tenha permissões de leitura/gravação em um blob. O upload do arquivo em si não passa pelo Hub IoT. Um dispositivo cliente IoT usa o SDK normal do Armazenamento de Blobs para o upload real.
Nesse cenário, a comunicação entre o Hub IoT e a conta de armazenamento ainda passa pelo ponto de extremidade público. Essa exceção é possível por meio de configurações de rede de armazenamento para instâncias de recursos. Você pode desabilitar o acesso público à Internet para a conta de armazenamento e permitir que os serviços do Azure e instâncias específicas de recursos se conectem por meio do backbone do Azure. Esse perímetro de rede é emparelhado com um perímetro de identidade baseado em ID do Microsoft Entra que usa o RBAC do Azure para restringir o acesso ao plano de dados.
Essa arquitetura atribui uma identidade gerenciada ao Hub IoT. A identidade gerenciada recebe a função de Colaborador de Dados do Blob de Armazenamento para a conta de Armazenamento especificada. Com essa permissão, o Hub IoT pode solicitar uma chave de delegação de usuário para construir um token SAS. O dispositivo cliente IoT recebe o token SAS para o processo de carregamento de arquivos.
O Gateway de Aplicativo atua como o ponto de entrada para solicitações que vão para o ponto de extremidade privado da conta de armazenamento, que é configurada como o único back-end. O Gateway de Aplicativo usa um endereço IP público. Um provedor DNS personalizado pode ser configurado para mapear o endereço IP público para um registro A ou registro CNAME .
Se você tiver requisitos de segurança internos para usar pontos de extremidade privados para muitos serviços de PaaS do Azure, poderá implementar esse cenário para fornecer ciclos de validação mais curtos para implantar suas soluções de IoT em produção.
Possíveis casos de uso
Essa arquitetura pode ser aplicada a qualquer cenário que use dispositivos que precisam se comunicar com uma conta de armazenamento que não é exposta publicamente.
Por exemplo, um fornecedor de automação industrial fornece controladores e sensores de borda conectados gerenciados. Esses sensores precisam se comunicar com a nuvem do Azure por meio da Internet pública, mas a equipe de segurança do fornecedor exige que a conta de armazenamento tenha acesso à Internet público negado. Essa arquitetura atende a esse requisito.
Alternativas
Se você não precisar da topologia de rede hub-spoke que tem inspeção de tráfego do Firewall do Azure, poderá implementar uma topologia de rede simplificada para se beneficiar dessa abordagem. Você pode usar uma única rede virtual que tenha sub-redes distintas para acomodar o Gateway de Aplicativo, o Link Privado e a zona DNS privada. A conta de armazenamento e o Hub IoT podem usar as mesmas configurações que a arquitetura original.
Os benefícios de uma arquitetura simplificada incluem complexidade e custo reduzidos. Se você não tiver requisitos comerciais ou corporativos específicos para uma topologia hub-spoke, use a arquitetura simplificada para eliminar pontos de extremidade públicos da Internet da conta de armazenamento. Essa abordagem também ajuda a garantir que os aplicativos IoT que usam a funcionalidade de upload de arquivos do Hub IoT funcionem corretamente.
Para obter um exemplo que implanta uma arquitetura semelhante, consulte Configurar o upload de arquivos do Hub IoT para o Armazenamento por meio de um ponto de extremidade privado. Este exemplo implanta um dispositivo cliente IoT simulado e usa dispositivos gêmeos para substituir o nome de domínio personalizado da conta de armazenamento.
Colaboradores
Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.
Principais autores:
- Katrien De Graeve - Brasil | Engenheiro de software
- Vincent Misson - Brasil | Arquiteto de Soluções em Nuvem
Outro colaborador:
- Nacim Allouache - Brasil | Arquiteto de Soluções em Nuvem
Para ver perfis não públicos do LinkedIn, entre no LinkedIn.
Próxima etapa
Saiba como carregar arquivos com o Hub IoT.