Compartilhar via


Configurar um dispositivo IoT Edge para agir como gateway transparente

Aplica-se a: ícone sim IoT Edge 1.1

Importante

IoT Edge 1.1 a data de término do suporte foi 13 de dezembro de 2022. Confira o Ciclo de Vida do Produto da Microsoft para obter informações sobre o suporte deste 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 que outros dispositivos se comuniquem 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, confira Como um dispositivo IoT Edge pode ser usado como um gateway.

Observação

No IoT Edge versão 1.1 e anteriores, o dispositivo IoT Edge não pode estar localizado downstream em relação a um gateway IoT Edge.

Dispositivos downstream não podem usar o upload de arquivo.

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á-los para o destino adequado.
  2. Crie uma identidade do dispositivo para que o dispositivo downstream possa se autenticar no Hub IoT. Configure o dispositivo downstream para enviar mensagens por meio do dispositivo de gateway. Para essas etapas, confira Autenticar um dispositivo downstream no Hub IoT do Azure.
  3. Conecte o dispositivo downstream ao dispositivo de gateway e comece a enviar mensagens. Para obter mais informações, confira Conectar um dispositivo downstream a um gateway do Azure IoT Edge.

Para um dispositivo funcionar como gateway, ele precisa se conectar com segurança aos dispositivos downstream. Azure IoT Edge permite que você use a infraestrutura de chave pública (PKI) para configurar conexões seguras entre dispositivos. Neste 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 downstream deve confirmar a identidade do dispositivo de gateway. Essa verificação de identidade impede que os 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 do IoT Edge. No entanto, um dispositivo IoT Edge não pode estar localizado downstream em relação a um gateway IoT Edge.

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

Observação

O termo Certificado de Autoridade de Certificação raiz usado em todos esses artigos refere-se ao certificado público da mais alta autoridade da cadeia de certificados PKI e não necessariamente à raiz do certificado de uma autoridade de certificação sindicalizada. Em muitos casos, na verdade, é um certificado público de AC intermediário.

As etapas a seguir orientarão você no processo de criação de certificados e na instalação deles nos lugares certos do gateway. Você pode usar qualquer computador 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 virtual Linux para criar um Hub IoT, criar uma máquina virtual e configurar o runtime do IoT Edge.

Configurar o Certificado de Autoridade de Certificação do dispositivo

Todos os gateways de IoT Edge precisam de um Certificado de Autoridade de Certificação de dispositivo instalado neles. O daemon de segurança do IoT Edge usa o certificado de AC do dispositivo IoT Edge para assinar um Certificado de Autoridade de Certificação de carga de trabalho que, por sua vez, assina um certificado do servidor para o Hub do IoT Edge. O gateway apresenta o seu certificado do servidor para o dispositivo downstream durante a iniciação da conexão. O dispositivo downstream verifica se o certificado do servidor faz parte de uma cadeia de certificados que se acumula no Certificado de Autoridade de Certificação raiz. Esse processo permite que o dispositivo downstream confirme se o gateway vem de uma fonte confiável. Para obter mais informações, confira 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, nesse caso, o Certificado de Autoridade de Certificação raiz significa a autoridade de certificação mais alta para esse cenário do IoT Edge. O Certificado de Autoridade de Certificação do dispositivo de gateway e os certificados do dispositivo downstream precisam ser acumulados no mesmo Certificado de Autoridade de Certificação raiz.

Dica

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.

Prepare os seguintes arquivos:

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

Para cenários de produção, você deve gerar esses arquivos com a sua 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 a fim de testar os recursos do dispositivo IoT Edge para criar seus arquivos. Nessa página, você precisa executar as seguintes etapas:

  1. Para começar, configure os scripts para gerar certificados no seu dispositivo.
  2. Criar um Certificado de Autoridade de Certificação raiz. Ao final dessas instruções, você terá um Certificado de Autoridade de Certificação raiz <path>/certs/azure-iot-test-only.root.ca.cert.pem.
  3. Crie certificados da AC do dispositivo IoT Edge. Ao final dessas instruções, você terá um Certificado de Autoridade de Certificação do dispositivo <path>/certs/iot-edge-device-ca-<cert name>-full-chain.cert.pem a chave privada <path>/private/iot-edge-device-ca-<cert name>.key.pem.

Copiar certificados para o dispositivo

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

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

  3. Mova os arquivos no 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 as permissões. Você deve armazenar seus certificados e chaves no diretório /var/aziot preferencial. 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 das 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

    Dica

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

  2. Na seção Configurações de Certificado do arquivo. Remova a marca de comentário das quatro linhas que começam com certificates: e forneça os URIs para os 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 AC do dispositivo
    • trusted_ca_certs: Certificado de Autoridade de Certificação raiz

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

  3. Salve e feche o arquivo.

  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, em que o módulo Hub do IoT Edge é responsável por rotear as informações para outros módulos ou para o Hub IoT. Para preparar o dispositivo de gateway para essa função, verifique se:

  • O módulo Hub do IoT Edge está implantado no dispositivo.

    Ao instalar o IoT Edge em um dispositivo, apenas um módulo de sistema é iniciado automaticamente: o agente do IoT Edge. Depois de criar a primeira implantação para um dispositivo, também se iniciam o segundo módulo do sistema e o Hub do IoT Edge. 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 Hub do IoT Edge tem rotas configuradas para lidar com mensagens de entrada de dispositivos downstream.

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

Para implantar o módulo Hub do IoT Edge e configurá-lo com rotas a fim de gerenciar mensagens de entrada provenientes dos dispositivos downstream, siga estas etapas:

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

  2. Acesse Dispositivos no menu Gerenciamento de dispositivos e selecione o dispositivo Edge IoT que você deseja usar como um gateway.

  3. Selecione Definir Módulos.

  4. Na página Módulos, você pode adicionar todos os módulos que deseja implantar no dispositivo de gateway. Para os fins deste artigo, estamos concentrados na configuração e implantação do módulo edgeHub, que não precisa ser definido explicitamente nesta página.

  5. Selecione Avançar: rotas.

  6. Na página Rotas, verifique se há uma rota para gerenciar as 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:

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

      • Nome: allDownstreamToHub
      • Valor: FROM /messages/* WHERE NOT IS_DEFINED ($connectionModuleId) INTO $upstream

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

      Para saber mais sobre o roteamento de mensagens, consulte Implantar módulos e estabelecer rotas.

  7. Depois que suas rotas forem criadas, selecione Examinar + Criar.

  8. Na página Examinar + criar escolha Criar.

Abrir portas no dispositivo de gateway

Os dispositivos IoT Edge padrão não precisam de nenhuma conectividade de entrada para funcionar, pois 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 dos dispositivos downstream deles. Se um firewall estiver entre os dispositivos downstream e o dispositivo de gateway, a comunicação também precisará ser possível por meio do firewall.

Para um cenário de gateway funcionar, pelo menos um dos protocolos compatíveis com o Hub do IoT Edge deve estar aberto para o tráfego de entrada de dispositivos downstream. Os protocolos com suporte 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óximas etapas

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