Crie e provisione dispositivos IoT Edge em escala no Linux usando certificados X.509

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

Importante

O IoT Edge 1.4 é a versão suportada. Se tiver uma versão anterior, consulte Atualizar IoT Edge.

Este artigo fornece instruções completas para o provisionamento automático de um ou mais dispositivos Linux IoT Edge usando certificados X.509. 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. Gere certificados e chaves.
  2. Crie um registro individual para um único dispositivo ou um registro de grupo para um conjunto de dispositivos.
  3. Instale o tempo de execução do IoT Edge e registre o dispositivo no Hub IoT.

Usar certificados X.509 como um mecanismo de atestado é uma excelente maneira de dimensionar a produção e simplificar o provisionamento de dispositivos. Normalmente, os certificados X.509 são organizados em uma cadeia de confiança de certificados. Começando com um certificado raiz autoassinado ou confiável, cada certificado na cadeia assina o próximo certificado inferior. Esse padrão cria uma cadeia delegada de confiança do certificado raiz até o certificado de dispositivo downstream final instalado em um dispositivo.

Gorjeta

Se o seu dispositivo tiver um HSM (Hardware Security Module), como um TPM 2.0, recomendamos armazenar as chaves X.509 com segurança no HSM. Saiba mais sobre como implementar o provisionamento zero-touch em escala descrito neste plano com o exemplo iotedge-tpm2cloud.

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.

Gerar certificados de identidade de dispositivo

O certificado de identidade do dispositivo é um certificado de dispositivo downstream que se conecta por meio de uma cadeia de confiança de certificados ao certificado de autoridade de certificação (CA) X.509 superior. O certificado de identidade do dispositivo deve ter seu nome comum (CN) definido como a ID do dispositivo que você deseja que o dispositivo tenha em seu hub IoT.

Os certificados de identidade de dispositivo são usados apenas para provisionar o dispositivo IoT Edge e autenticar o dispositivo com o Hub IoT do Azure. Eles não estão assinando certificados, ao contrário dos certificados de CA que o dispositivo IoT Edge apresenta aos módulos ou dispositivos downstream para verificação. Para obter mais informações, consulte Detalhes de uso do certificado do Azure IoT Edge.

Depois de criar o certificado de identidade do dispositivo, você deve ter dois arquivos: um arquivo .cer ou .pem que contém a parte pública do certificado e um arquivo .cer ou .pem com a chave privada do certificado. Se você planeja usar o registro de grupo no DPS, também precisará da parte pública de um certificado de CA intermediário ou raiz na mesma cadeia de confiança de certificados.

Você precisa dos seguintes arquivos para configurar o provisionamento automático com X.509:

  • O certificado de identidade do dispositivo e seu certificado de chave privada. O certificado de identidade do dispositivo é carregado no DPS se você criar um registro individual. A chave privada é passada para o tempo de execução do IoT Edge.
  • Um certificado de cadeia completa, que deve conter, pelo menos, a identidade do dispositivo e os certificados intermédios. O certificado de cadeia completa é passado para o tempo de execução do IoT Edge.
  • Um certificado de autoridade de certificação intermediário ou raiz da cadeia de confiança de certificados. Este certificado é carregado no DPS se você criar um registro de grupo.

Usar certificados de teste (opcional)

Se você não tiver uma autoridade de certificação disponível para criar novos certificados de identidade e quiser experimentar esse cenário, o repositório git do Azure IoT Edge contém scripts que você pode usar para gerar certificados de teste. Esses certificados são projetados apenas para testes de desenvolvimento e não devem ser usados na produção.

Para criar certificados de teste, siga as etapas em Criar certificados de demonstração para testar os recursos do dispositivo IoT Edge. Conclua as duas seções necessárias para configurar os scripts de geração de certificado e criar um certificado de autoridade de certificação raiz. Em seguida, siga as etapas para criar um certificado de identidade de dispositivo. Quando terminar, você deverá ter a seguinte cadeia de certificados e par de chaves:

  • <WRKDIR>/certs/iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>/private/iot-edge-device-identity-<name>.key.pem

