Criar e provisionar dispositivos IoT Edge em escala no Linux usando chave simétrica

Aplica-se a:IoT Edge 1.4 checkmark IoT Edge 1.4

Importante

A versão com suporte é a IoT Edge 1.4. Se você estiver em uma versão anterior, confira Atualizar o IoT Edge.

Este artigo fornece instruções de ponta a ponta para o provisionamento automático de um ou mais dispositivos do Linux IoT Edge usando chaves simétricas. Você pode provisionar automaticamente dispositivos do Azure IoT Edge com o serviço de provisionamento de dispositivos no Hub IoT do Azure (DPS). Se você não estiver familiarizado com o processo de provisionamento automático, reveja a visão geral de 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 ao Hub IoT.

Dica

Para uma experiência simplificada, experimente a ferramenta de configuração do Azure IoT Edge. Essa ferramenta de linha de comando, atualmente em pré-visualização pública, instala o IoT Edge em seu dispositivo e o provisiona usando o DPS e atestado de chave simétrica.

O atestado de chave simétrica é uma abordagem simples para autenticar o dispositivo com uma instância do serviço de provisionamento de dispositivos. 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 tem requisitos de segurança rígidos. O atestado de dispositivo usando um TPM ou certificados X.509 é mais seguro e deve ser usado para requisitos de segurança mais rigorosos.

Pré-requisitos

Recursos de nuvem

Requisitos do dispositivo

Um dispositivo Linux físico ou virtual que será o dispositivo de Azure IoT Edge.

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

Criar um registro de DPS

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

Se você quiser provisionar um único dispositivo IoT Edge, crie um registro individual. Se você precisar de vários dispositivos provisionados, siga as etapas para criar um registro de grupo do DPS.

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

Para saber mais sobre registros no serviço de provisionamento de dispositivos, confira Como gerenciar registros de dispositivo.

Criar um registro individual de DPS

Dica

As etapas neste artigo são para o portal do Microsoft Azure, mas também é possível criar registros individuais usando a CLI do Azure. Para obter mais informações, confira Registro az iot dps. Como parte do comando da CLI, use o sinalizador habilitado para o Edge para especificar que o registro é para um dispositivo do IoT Edge.

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

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

  3. Selecione adicionar registro individual, em seguida, conclua as seguintes etapas para configurar o registro:

    1. Em Mecanismo, selecione Chave Simétrica.

    2. Forneça uma ID de registro exclusiva para o seu dispositivo.

    3. Opcionalmente, forneça uma ID de Dispositivo do Hub IoT para o seu dispositivo. Você pode usar IDs de dispositivo para um dispositivo individual para a implantação do módulo de destino. Se você não fornecer uma ID de dispositivo, a ID de registro será usada.

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

    5. Opcionalmente, adicione um valor de marca para o Estado inicial do dispositivo gêmeo. Você pode usar marcas para grupos de dispositivos de destino para a implantação do módulo. Por exemplo:

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

  4. Copie o valor da Chave Primária do registro individual a ser usado ao instalar o runtime do IoT Edge.

Agora que existe um registro para esse dispositivo, o runtime do IoT Edge pode provisionar automaticamente o dispositivo durante a instalação.

Instalar o Edge IoT

Nesta seção, você preparará a máquina virtual do Linux ou o dispositivo físico para Azure IoT Edge. Em seguida, você instalará o IoT Edge.

Execute os comandos a seguir para adicionar o repositório de pacotes e, em seguida, adicione a chave de assinatura de pacote da Microsoft à sua lista de chaves confiáveis.

Importante

Em 30 de junho de 2022, o Stretch do SO Raspberry Pi foi retirado da lista de suporte do SO de Camada 1. Para evitar possíveis vulnerabilidades de segurança, atualize o sistema operacional host para o Bullseye.

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

  • 22.04:

    wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 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
    

Para obter mais informações sobre versões do sistema operacional, veja Plataformas suportadas pelo Azure IoT Edge.

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 o diretório LICENSE). Leia os termos da licença antes de usar o pacote. A instalação e o uso do pacote constitui a aceitação desses termos. Se você não concorda com os termos de licença, não utilize o pacote.

Instalar um mecanismo de contêiner

O Azure IoT Edge depende de um runtime de contêiner compatível com OCI. Em cenários de produção, recomendamos o uso do mecanismo Moby. O mecanismo Moby é o único mecanismo de contêiner com suporte oficial do Azure IoT Edge. Imagens de contêiner do docker CE/EE são compatíveis com o runtime Moby.

Instale o mecanismo de Moby.

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

Por padrão, o mecanismo de contêiner não define limites de tamanho de log de contêiner. Com o tempo, isso pode levar ao dispositivo que está se enchendo com os logs e ficando sem espaço em disco. No entanto, você pode configurar seu log para ser exibido localmente, embora seja opcional. Para saber mais sobre a configuração de log, confira Lista de verificação de implantação em produção.

As etapas a seguir mostram como configurar seu contêiner para usar local driver de log como mecanismo de log.

  1. Crie ou edite o arquivo de configuração do daemon Docker existente

    sudo nano /etc/docker/daemon.json
    
  2. Configure o driver de log padrão para o driver de log local conforme mostrado no exemplo.

       {
          "log-driver": "local"
       }
    
  3. Reinicie o mecanismo de contêiner para que as alterações entrem em vigor.

    sudo systemctl restart docker
    

Instalar o runtime do Azure IoT Edge

O serviço do IoT Edge fornece e mantém padrões de segurança no dispositivo IoT Edge. O serviço é iniciado a cada inicialização e inicializa o dispositivo iniciando o restante do runtime do IoT Edge.

Observação

