Configurar um dispositivo IoT Edge para atuar como um gateway transparente

Aplica-se a: Marca de verificação do IoT Edge 1.5 IoT Edge 1.5 Marca de verificação do IoT Edge 1.4 IoT Edge 1.4

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 LTS são versões suportadas. O IoT Edge 1.4 LTS termina a vida útil em 12 de novembro de 2024. Se tiver uma versão anterior, consulte Atualizar IoT Edge.

Este artigo fornece instruções detalhadas para configurar um dispositivo IoT Edge para funcionar como um gateway transparente para outros dispositivos se comunicarem com o Hub IoT. Este artigo usa o termo gateway IoT Edge para se referir a um dispositivo IoT Edge configurado como um gateway transparente. Para obter mais informações, consulte Como um dispositivo IoT Edge pode ser usado como um gateway.

Nota

Os dispositivos a jusante não podem utilizar o carregamento de ficheiros.

Há três etapas gerais para configurar uma conexão de gateway transparente bem-sucedida. Este artigo aborda a primeira etapa:

  1. Configure o dispositivo de gateway como um servidor para que os dispositivos downstream possam se conectar a ele com segurança. Configure o gateway para receber mensagens de dispositivos downstream e encaminhá-las para o destino adequado.
  2. Crie uma identidade de dispositivo para o dispositivo downstream para que ele possa se autenticar com o Hub IoT. Configure o dispositivo downstream para enviar mensagens através do dispositivo de gateway. Para essas etapas, consulte Autenticar um dispositivo downstream no Hub IoT do Azure.
  3. Conecte o dispositivo downstream ao dispositivo de gateway e comece a enviar mensagens. Para essas etapas, consulte Conectar um dispositivo downstream a um gateway do Azure IoT Edge.

Para que um dispositivo atue como um gateway, ele precisa se conectar com segurança aos seus dispositivos downstream. O Azure IoT Edge permite que você use uma PKI (infraestrutura de chave pública) para configurar conexões seguras entre dispositivos. Nesse caso, estamos permitindo que um dispositivo downstream se conecte a um dispositivo IoT Edge atuando como um gateway transparente. Para manter uma segurança razoável, o dispositivo a jusante deve confirmar a identidade do dispositivo de gateway. Essa verificação de identidade impede que seus dispositivos se conectem a gateways potencialmente mal-intencionados.

Um dispositivo downstream pode ser qualquer aplicativo ou plataforma que tenha uma identidade criada com o serviço de nuvem do Hub IoT do Azure. Esses aplicativos geralmente usam o SDK do dispositivo IoT do Azure. Um dispositivo downstream pode até ser um aplicativo em execução no próprio dispositivo de gateway IoT Edge.

Você pode criar qualquer infraestrutura de certificado que habilite a confiança necessária para sua topologia de gateway de dispositivo. Neste artigo, assumimos a mesma configuração de certificado que você usaria para habilitar a segurança da CA X.509 no Hub IoT, que envolve um certificado de CA X.509 associado a um hub IoT específico (a CA raiz do hub IoT), uma série de certificados assinados com essa CA e uma CA para o dispositivo IoT Edge.

Nota

O termo certificado de autoridade de certificação raiz usado ao longo destes artigos refere-se ao certificado público de autoridade superior da cadeia de certificados PKI e não necessariamente à raiz do certificado de uma autoridade de certificação sindicalizada. Em muitos casos, trata-se, na verdade, de um certificado público de autoridade de certificação intermediário.

As etapas a seguir orientam você pelo processo de criação dos certificados e sua instalação nos lugares certos no gateway. Você pode usar qualquer máquina para gerar os certificados e, em seguida, copiá-los para seu dispositivo IoT Edge.

Pré-requisitos

Um dispositivo Linux ou Windows com o IoT Edge instalado.

Se você não tiver um dispositivo pronto, poderá criar um em uma máquina virtual do Azure. Siga as etapas em Implantar seu primeiro módulo IoT Edge em um dispositivo Linux virtual para criar um Hub IoT, criar uma máquina virtual e configurar o tempo de execução do IoT Edge.

Configurar o certificado da autoridade de certificação de borda

