Partilhar via


Criar e aprovisionar um dispositivo IoT Edge no Linux com chaves simétricas

Aplica-se a:sim ícone IoT Edge 1.1

Importante

IoT Edge 1,1 data de fim do suporte 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 IoT Edge.

Este artigo fornece instruções ponto a ponto para registar e aprovisionar um dispositivo linux IoT Edge, incluindo a instalação de IoT Edge.

Todos os dispositivos que se ligam a um hub IoT têm um ID de dispositivo que é utilizado para monitorizar comunicações da cloud para o dispositivo ou do dispositivo para a cloud. Configure um dispositivo com as respetivas informações de ligação, incluindo o nome do anfitrião do hub IoT, o ID do dispositivo e as informações que o dispositivo utiliza para autenticar para Hub IoT.

Os passos neste artigo explicam um processo chamado aprovisionamento manual, onde liga um único dispositivo ao respetivo hub IoT. Para o aprovisionamento manual, tem duas opções para autenticar dispositivos IoT Edge:

  • Chaves simétricas: quando cria uma nova identidade de dispositivo no Hub IoT, o serviço cria duas chaves. Coloca uma das teclas no dispositivo e esta apresenta a chave para Hub IoT durante a autenticação.

    Este método de autenticação é mais rápido de começar, mas não tão seguro.

  • X.509 autoassinado: cria dois certificados de identidade X.509 e coloca-os no dispositivo. Quando cria uma nova identidade de dispositivo no Hub IoT, fornece thumbprints de ambos os certificados. Quando o dispositivo é autenticado para Hub IoT, apresenta um certificado e Hub IoT verifica se o certificado corresponde ao thumbprint.

    Este método de autenticação é mais seguro e recomendado para cenários de produção.

Este artigo aborda a utilização de chaves simétricas como método de autenticação. Se quiser utilizar certificados X.509, veja Criar e aprovisionar um dispositivo IoT Edge no Linux com certificados X.509.

Nota

Se tiver muitos dispositivos para configurar e não quiser aprovisionar manualmente cada um deles, utilize um dos seguintes artigos para saber como IoT Edge funciona com o serviço de aprovisionamento de dispositivos Hub IoT:

Pré-requisitos

Este artigo aborda o registo do seu dispositivo IoT Edge e a instalação de IoT Edge no mesmo. Estas tarefas têm diferentes pré-requisitos e utilitários utilizados para as realizar. Certifique-se de que tem todos os pré-requisitos abrangidos antes de continuar.

Ferramentas de gestão de dispositivos

Pode utilizar a portal do Azure, o Visual Studio Code ou a CLI do Azure para obter os passos para registar o seu dispositivo. Cada utilitário tem os seus próprios pré-requisitos:

Um hub IoT gratuito ou standard na sua subscrição do Azure.

Requisitos dos dispositivos

Um dispositivo X64, ARM32 ou ARM64 Linux.

A Microsoft publica pacotes de instalação para uma variedade de sistemas operativos.

Para obter as informações mais recentes sobre que sistemas operativos são atualmente suportados para cenários de produção, veja Sistemas suportados pelo Azure IoT Edge.

Registar o seu dispositivo

Pode utilizar o portal do Azure, o Visual Studio Code ou a CLI do Azure para registar o seu dispositivo, consoante a sua preferência.

No seu hub IoT no portal do Azure, IoT Edge dispositivos são criados e geridos separadamente dos dispositivos IoT que não estão ativados no Edge.

  1. Inicie sessão no portal do Azure e navegue para o seu hub IoT.

  2. No painel esquerdo, selecione Dispositivos no menu e, em seguida, selecione Adicionar Dispositivo.

  3. Na página Criar um dispositivo , forneça as seguintes informações:

    • Crie um ID de dispositivo descritivo. Tome nota deste ID do dispositivo, pois irá utilizá-lo mais tarde.
    • Selecione a caixa de verificação IoT Edge Dispositivo.
    • Selecione Chave simétrica como o tipo de autenticação.
    • Utilize as predefinições para gerar automaticamente chaves de autenticação e ligar o novo dispositivo ao hub.
  4. Selecione Guardar.

