Partilhar via


Crie e provisione dispositivos IoT Edge em escala no Linux usando chave simétrica

Aplica-se a:ícone de confirmação 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 o IoT Edge.

Este artigo fornece instruções completas para o provisionamento automático de um ou mais dispositivos Linux IoT Edge usando chaves simétricas. Você pode provisionar automaticamente dispositivos do Azure IoT Edge com o serviço de provisionamento de dispositivo (DPS) do Hub IoT do Azure. Se você não estiver familiarizado com o processo de provisionamento automático, revise a visão geral do provisionamento antes de continuar.

As tarefas são as seguintes:

  1. Crie um registro individual para um único dispositivo ou um registro de grupo para um conjunto de dispositivos.
  2. Instale o runtime do IoT Edge e conecte-se ao Hub IoT.

O atestado de chave simétrica é uma abordagem simples para autenticar um dispositivo com uma instância de serviço de provisionamento de dispositivo. Esse método de atestado representa uma experiência de "Olá mundo" para desenvolvedores que são novos no provisionamento de dispositivos ou não têm requisitos de segurança rigorosos. O atestado de dispositivo usando um certificado TPM ou X.509 é mais seguro e deve ser usado para requisitos de segurança mais rigorosos.

Pré-requisitos

Recursos na nuvem

  • Um hub IoT ativo
  • Uma instância do serviço de provisionamento de dispositivo do Hub IoT no Azure, vinculada ao seu hub IoT
    • Se você não tiver uma instância de serviço de provisionamento de dispositivo, poderá seguir as instruções nas seções Criar um novo serviço de provisionamento de dispositivo do Hub IoT e Vincular o hub IoT e o serviço de provisionamento de dispositivo do início rápido do serviço de provisionamento de dispositivos do Hub IoT.
    • Depois de executar o serviço de provisionamento de dispositivo, copie o valor de ID Scope da página de visão geral. Você usa esse valor ao configurar o tempo de execução do IoT Edge.

Requisitos do dispositivo

Um dispositivo Linux físico ou virtual para ser o dispositivo IoT Edge.

Você precisará definir um ID de registro exclusivopara identificar cada dispositivo. Você pode usar o endereço MAC, número de série ou qualquer informação exclusiva do dispositivo. Por exemplo, você pode usar uma combinação de um endereço MAC e um número de série formando a seguinte cadeia de caracteres para uma ID de registro: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6. Os caracteres válidos são alfanuméricos minúsculos e hífen (-).

Criar um registro DPS

Crie um registro para provisionar um ou mais dispositivos por meio do DPS.

Se você deseja provisionar um único dispositivo IoT Edge, crie um registro individual. Se precisar de vários dispositivos provisionados, siga as etapas para criar uma inscrição de grupo no DPS.

Ao criar um registro no DPS, você tem a oportunidade de declarar um estado gêmeo inicial do dispositivo. No gêmeo de dispositivo, você pode definir tags para agrupar dispositivos por qualquer métrica necessária em sua solução, como região, ambiente, local ou tipo de dispositivo. Essas tags são usadas para criar implantações automáticas.

Para obter mais informações sobre inscrições no serviço de provisionamento de dispositivos, consulte Como gerenciar registros de dispositivos.

Fazer uma inscrição individual no DPS

Tip

As etapas neste artigo são para o portal do Azure, mas você também pode criar inscrições individuais usando a CLI do Azure. Para obter mais informações, consulte az iot dps enrollment. Como parte do comando CLI, use o sinalizador edge-enabled para especificar que a inscrição é para um dispositivo IoT Edge.

  1. No portal do Azure, navegue até a sua instância do serviço de provisionamento de dispositivos do Hub IoT.

  2. Em Configurações, selecione Gerenciar inscrições.

  3. Selecione Adicionar inscrição individual e conclua as seguintes etapas para configurar o registro:

    1. Em Mecanismo, selecione Chave simétrica.

    2. Forneça um ID de registo exclusivo para o seu dispositivo.

    3. Forneça, se desejar, um ID de dispositivo do Hub IoT para o seu equipamento. Você pode usar IDs de dispositivo para direcionar um dispositivo individual para implantação de módulo. Se você não fornecer um ID de dispositivo, o ID de registro será usado.

    4. Selecione True para declarar que o registro é para um dispositivo IoT Edge.

    5. Opcionalmente, adicione um valor de tag ao estado gêmeo inicial do dispositivo. Você pode usar tags para segmentar grupos de dispositivos para implantação de módulos. Por exemplo:

      {
         "tags": {
            "environment": "test"
         },
         "properties": {
            "desired": {}
         }
      }
      
    6. Selecione Guardar.

  4. Copie o valor da Chave Primária da inscrição individual para usar ao instalar o tempo de execução do IoT Edge.