Todos os gateways do IoT Edge precisam de um certificado de CA de Borda instalado neles. O daemon de segurança do IoT Edge usa o certificado de CA de Borda para assinar um certificado de CA de carga de trabalho, que, por sua vez, assina um certificado de servidor para o hub de Borda IoT. O gateway apresenta seu certificado de servidor para o dispositivo downstream durante o início da conexão. O dispositivo downstream verifica se o certificado do servidor faz parte de uma cadeia de certificados que se acumula para o certificado da autoridade de certificação raiz. Esse processo permite que o dispositivo downstream confirme que o gateway vem de uma fonte confiável. Para obter mais informações, consulte Entender como o Azure IoT Edge usa certificados.

Captura de tela que mostra a configuração do certificado de gateway.

O certificado da autoridade de certificação raiz e o certificado da autoridade de certificação de borda (com sua chave privada) precisam estar presentes no dispositivo do gateway do IoT Edge e configurados no arquivo de configuração do IoT Edge. Lembre-se de que, neste caso , o certificado de autoridade de certificação raiz significa a autoridade de certificação mais alta para este cenário do IoT Edge. O certificado da CA de Borda do gateway e os certificados de dispositivo downstream precisam ser acumulados para o mesmo certificado de CA raiz.

Gorjeta

O processo de instalação do certificado de CA raiz e do certificado de CA de Borda em um dispositivo IoT Edge também é explicado com mais detalhes em Gerenciar certificados em um dispositivo IoT Edge.

Tenha os seguintes arquivos prontos:

  • Certificado de autoridade de certificação raiz
  • Certificado de AC do Edge
  • Chave privada da autoridade de certificação do dispositivo

Para cenários de produção, você deve gerar esses arquivos com sua própria autoridade de certificação. Para cenários de desenvolvimento e teste, você pode usar certificados de demonstração.

Criar certificados de demonstração

Se você não tiver sua própria autoridade de certificação e quiser usar certificados de demonstração, siga as instruções em Criar certificados de demonstração para testar os recursos do dispositivo IoT Edge para criar seus arquivos. Nessa página, você precisa seguir as seguintes etapas:

  1. Para iniciar, configure os scripts para gerar certificados no seu dispositivo.
  2. Crie um certificado de autoridade de certificação raiz. No final dessas instruções, você terá um arquivo <path>/certs/azure-iot-test-only.root.ca.cert.pemde certificado de autoridade de certificação raiz.
  3. Crie certificados de CA de Borda. No final dessas instruções, você terá um certificado <path>/certs/iot-edge-device-ca-<cert name>-full-chain.cert.pem de CA de Borda sua chave <path>/private/iot-edge-device-ca-<cert name>.key.pemprivada.

Copiar certificados para o dispositivo

  1. Verifique se o certificado atende aos requisitos de formato.

  2. Se você criou os certificados em uma máquina diferente, copie-os para seu dispositivo IoT Edge. Você pode usar uma unidade USB, um serviço como o Azure Key Vault ou com uma função como Cópia segura de arquivos.

  3. Mova os arquivos para o diretório preferencial para certificados e chaves. Use /var/aziot/certs para certificados e /var/aziot/secrets para chaves.

  4. Crie os diretórios de certificados e chaves e defina permissões. Você deve armazenar seus certificados e chaves no diretório preferencial /var/aziot . Use /var/aziot/certs para certificados e /var/aziot/secrets para chaves.

    # If the certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
  5. Altere a propriedade e as permissões dos certificados e chaves.

    # Give aziotcs ownership to certificates
    # Read and write for aziotcs, read-only for others
    sudo chown -R aziotcs:aziotcs /var/aziot/certs
    sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;
    
    # Give aziotks ownership to private keys
    # Read and write for aziotks, no permission for others
    sudo chown -R aziotks:aziotks /var/aziot/secrets
     sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;
    

Configurar certificados no dispositivo

  1. No dispositivo IoT Edge, abra o arquivo de configuração: /etc/aziot/config.toml. Se você estiver usando o IoT Edge para Linux no Windows, terá que se conectar à máquina virtual EFLOW usando o Connect-EflowVm cmdlet PowerShell.

    Gorjeta

    Se o arquivo de configuração ainda não existir no seu dispositivo, use /etc/aziot/config.toml.edge.template como um modelo para criar um.

  2. Encontre o trust_bundle_cert parâmetro. Descomente essa linha e forneça o URI do arquivo para o arquivo de certificado de autoridade de certificação raiz em seu dispositivo.

  3. Localize a [edge_ca] secção do ficheiro. Descomente as três linhas nesta seção e forneça os URIs de arquivo para seu certificado e arquivos de chave como valores para as seguintes propriedades:

    • cert: certificado de autoridade de certificação de borda
    • pk: chave privada da autoridade de certificação do dispositivo
  4. Guarde e feche o ficheiro.

  5. Aplique as alterações.

    sudo iotedge config apply
    