Agora que tem um dispositivo registado no Hub IoT, obtenha as informações que utiliza para concluir a instalação e o aprovisionamento do IoT Edge runtime.

Ver dispositivos registados e obter informações de aprovisionamento

Os dispositivos que utilizam a autenticação de chave simétrica precisam das respetivas cadeias de ligação para concluir a instalação e o aprovisionamento do IoT Edge runtime.

Os dispositivos com capacidade edge que se ligam ao seu hub IoT estão listados na página Dispositivos . Pode filtrar a lista por tipo Dispositivo Iot Edge.

Captura de ecrã a mostrar como ver os seus dispositivos no portal do Azure, Hub IoT.

Quando estiver pronto para configurar o seu dispositivo, precisa da cadeia de ligação que liga o seu dispositivo físico à respetiva identidade no hub IoT.

Os dispositivos que se autenticam com chaves simétricas têm as respetivas cadeias de ligação disponíveis para copiar no portal.

  1. Na página Dispositivos no portal, selecione o ID do dispositivo IoT Edge na lista.
  2. Copie o valor da Cadeia de Ligação Primária ou da Cadeia de Ligação Secundária.

Instalar IoT Edge

Nesta secção, vai preparar a VM do Linux ou o dispositivo físico para IoT Edge. Em seguida, instale IoT Edge.

Execute os seguintes comandos para adicionar o repositório de pacotes e, em seguida, adicione a chave de assinatura do pacote Microsoft à sua lista de chaves fidedignas.

Importante

Em 30 de junho de 2022, Raspberry Pi OS Stretch foi retirado da lista de suporte do SO de Camada 1. Para evitar potenciais vulnerabilidades de segurança, atualize o SO anfitrião para Bullseye.

A instalação pode ser feita com alguns comandos. Abra um terminal e execute os seguintes comandos:

  • 20.04:

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 18.04:

    wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

Nota

Os pacotes de software IoT Edge do Azure estão sujeitos aos termos de licença localizados em cada pacote (usr/share/doc/{package-name}ou diretórioLICENSE). Leia os termos de licenciamento antes de utilizar um pacote. A sua instalação e utilização de um pacote constitui a sua aceitação destes termos. Se não concordar com os termos de licença, não utilize esse pacote.

Instalar um motor de contentor

O Azure IoT Edge depende de um runtime de contentor compatível com o OCI. Para cenários de produção, recomendamos que utilize o motor Moby. O motor Moby é o único motor de contentor oficialmente suportado com IoT Edge. As imagens de contentor do Docker CE/EE são compatíveis com o runtime do Moby.

Instale o motor Moby.

sudo apt-get update; \
  sudo apt-get install moby-engine

Assim que o motor Moby for instalado com êxito, configure-o para utilizar local o controlador de registo como o mecanismo de registo. Para saber mais sobre a configuração do registo, veja Lista de Verificação de Implementação de Produção.

  • Crie ou abra o ficheiro de configuração do Daemon do Docker em /etc/docker/daemon.json.

  • Defina o controlador de registo predefinido para o local controlador de registo, conforme mostrado no exemplo abaixo.

       {
          "log-driver": "local"
       }
    
  • Reinicie o motor de contentor para que as alterações entrem em vigor.

    sudo systemctl restart docker
    

    Dica

    Se receber erros ao instalar o motor de contentor do Moby, verifique a compatibilidade do kernel do Linux para Moby. Alguns fabricantes de dispositivos incorporados enviam imagens de dispositivos que contêm kernels do Linux personalizados sem as funcionalidades necessárias para a compatibilidade do motor de contentor. Execute o seguinte comando, que utiliza o script check-config fornecido pelo Moby, para verificar a configuração do kernel:

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    Na saída do script, verifique se todos os itens Generally Necessary em e Network Drivers estão ativados. Se tiver funcionalidades em falta, ative-as ao reconstruir o kernel a partir da origem e ao selecionar os módulos associados para inclusão no kernel adequado .config. Da mesma forma, se estiver a utilizar um gerador de configuração de kernel como defconfig ou menuconfig, localize e ative as respetivas funcionalidades e reconstrua o kernel em conformidade. Depois de implementar o kernel recentemente modificado, execute novamente o script check-config para verificar se todas as funcionalidades necessárias foram ativadas com êxito.