Você precisa desses dois certificados no dispositivo IoT Edge. Se você vai usar o registro individual no DPS, então você carrega o arquivo .cert.pem. Se você vai usar o registro de grupo no DPS, também precisará de um certificado de CA intermediário ou raiz na mesma cadeia de confiança de certificados para carregar. Se você estiver usando certificados de demonstração, use o <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem certificado para inscrição em grupo.

Criar um registro DPS

Use seus certificados e chaves gerados para criar um registro no DPS para um ou mais dispositivos IoT Edge.

Se você deseja 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 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.

Criar uma inscrição individual do DPS

As inscrições individuais tomam a parte pública do certificado de identidade de um dispositivo e fazem a correspondência com o certificado no dispositivo.

Gorjeta

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 habilitado para borda para especificar que o registro é para um dispositivo IoT Edge.

  1. No portal do Azure, navegue até sua instância do serviço de provisionamento de dispositivo 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:

    • Mecanismo: Selecione X.509.

    • Arquivo .pem ou .cer do certificado primário: carregue o arquivo público do certificado de identidade do dispositivo. Se você usou os scripts para gerar um certificado de teste, escolha o seguinte arquivo:

      <WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem

    • ID do dispositivo do Hub IoT: forneça uma ID para o seu dispositivo, se desejar. Você pode usar IDs de dispositivo para direcionar um dispositivo individual para implantação de módulo. Se você não fornecer uma ID de dispositivo, o nome comum (CN) no certificado X.509 será usado.

    • Dispositivo IoT Edge: selecione True para declarar que o registro é para um dispositivo IoT Edge.

    • Selecione os hubs IoT aos quais este dispositivo pode ser atribuído: Escolha o hub IoT vinculado ao qual você deseja conectar seu dispositivo. Você pode escolher vários hubs e o dispositivo será atribuído a um deles de acordo com a política de alocação selecionada.

    • Estado gêmeo inicial do dispositivo: adicione um valor de tag a ser adicionado ao gêmeo do dispositivo, se desejar. Você pode usar tags para segmentar grupos de dispositivos para implantação automática. Por exemplo:

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

Em Gerenciar Inscrições, você pode ver a ID de Registro da inscrição que acabou de criar. Anote isso, pois ele pode ser usado quando você provisionar seu dispositivo.

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

Instalar o IoT Edge

Nesta seção, você prepara sua máquina virtual 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:

  • 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, consulte Plataformas com suporte do Azure IoT Edge.

Nota

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 mecanismo de contêiner

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

Por padrão, o mecanismo de contêiner não define limites de tamanho de log de contêiner. Ao longo do tempo, isto pode fazer com que o dispositivo seja preenchido com registos e fique 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, consulte Lista de verificação de implantação de produção.

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

  1. Criar ou editar o arquivo de configuração do daemon Docker existente

    sudo nano /etc/docker/daemon.json
    
  2. Defina o driver de log padrão para o local driver de log, 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 IoT Edge

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

As etapas nesta seção representam o processo típico para instalar a versão mais recente do IoT Edge em um dispositivo com 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.

Gorjeta

Se você já tiver um dispositivo IoT Edge executando uma versão mais antiga e quiser atualizar para a versão mais recente, use as etapas em Atualizar o daemon de segurança e o tempo de execução do IoT Edge. As versões posteriores são suficientemente diferentes das versões anteriores do IoT Edge para que etapas específicas sejam necessárias para atualizar.

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 for IoT, que fornece visibilidade de ponto final sobre gerenciamento de postura de segurança, vulnerabilidades, deteção de ameaças, gerenciamento de frota e muito mais para ajudá-lo a proteger seus dispositivos IoT Edge. É recomendável instalar o microagente com o agente Edge para habilitar o monitoramento de segurança e a proteção de seus dispositivos Edge. Para saber mais sobre o Microsoft Defender para IoT, consulte O que é o Microsoft Defender para IoT para construtores de dispositivos.

