Ideias de soluções
Este artigo descreve uma ideia de solução. Seu arquiteto de nuvem pode usar essa orientação para ajudar a visualizar os principais componentes para uma implementação típica dessa arquitetura. Use este artigo como ponto de partida para projetar uma solução bem arquitetada que se alinhe com os requisitos específicos da sua carga de trabalho.
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, por isso se conectam pela Internet pública. Não é possível integrar esses dispositivos em uma rede privada, portanto, a conta de armazenamento requer 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. Esta solução bloqueia o tráfego direto da Internet para a conta de Armazenamento para que a conta de Armazenamento só aceite tráfego que passe 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 deve inspecionar o tráfego, o que fornece uma camada extra de segurança.
Arquitetura
Transfira um ficheiro do Visio desta arquitetura.
Fluxo de Trabalho
O fluxo de trabalho a seguir corresponde ao diagrama anterior.
Uma topologia de rede hub-spoke tem uma rede virtual de hub que faz par a 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 Blob dá suporte apenas 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). Reside dentro de uma rede virtual. Essa rede virtual faz par com a rede virtual que o link privado da conta de Armazenamento de Blob usa. Um túnel forçado através da rede virtual do hub estabelece a conexão.
O dispositivo cliente IoT que usa o SDK do Hub IoT solicita um URI de assinatura de acesso compartilhado (SAS) para carregamentos 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 Blob por meio da autenticação de identidade gerenciada, que tem permissões de Colaborador de Dados de 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 Blob. 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 pública de Blob Storage 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 de armazenamento de Blob público por um domínio personalizado, por exemplo, um dispositivo gêmeo. O dispositivo IoT usa um SDK de Armazenamento de Blob padrão para carregar o arquivo por meio do DNS de Armazenamento de Blob personalizado.
O Gateway de Aplicativo recebe o HTTP POST do dispositivo cliente e o envia para a conta de Armazenamento de Blob por meio do Azure Private Link.
Quando o carregamento do arquivo é concluído, o dispositivo cliente IoT usa o SDK do Azure IoT 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 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 Application Gateway é uma solução gerenciada por plataforma como serviço (PaaS) que você pode usar para criar front-ends altamente seguros, escaláveis e altamente disponíveis. Nessa arquitetura, o Application Gateway lida com o tráfego HTTPS de entrada da Internet, aplica a terminação TLS, negocia TLS com a conta de Armazenamento de Blob e encaminha o tráfego através de uma rede privada para a conta de Armazenamento de Blob.
O Firewall do Azure fornece proteção para seus recursos da 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 faladas.
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 Private Link fornece acesso privado a serviços hospedados na plataforma Azure, mantendo seus dados na rede da Microsoft. Nessa arquitetura, o Private Link fornece comunicação privada entre o Application Gateway e a conta de Armazenamento de Blob.
O armazenamento oferece uma solução de armazenamento em nuvem durável, altamente disponível e massivamente escalável. Ele inclui recursos de armazenamento de objetos, arquivos, discos, filas e tabelas. Nessa arquitetura, os dispositivos usam o Armazenamento de Blob para carregar arquivos para a 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 Blob para que o ponto de extremidade do blob de armazenamento se traduza em seu ponto de extremidade IP privado dentro da rede.
A Rede Virtual é o bloco de construção fundamental para a 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, 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 do Azure IoT precisa se comunicar diretamente com uma conta de armazenamento para carregar um arquivo. A desativação do tráfego da Internet na conta de armazenamento impede que qualquer dispositivo cliente IoT carregue arquivos. A funcionalidade de carregamento de arquivo 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 carregamento do arquivo em si não passa pelo Hub IoT. Um dispositivo cliente IoT usa o SDK de armazenamento de Blob normal para o carregamento 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 à conta de Armazenamento e permitir que 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 de Blob de Armazenamento à 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 Application Gateway atua como o ponto de entrada para solicitações que vão para o ponto de extremidade privado da conta de armazenamento, que é configurado como o único back-end. O Application Gateway usa um endereço IP público. Um provedor de DNS personalizado pode ser configurado para mapear o endereço IP público para um registro A ou registro CNAME .
Se você tiver requisitos internos de segurança para usar pontos de extremidade privados para muitos serviços 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.
Potenciais casos de utilização
Essa arquitetura pode se aplicar a qualquer cenário que use dispositivos que precisem se comunicar com uma conta de armazenamento que não esteja 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 público à Internet negado. Essa arquitetura atende a esse requisito.
Alternativas
Se você não precisar da topologia de rede hub-spoke que tenha 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 da arquitetura original.
Os benefícios de uma arquitetura simplificada incluem complexidade e custo reduzidos. Se você não tiver requisitos comerciais ou empresariais 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 carregamento de arquivos do Hub IoT funcionem corretamente.
Para obter um exemplo que implanta uma arquitetura semelhante, consulte Configurar o carregamento 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 gêmeos de dispositivo para substituir o nome de domínio personalizado para a conta de armazenamento.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Principais autores:
- Katrien De Graeve - Brasil | Engenheiro de Software
- Vincent Misson - Brasil | Arquiteto de Soluções Cloud
Outros contribuidores:
- Nacim Allouache - Brasil | Arquiteto de Soluções Cloud
Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.
Próximo passo
Saiba como carregar arquivos com o Hub IoT.