Instalar o runtime do IoT Edge

O daemon de segurança IoT Edge fornece e mantém as normas de segurança no dispositivo IoT Edge. O daemon começa em cada arranque e arranca o dispositivo ao iniciar o resto do IoT Edge runtime.

Os passos nesta secção representam o processo típico para instalar a versão mais recente num dispositivo com ligação à Internet. Se precisar de instalar uma versão específica, como uma versão de pré-lançamento ou precisar de instalar enquanto estiver offline, siga os passos de instalação de versão offline ou específicos mais à frente neste artigo.

Instale IoT Edge versão 1.1.* juntamente com o pacote libiothsm-std:

sudo apt-get update; \
  sudo apt-get install iotedge

Nota

IoT Edge versão 1.1 é o ramo de suporte de longo prazo da IoT Edge. Se estiver a executar uma versão mais antiga, recomendamos que instale ou atualize para o patch mais recente, uma vez que as versões mais antigas já não são suportadas.

Aprovisionar o dispositivo com a respetiva identidade na cloud

Agora que o motor de contentor e o IoT Edge runtime estão instalados no seu dispositivo, está pronto para o próximo passo, que consiste em configurar o dispositivo com as respetivas informações de identidade e autenticação na cloud.

No dispositivo IoT Edge, abra o ficheiro de configuração.

sudo nano /etc/iotedge/config.yaml

Localize as configurações de aprovisionamento do ficheiro e anule o processamento da configuração de aprovisionamento manual com uma secção de cadeia de ligação, se ainda não estiver descomprometida.

# Manual provisioning configuration using a connection string
provisioning:
source: "manual"
device_connection_string: "ADD_DEVICE_CONNECTION_STRING_HERE"

Atualize o valor de device_connection_string com a cadeia de ligação do seu dispositivo IoT Edge. Certifique-se de que quaisquer outras secções de aprovisionamento são comentadas. Certifique-se de que o aprovisionamento: a linha não tem espaço em branco anterior e que os itens aninhados são suportados por dois espaços.

Para colar conteúdos da área de transferência no Nano Shift+Right Click ou prima Shift+Insert.

Guarde e feche o ficheiro.

CTRL + X, Y, Enter

Depois de introduzir as informações de aprovisionamento no ficheiro de configuração, reinicie o daemon:

sudo systemctl restart iotedge

Verificar a configuração com êxito

Verifique se o runtime foi instalado e configurado com êxito no seu dispositivo IoT Edge.

Dica

Precisa de privilégios elevados para executar os comandos iotedge. Depois de terminar sessão do seu computador e iniciar sessão novamente pela primeira vez depois de instalar o runtime do IoT Edge, as suas permissões são atualizadas automaticamente. Até lá, utilize sudo em frente aos comandos.

Verifique se o serviço de sistema IoT Edge está em execução.

sudo systemctl status iotedge

Se precisar de resolver problemas relacionados com o serviço, obtenha os registos do serviço.

journalctl -u iotedge

Utilize a check ferramenta para verificar o estado de configuração e ligação do dispositivo.

sudo iotedge check

Dica

Utilize sudo sempre para executar a ferramenta de verificação, mesmo depois de as suas permissões serem atualizadas. A ferramenta precisa de privilégios elevados para aceder ao ficheiro de configuração para verificar o estado de configuração.

Nota