Provisionar o dispositivo com sua identidade na nuvem

Depois que o tempo de execução estiver instalado em seu dispositivo, configure o dispositivo com as informações que ele usa para se conectar ao serviço de provisionamento do dispositivo e ao Hub IoT.

Tenha as seguintes informações prontas:

  • O valor DPS ID Scope . Você pode recuperar esse valor na página de visão geral da sua instância do DPS no portal do Azure.
  • O arquivo de cadeia de certificados de identidade do dispositivo no dispositivo.
  • O arquivo de chave de identidade do dispositivo no dispositivo.

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 IoT Edge.

sudo nano /etc/aziot/config.toml
  1. Encontre a seção Provisionamento do arquivo. Descomente as linhas para provisionamento DPS com certificado X.509 e certifique-se de que quaisquer outras linhas de provisionamento sejam comentadas.

    # DPS provisioning with X.509 certificate
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "SCOPE_ID_HERE"
    
    # Uncomment to send a custom payload during DPS registration
    # payload = { uri = "PATH_TO_JSON_FILE" }
    
    [provisioning.attestation]
    method = "x509"
    registration_id = "REGISTRATION_ID_HERE"
    
    identity_cert = "DEVICE_IDENTITY_CERTIFICATE_HERE"
    
    identity_pk = "DEVICE_IDENTITY_PRIVATE_KEY_HERE"
    
    # auto_reprovisioning_mode = Dynamic
    
  2. Atualize o valor de com o ID de id_scope escopo copiado da instância do DPS.

  3. Forneça um registration_id para o dispositivo, que é a ID que o dispositivo tem no Hub IoT. O ID de registo deve corresponder ao nome comum (NC) do certificado de identidade.

  4. Atualize os valores de identity_cert e identity_pk com o seu certificado e informações chave.

    O valor do certificado de identidade pode ser fornecido como um URI de arquivo ou pode ser emitido dinamicamente usando EST ou uma autoridade de certificação local. Descomente apenas uma linha, com base no formato que você escolher usar.

    O valor da chave privada de identidade pode ser fornecido como um URI de arquivo ou um URI PKCS#11. Descomente apenas uma linha, com base no formato que você escolher usar.

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

    Para obter mais informações sobre certificados, consulte Gerenciar certificados do IoT Edge.

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

  5. Opcionalmente, localize a seção do modo de reprovisionamento automático do arquivo. Use o parâmetro para configurar o auto_reprovisioning_mode comportamento de reprovisionamento do dispositivo. Dinâmico - Reprovisionamento quando o dispositivo deteta que pode ter sido movido de um Hub IoT para outro. Esta é a predefinição. AlwaysOnStartup - Reprovisionamento quando o dispositivo é reinicializado ou uma falha faz com que os daemons sejam reiniciados. OnErrorOnly - Nunca acione o reprovisionamento de dispositivos automaticamente. Cada modo tem um fallback de reprovisionamento de dispositivo implícito se o dispositivo não conseguir se conectar ao Hub IoT durante o provisionamento de identidade devido a erros de conectividade. Para obter mais informações, consulte Conceitos de reprovisionamento de dispositivos do Hub IoT.

  6. Opcionalmente, descomente o payload parâmetro para especificar o caminho para um arquivo JSON local. O conteúdo do arquivo é enviado para o DPS como dados adicionais quando o dispositivo se registra. Isso é útil para alocação personalizada. Por exemplo, se você quiser alocar seus dispositivos com base em um ID de modelo IoT Plug and Play sem intervenção humana.

  7. Guarde e feche o ficheiro.

Aplique as alterações de configuração feitas ao IoT Edge.

sudo iotedge config apply

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 de inscrição para o registro individual que você criou. Observe que o status do registro é 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.

sudo iotedge system status

Examine os logs de serviço.

sudo iotedge system logs

Listar módulos em execução.

sudo 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.