A partir da versão 1.2, o serviço de identidade IoT trata do fornecimento e gestão de identidade para o IoT Edge e para outros componentes do dispositivo que precisam de comunicar com o Hub IoT do Azure.

As etapas dessa seção representam o processo típico de instalação da versão mais recente do IoT Edge em um dispositivo que tenha conexão com a Internet. Se precisar instalar uma versão específica, como uma versão de pré-lançamento, ou precisar instalar enquanto estiver offline, siga as etapas de Instalação offline ou de versão específica mais adiante neste artigo.

Dica

Se você já tem um dispositivo IoT Edge executando uma versão mais antiga e quer atualizar para a versão mais recente, siga as etapas em Atualizar o daemon de segurança e o runtime do IoT Edge. As versões posteriores são diferentes o bastante das versões anteriores do IoT Edge para que etapas específicas sejam necessárias para a atualização.

Instale a versão mais recente do IoT Edge e o pacote de serviço de identidade IoT (se ainda não estiver atualizado):

  • 22.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    
  • 20.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge defender-iot-micro-agent-edge
    

O pacote opcional defender-iot-micro-agent-edge inclui o microagente de segurança Microsoft Defender para IoT que fornece visibilidade de ponto de extremidade sobre gerenciamento de postura de segurança, vulnerabilidades, detecção de ameaças, gerenciamento de frota e muito mais para ajudá-lo a proteger seus dispositivos IoT Edge. É recomendável instalar o micro agente com o agente do Edge para habilitar o monitoramento de segurança e a proteção de seus dispositivos do Edge. Para saber mais sobre o Microsoft Defender para IoT, consulte O que é o Microsoft Defender para IoT para compiladores de dispositivos.

Provisionar o dispositivo com a identidade de nuvem dele

Depois que o runtime for instalado no seu dispositivo, configure-o com as informações que ele usa para se conectar ao serviço de provisionamento de dispositivos e ao Hub IoT.

Prepare as seguintes informações:

  • Valor do escopo da ID do DPS
  • ID de registro do dispositivo que você criou
  • A Chave Primária de um registro individual ou uma chave derivada para dispositivos que usam um registro de grupo.

Crie um arquivo de configuração para seu dispositivo com base em um arquivo de modelo fornecido como parte da instalação do IoT Edge.

sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml

Abra o arquivo de configuração no dispositivo do IoT Edge.

sudo nano /etc/aziot/config.toml
  1. Localize a seção Provisionamento do arquivo. Remova a marca de comentário das linhas de provisionamento DPS com chave simétrica e verifique se todas as outras linhas de provisionamento estão com a marca de comentário.

    # DPS provisioning with symmetric key
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "PASTE_YOUR_SCOPE_ID_HERE"
    
    # Uncomment to send a custom payload during DPS registration
    # payload = { uri = "PATH_TO_JSON_FILE" }
    
    [provisioning.attestation]
    method = "symmetric_key"
    registration_id = "PASTE_YOUR_REGISTRATION_ID_HERE"
    
    symmetric_key = { value = "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE" }
    
    # auto_reprovisioning_mode = Dynamic
    
  2. Atualize os valores de id_scope, registration_id e symmetric_key com suas informações de DPS e do dispositivo.

    O parâmetro de chave simétrica pode aceitar um valor de uma chave embutida, um URI de arquivo ou um URI do PKCS#11. Remova a marca de comentário de apenas de uma linha de chave simétrica, com base no formato que você está usando. Ao usar uma chave embutida, use uma chave codificada em base64 como o exemplo. Ao usar um URI de arquivo, o arquivo deverá conter os bytes brutos da chave.

    Se você usar qualquer URI do PKCS#11, localize a seção PKCS#11 no arquivo de configuração e forneça as informações sobre a sua configuração do PKCS#11.

    Para obter mais informações sobre as definições de configuração de provisionamento, veja Configurar as configurações do dispositivo IoT Edge.

  3. Opcionalmente, localize a seção modo de reprovisionamento automático do arquivo. Use o parâmetro auto_reprovisioning_mode para configurar o comportamento de reprovisionamento do seu dispositivo. Dinâmico - Reprovisionar quando o dispositivo detectar que ele pode ter sido movido de um Hub IoT para outro. Esse é o padrão. AlwaysOnStartup – Reprovisionar quando o dispositivo for reinicializado ou uma falha fizer com que os daemons sejam reiniciados. OnErrorOnly – Nunca dispare o reprovisionamento de dispositivo automaticamente. Cada modo terá um fallback de reprovisionamento de dispositivo implícito se o dispositivo não puder se conectar ao Hub IoT durante o provisionamento de identidade devido a erros de conectividade. Para obter mais informações, confira Conceitos de reprovisionamento de dispositivo do Hub IoT.

  4. Opcionalmente, remova a marca de comentário do parâmetro payload para especificar o caminho para um arquivo JSON local. O conteúdo do arquivo é enviado ao DPS como dados adicionais quando o dispositivo é registrado. Isso é útil para alocação personalizada. Por exemplo, se você desejar alocar seus dispositivos com base em uma ID do modelo de IoT Plug and Play sem intervenção humana.

  5. Salve e feche o arquivo.

  6. Aplique as alterações de configuração feitas no dispositivo.

    sudo iotedge config apply
    

Verifique se a instalação bem-sucedida

Se o runtime foi iniciado com êxito, você pode entrar em seu Hub IoT e iniciar a implantação de módulos do IoT Edge em seu dispositivo.

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

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

Verifique o status do serviço do IoT Edge.

sudo iotedge system status

Examine os logs de serviço.

sudo iotedge system logs

Módulos de execução da lista.

sudo iotedge list

Próximas etapas

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