Implantar o edgeHub e rotear mensagens

Os dispositivos downstream enviam telemetria e mensagens para o dispositivo de gateway, onde o módulo de hub IoT Edge é responsável por rotear as informações para outros módulos ou para o Hub IoT. Para preparar seu dispositivo de gateway para essa função, certifique-se de que:

  • O módulo de hub IoT Edge é implantado no dispositivo.

    Quando você instala o IoT Edge pela primeira vez em um dispositivo, apenas um módulo do sistema é iniciado automaticamente: o agente do IoT Edge. Depois de criar a primeira implantação para um dispositivo, o segundo módulo do sistema e o hub IoT Edge também são iniciados. Se o módulo edgeHub não estiver em execução no seu dispositivo, crie uma implantação para o seu dispositivo.

  • O módulo de hub IoT Edge tem rotas configuradas para lidar com mensagens de entrada de dispositivos downstream.

    O dispositivo de gateway deve ter uma rota para lidar com mensagens de dispositivos downstream ou essas mensagens não serão processadas. Você pode enviar as mensagens para módulos no dispositivo de gateway ou diretamente para o Hub IoT.

Para implantar o módulo de hub IoT Edge e configurá-lo com rotas para lidar com mensagens de entrada de dispositivos downstream, siga estas etapas:

  1. No portal do Azure, navegue para o seu hub IoT.

  2. Vá para Dispositivos no menu Gerenciamento de dispositivos e selecione seu dispositivo IoT Edge que você deseja usar como gateway.

  3. Selecione Definir Módulos.

  4. Na página Módulos, você pode adicionar quaisquer módulos que deseja implantar no dispositivo de gateway. Para os fins deste artigo, estamos focados em configurar e implantar o módulo edgeHub, que não precisa ser definido explicitamente nesta página.

  5. Selecione Next: Routes.

  6. Na página Rotas, verifique se há uma rota para lidar com mensagens provenientes de dispositivos downstream. Por exemplo:

    • Uma rota que envia todas as mensagens, seja de um módulo ou de um dispositivo downstream, para o Hub IoT:

      • Designação: allMessagesToHub
      • Valor: FROM /messages/* INTO $upstream
    • Uma rota que envia todas as mensagens de todos os dispositivos downstream para o Hub IoT:

      • Designação: allDownstreamToHub
      • Valor: FROM /messages/* WHERE NOT IS_DEFINED ($connectionModuleId) INTO $upstream

      Essa rota funciona porque, ao contrário das mensagens dos módulos do IoT Edge, as mensagens dos dispositivos downstream não têm um ID de módulo associado a elas. O uso da cláusula WHERE da rota nos permite filtrar todas as mensagens com essa propriedade do sistema.

      Para obter mais informações sobre roteamento de mensagens, consulte Implantar módulos e estabelecer rotas.

  7. Depois que sua rota ou rotas forem criadas, selecione Revisar + criar.

  8. Na página Rever + criar, selecione Criar.

Abrir portas no dispositivo de gateway

Os dispositivos IoT Edge padrão não precisam de conectividade de entrada para funcionar, porque toda a comunicação com o Hub IoT é feita por meio de conexões de saída. Os dispositivos de gateway são diferentes porque precisam receber mensagens de seus dispositivos downstream. Se um firewall estiver entre os dispositivos downstream e o dispositivo gateway, a comunicação também precisa ser possível através do firewall.

Para que um cenário de gateway funcione, pelo menos um dos protocolos suportados pelo IoT Edge Hub deve estar aberto para tráfego de entrada de dispositivos downstream. Os protocolos suportados são MQTT, AMQP, HTTPS, MQTT sobre WebSockets e AMQP sobre WebSockets.

Porta Protocolo
8883 MQTT
5671 AMQP
443 HTTPS
MQTT+WS
AMQP+WS

Próximos passos

Agora que você tem um dispositivo IoT Edge configurado como um gateway transparente, precisa configurar seus dispositivos downstream para confiar no gateway e enviar mensagens para ele. Continue em Autenticar um dispositivo downstream no Hub IoT do Azure para as próximas etapas na configuração do seu cenário de gateway transparente.