Agora que existe uma inscrição para este dispositivo, o runtime do IoT Edge pode provisionar automaticamente o dispositivo durante a instalação.

Instalar o IoT Edge

Nesta seção, você prepara sua VM Linux ou dispositivo físico para o IoT Edge. Em seguida, instale o 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 confiáveis.

Importante

Em 30 de junho de 2022, o Raspberry Pi OS Stretch foi retirado da lista de suporte do Tier 1 OS. Para evitar possíveis vulnerabilidades de segurança, atualize seu sistema operacional host 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
    

Observação

Os pacotes de software do Azure IoT Edge estão sujeitos aos termos de licença localizados em cada pacote (usr/share/doc/{package-name} ou no LICENSE diretório). Leia os termos de licença antes de usar um pacote. A sua instalação e utilização de um pacote constitui a sua aceitação destes termos. Se você não concorda com os termos da licença, não use esse pacote.

Instalar um motor de contentor

O Azure IoT Edge depende de um tempo de execução de contêiner compatível com OCI. Para cenários de produção, recomendamos que você use o mecanismo Moby. O mecanismo Moby é o único mecanismo de contêiner oficialmente suportado com o IoT Edge. As imagens de contêiner do Docker CE/EE são compatíveis com o tempo de execução do Moby.

Instale o motor Moby.

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

Assim que o motor Moby for instalado com sucesso, configure-o para usar local driver de log como o mecanismo de registo. Para saber mais sobre a configuração de registos, consulte Lista de Verificação de Implantação de Produção.

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

  • Defina o driver de log padrão para o driver de log local, conforme mostrado no exemplo abaixo.

       {
          "log-driver": "local"
       }
    
  • Reinicie o motor do contentor para que as alterações tenham efeito.

    sudo systemctl restart docker
    

    Tip

    Se você receber erros ao instalar o mecanismo de contêiner Moby, verifique se o kernel Linux é compatível com Moby. Alguns fabricantes de equipamentos incorporados fornecem imagens de dispositivos que contêm kernels Linux personalizados sem as funcionalidades necessárias para a compatibilidade do motor de contentores. Execute o seguinte comando, que usa 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 em Generally Necessary e Network Drivers estão habilitados. Se você estiver faltando recursos, habilite-os reconstruindo seu kernel a partir do código-fonte e selecionando os módulos associados para inclusão no .config do kernel apropriado. Da mesma forma, se você estiver usando um gerador de configuração do kernel como defconfig ou menuconfig, encontre e habilite os respetivos recursos e reconstrua seu kernel de acordo. Depois de implantar seu kernel recém-modificado, execute o script check-config novamente para verificar se todos os recursos necessários foram habilitados com êxito.

Instalar o runtime do IoT Edge

O daemon de segurança do IoT Edge fornece e mantém padrões de segurança no dispositivo IoT Edge. O serviço é iniciado em cada arranque e prepara o dispositivo iniciando o restante do ambiente de execução do IoT Edge.

As etapas nesta seção representam o processo típico para instalar a versão mais recente em um dispositivo que tenha conexão com a Internet. Se você precisar instalar uma versão específica, como uma versão de pré-lançamento, ou precisar instalar offline, siga as etapas de instalação Offline ou versão específica mais adiante neste artigo.

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

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

Observação