Num dispositivo recentemente aprovisionado, poderá ver um erro relacionado com IoT Edge Hub:

× preparação para a produção: o diretório de armazenamento do Hub Edge persiste no sistema de ficheiros do anfitrião – Erro

Não foi possível verificar o estado atual do contentor do EdgeHub

Este erro é esperado num dispositivo recentemente aprovisionado porque o módulo IoT Edge Hub não está em execução. Para resolver o erro, no Hub IoT, defina os módulos para o dispositivo e crie uma implementação. A criação de uma implementação para o dispositivo inicia os módulos no dispositivo, incluindo o módulo IoT Edge Hub.

Veja todos os módulos em execução no seu dispositivo IoT Edge. Quando o serviço é iniciado pela primeira vez, só deverá ver o módulo edgeAgent em execução. O módulo edgeAgent é executado por predefinição e ajuda a instalar e iniciar quaisquer módulos adicionais que implemente no seu dispositivo.

sudo iotedge list

Quando cria um novo dispositivo IoT Edge, este irá apresentar o código 417 -- The device's deployment configuration is not set de estado no portal do Azure. Este estado é normal e significa que o dispositivo está pronto para receber uma implementação do módulo.

Instalação de versão offline ou específica (opcional)

Os passos nesta secção destinam-se a cenários não abrangidos pelos passos de instalação padrão. Isto pode incluir:

  • Instalar IoT Edge offline
  • Instalar uma versão candidata à versão

Utilize os passos nesta secção se quiser instalar uma versão específica do runtime do Azure IoT Edge que não está disponível através do gestor de pacotes. A lista de pacotes da Microsoft contém apenas um conjunto limitado de versões recentes e respetivas sub-versões, pelo que estes passos destinam-se a qualquer pessoa que pretenda instalar uma versão mais antiga ou uma versão candidata ao lançamento.

Com comandos curl, pode direcionar os ficheiros de componente diretamente do IoT Edge repositório do GitHub.

  1. Navegue para as versões do Azure IoT Edge e localize a versão de versão que pretende direcionar.

  2. Expanda a secção Recursos para essa versão.

  3. Cada versão deve ter novos ficheiros para o daemon de segurança IoT Edge e o hsmlib. Se pretender instalar IoT Edge num dispositivo offline, transfira estes ficheiros com antecedência. Caso contrário, utilize os seguintes comandos para atualizar esses componentes.

    1. Localize o ficheiro libiothsm-std que corresponde à arquitetura do seu dispositivo IoT Edge. Clique com o botão direito do rato na ligação de ficheiro e copie o endereço da ligação.

    2. Utilize a ligação copiada no seguinte comando para instalar essa versão do hsmlib:

      curl -L <libiothsm-std_link> -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
      
    3. Localize o ficheiro iotedge que corresponde à arquitetura do seu dispositivo IoT Edge. Clique com o botão direito do rato na ligação de ficheiro e copie o endereço da ligação.

    4. Utilize a ligação copiada no seguinte comando para instalar essa versão do daemon de segurança IoT Edge.

      curl -L iotedge_link_here -o iotedge.deb && sudo apt-get install ./iotedge.deb
      

Agora que o motor de contentor e o IoT Edge runtime estão instalados no seu dispositivo, está pronto para o próximo passo, que consiste em Aprovisionar o dispositivo com a respetiva identidade na cloud.

Desinstalar IoT Edge

Se quiser remover o IoT Edge instalação do seu dispositivo, utilize os seguintes comandos.

Remova o runtime do IoT Edge.

sudo apt-get autoremove iotedge

Quando o IoT Edge runtime é removido, todos os contentores que criou são parados, mas ainda existem no seu dispositivo. Veja todos os contentores para ver quais permanecem.

sudo docker ps -a

Elimine os contentores do seu dispositivo, incluindo os dois contentores de runtime.

sudo docker rm -f <container name>

Por fim, remova o runtime do contentor do seu dispositivo.

sudo apt-get autoremove --purge moby-engine