Partilhar via


Configurar um dispositivo IoT Edge para atuar como um gateway transparente

Aplica-se a: ícone sim IoT Edge 1.1

Importante

A data de fim do suporte do IoT Edge 1.1 foi 13 de dezembro de 2022. Consulte o Ciclo de Vida de Produtos da Microsoft para obter informações sobre como é suportado este produto, serviço, tecnologia ou API. Para obter mais informações sobre como atualizar para a versão mais recente do IoT Edge, consulte Atualizar o 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

Nas versões 1.1 e anteriores do IoT Edge, um dispositivo IoT Edge não pode estar a jusante de um gateway do IoT Edge.

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. No entanto, um dispositivo IoT Edge não pode ser downstream de um 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 do dispositivo

Todos os gateways do IoT Edge precisam de um certificado de CA de dispositivo instalado neles. O daemon de segurança do IoT Edge usa o certificado de CA do dispositivo IoT Edge para assinar um certificado de CA de carga de trabalho, que, por sua vez, assina um certificado de servidor para o hub IoT Edge. 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.

Configuração do certificado de gateway

O certificado de autoridade de certificação raiz e o certificado de autoridade de certificação do dispositivo (com sua chave privada) precisam estar presentes no dispositivo de 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 de CA do dispositivo de 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 autoridade de certificação raiz e do certificado de autoridade de certificação do dispositivo 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 autoridade de certificação do dispositivo
  • 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 dispositivo IoT Edge. No final dessas instruções, você terá um certificado <path>/certs/iot-edge-device-ca-<cert name>-full-chain.cert.pem de CA do dispositivo 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 do daemon de segurança.

    • Windows: C:\ProgramData\iotedge\config.yaml
    • Linux: /etc/iotedge/config.yaml
    • IoT Edge para Linux no Windows: /etc/iotedge/config.yaml

    Gorjeta

    Se você estiver usando o IoT Edge para Linux no Windows (EFLOW), terá que se conectar à máquina virtual EFLOW e alterar o arquivo dentro da VM. Você pode se conectar à VM EFLOW usando o cmdlet Connect-EflowVm do PowerShell e, em seguida, usar seu editor preferido.

  2. Localize a seção Configurações de certificado do arquivo. Descomente as quatro linhas que começam com certificados: e forneça os URIs de arquivo para seus três arquivos como valores para as seguintes propriedades:

    • device_ca_cert: certificado de autoridade de certificação do dispositivo
    • device_ca_pk: chave privada da autoridade de certificação do dispositivo
    • trusted_ca_certs: certificado de autoridade de certificação raiz

    Verifique se não há espaço em branco anterior na linha certificates: e se as outras linhas estão recuadas por dois espaços.

  3. Guarde e feche o ficheiro.

  4. Reinicie o IoT Edge.

    • Windows: Restart-Service iotedge
    • Linux: sudo systemctl restart iotedge
    • IoT Edge para Linux no Windows: sudo systemctl restart iotedge

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.