O IoT Edge versão 1.1 é o ramo de suporte de longo prazo do IoT Edge. Se você estiver executando uma versão mais antiga, recomendamos instalar ou atualizar para o patch mais recente, pois as versões mais antigas não são mais suportadas.

Provisionar o dispositivo com sua identidade na nuvem

Assim que o runtime estiver instalado no dispositivo, configure-o com as informações necessárias para a ligação ao serviço de provisionamento de dispositivos e ao Hub IoT.

Tenha as seguintes informações prontas:

  • O valor DPS ID Scope
  • O ID de registo do dispositivo que criou
  • A Chave Primária de um registro individual ou uma chave derivada para dispositivos que usam um registro de grupo.
  1. Abra o arquivo de configuração no dispositivo IoT Edge.

    sudo nano /etc/iotedge/config.yaml
    
  2. Encontre a seção de configurações de provisionamento do arquivo. Descomente as linhas para provisionamento de chave simétrica DPS e certifique-se de que quaisquer outras linhas de provisionamento sejam comentadas.

    A linha provisioning: não deve ter espaço em branco anterior e os itens aninhados devem ser recuados por dois espaços.

    # DPS TPM provisioning configuration
    provisioning:
      source: "dps"
      global_endpoint: "https://global.azure-devices-provisioning.net"
      scope_id: "PASTE_YOUR_SCOPE_ID_HERE"
      attestation:
        method: "symmetric_key"
        registration_id: "PASTE_YOUR_REGISTRATION_ID_HERE"
        symmetric_key: "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE"
    
    # always_reprovision_on_startup: true
    # dynamic_reprovisioning: true
    
  3. Atualize os valores de scope_id, registration_id e symmetric_key com o seu DPS e informações do dispositivo.

  4. Opcionalmente, use as linhas always_reprovision_on_startup ou dynamic_reprovisioning para configurar o comportamento de reprovisionamento do dispositivo. Se um dispositivo estiver definido para reprovisionar na inicialização, ele sempre tentará provisionar com DPS primeiro e depois recorrerá ao backup de provisionamento se isso falhar. Se um dispositivo estiver definido para se reprovisionar dinamicamente, o IoT Edge (e todos os módulos) será reiniciado e reprovisionado se um evento de reprovisionamento for detetado, como se o dispositivo for movido de um Hub IoT para outro. Especificamente, o IoT Edge verifica se há erros de bad_credential ou device_disabled do SDK para detetar o evento de reprovisionamento. Para acionar esse evento manualmente, desative o dispositivo no Hub IoT. Para obter mais informações, consulte Conceitos de reprovisionamento de dispositivos do Hub IoT.

  5. Reinicie o tempo de execução do IoT Edge para que ele retome todas as alterações de configuração feitas no dispositivo.

    sudo systemctl restart iotedge
    

Verificar se a instalação foi bem-sucedida

Se o tempo de execução tiver sido iniciado com êxito, você poderá entrar no Hub IoT e começar a implantar módulos do IoT Edge no seu dispositivo.

Você pode verificar se o registro individual criado no serviço de provisionamento de dispositivo foi usado. Navegue até a instância do serviço de provisionamento de dispositivo no portal do Azure. Abra os detalhes da inscrição individual que você criou. Observe que o estado da inscrição é atribuído e o ID do dispositivo está listado.

Use os seguintes comandos em seu dispositivo para verificar se o IoT Edge foi instalado e iniciado com êxito.

Verifique o estado do serviço IoT Edge.

systemctl status iotedge

Examine os registos de serviço.

journalctl -u iotedge --no-pager --no-full

Listar módulos em execução.

iotedge list

Próximos passos

O processo de registro do serviço de provisionamento de dispositivos permite definir a ID do dispositivo e as tags gêmeas do dispositivo ao mesmo tempo em que provisiona o novo dispositivo. Você pode usar esses valores para segmentar dispositivos individuais ou grupos de dispositivos usando o gerenciamento automático de dispositivos. Saiba como Implantar e monitorar módulos do IoT Edge em escala usando o portal do Azure ou usando a CLI do Azure.