Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
IoT Edge 1.1
Importante
A data de término do suporte do IoT Edge 1.1 foi em 13 de dezembro de 2022. Verifique o ciclo de vida do produto microsoft para obter informações sobre como este produto, serviço, tecnologia ou API tem suporte. 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 de provisionamento automático de um Azure IoT Edge de dispositivo Linux usando um Trusted Platform Module (TPM). Você pode provisionar dispositivos IoT Edge automaticamente com o serviço de provisionamento de dispositivos do Hub IoT do Azure. Se você não estiver familiarizado com o processo de provisionamento automático, examine a visão geral do provisionamento antes de continuar.
Este artigo descreve duas metodologias. Selecione sua preferência com base na arquitetura de sua solução:
- Provisionar automaticamente um dispositivo Linux com hardware de TPM físico. Um exemplo é o Infineon OPTIGA™ TPM SLB 9670.
- Provisionar automaticamente uma VM (máquina virtual) do Linux com um TPM simulado em execução em um computador de desenvolvimento Windows com o Hyper-V habilitado. É recomendável usar essa metodologia apenas como um cenário de teste. Um TPM simulado não oferece a mesma segurança que um TPM físico.
As instruções diferem com base na metodologia, portanto, verifique se você está na guia correta a seguir.
As tarefas são as seguintes:
- Recupere informações de provisionamento para o TPM.
- Crie um registro individual do dispositivo em uma instância do Serviço de Provisionamento de Dispositivos no Hub IoT do Azure.
- Instale o runtime do IoT Edge e conecte o dispositivo ao hub IoT.
Pré-requisitos
Recursos de nuvem
- Um Hub IoT ativo
- Uma instância do Serviço de Provisionamento de Dispositivos no Hub IoT no Azure, vinculada ao seu hub IoT
- Se você não tiver uma instância do serviço de provisionamento de dispositivos, siga as instruções nas seções Criar um novo serviço de provisionamento de dispositivos do Hub IoT e Vincular o hub IoT e seu serviço de provisionamento de dispositivos do guia de início rápido do serviço de provisionamento de dispositivos do Hub IoT.
- Depois que o Serviço de Provisionamento de Dispositivo estiver em execução, copie o valor do Escopo de ID da página de resumo. Você usa esse valor ao configurar o runtime do Azure IoT Edge.
Requisitos do dispositivo
Um dispositivo físico com Linux para ser o dispositivo IoT Edge.
Se você for um fabricante de dispositivos, consulte as diretrizes sobre integração de um TPM ao processo de fabricação.
Observação
O TPM 2.0 é necessário quando você usa o atestado do TPM com o serviço de provisionamento de dispositivos.
Ao usar um TPM, você só pode criar registros de serviço de provisionamento de dispositivos individuais, não de grupo.
Configurar seu dispositivo
Se você está usando um dispositivo Linux físico com um TPM, não há etapas adicionais para configurá-lo.
Você está pronto para continuar.
Obter informações de provisionamento para o seu TPM
Nesta seção, você criará uma ferramenta que pode ser usada para recuperar a ID de registro e a chave de endosso do TPM.
Entre em seu dispositivo e siga as etapas em Configurar um ambiente de desenvolvimento do Linux para instalar e criar o SDK do dispositivo IoT do Azure para C.
Execute os comandos a seguir para criar a ferramenta SDK que recupera as informações de provisionamento do seu dispositivo para o TPM.
cd azure-iot-sdk-c/cmake cmake -Duse_prov_client:BOOL=ON .. cd provisioning_client/tools/tpm_device_provision make sudo ./tpm_device_provisionA janela de saída exibe o ID de Registro do dispositivo e a chave de endosso . Copie esses valores para uso posterior quando criar um registro individual do dispositivo no serviço de provisionamento de dispositivos.
Depois que tiver a ID de registro e a chave de endosso, você estará pronto para continuar.
Dica
Se você não quiser usar as ferramentas de software TPM2 para recuperar as informações, é necessário encontrar outra maneira de obter as informações de provisionamento. A chave de endosso, que é exclusiva de cada chip TPM, é obtida por meio do fabricante do chip TPM associado. É possível derivar uma ID de registro exclusiva para o dispositivo TPM. Por exemplo, conforme mostrado acima você pode criar um hash SHA-256 da chave de endosso.
Criar um registro de serviço de provisionamento de dispositivos
Use as informações de provisionamento do TPM para criar um registro individual no serviço de provisionamento de dispositivos.
Ao criar um registro no serviço de provisionamento de dispositivos, você tem a oportunidade de declarar um Estado Inicial do Dispositivo Gêmeo. No dispositivo gêmeo, você pode definir marcas para agrupar dispositivos segundo 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.
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 az iot dps enrollment. Como parte do comando da CLI, use o sinalizador edge-enabled para especificar que o registro é para um dispositivo do IoT Edge.
No portal do Azure, acesse sua instância do serviço de provisionamento de dispositivos do Hub IoT.
Em Configurações, selecione Gerenciar registros.
Selecione Adicionar registro individual e conclua as seguintes etapas para configurar o registro:
Para o Mecanismo, selecione TPM.
Forneça a chave de endosso e a ID de registro copiadas de sua VM ou dispositivo físico.
Forneça uma ID para seu dispositivo se desejar. Se você não fornecer uma ID de dispositivo, a ID de registro será usada.
Selecione True para declarar que sua VM ou dispositivo físico é um dispositivo IoT Edge.
Escolha o hub IoT vinculado ao qual você deseja conectar seu dispositivo ou selecione Link para o novo Hub IoT. Você pode escolher vários hubs e o dispositivo será atribuído a um deles, de acordo com a política de atribuição selecionada.
Adicione um valor de marca ao estado inicial do dispositivo gêmeo , se desejar. Você pode usar marcas para grupos de dispositivos alvo na implantação do módulo. Para obter mais informações, consulte Implantar módulos do IoT Edge em escala.
Selecione Salvar.
Agora que existe um registro para esse 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, 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 Nível 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:
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.deb18.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 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 contentor compatível com o OCI. Em cenários de produção, recomendamos o uso do mecanismo Moby. O mecanismo Moby é o único mecanismo de contêiner oficialmente compatível com o IoT Edge. Imagens de contêiner do Docker CE/EE são compatíveis com o runtime Moby.
Instale o motor Moby.
sudo apt-get update; \
sudo apt-get install moby-engine
Depois que o mecanismo Moby for instalado com êxito, configure-o para usar local driver de registro de log como o mecanismo de registro de log. Para saber mais sobre a configuração de log, consulte a 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 mecanismo de contêiner para que as alterações entrem em vigor.
sudo systemctl restart dockerDica
Se você receber erros ao instalar o mecanismo de contêiner Moby, verifique o kernel do Linux para compatibilidade com Moby. Alguns fabricantes de dispositivos embarcados fornecem imagens de dispositivos que contêm kernels Linux personalizados sem os recursos necessários para compatibilidade com motores de contêiner. Execute o seguinte comando, que usa o script de configuração de verificação 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.shNa saída do script, verifique se todos os itens em
Generally NecessaryeNetwork Driversestão habilitados. Se algum recurso estiver faltando, habilite-o recompilando o kernel da fonte e selecionando os módulos associados para inclusão no .config do kernel adequado. De maneira semelhante, se estiver usando um gerador de configuração de kernel comodefconfigoumenuconfig, localize e habilite os respectivos recursos e recompile o kernel. Após a implantação do 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 Azure IoT Edge
O daemon de segurança do IoT Edge fornece e mantém padrões de segurança no dispositivo IoT Edge. O daemon é iniciado em cada inicialização e configura 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 enquanto estiver offline, siga as etapas de instalação de versão offline ou específicas mais adiante neste artigo.
Instale o IoT Edge versão 1.1.* junto com o pacote libiothsm-std :
sudo apt-get update; \
sudo apt-get install iotedge
Observação
IoT Edge versão 1.1 é a versão 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 não há mais suporte para versões mais antigas.
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.
Conheça a ID de escopo do serviço de provisionamento de dispositivos e a ID de registro do dispositivo que foram coletadas anteriormente.
Abra o arquivo de configuração em seu dispositivo IoT Edge.
sudo nano /etc/iotedge/config.yamlLocalize a seção de configuração de provisionamento do arquivo. Descomente as linhas de provisionamento do TPM e certifique-se de que todas as outras linhas de provisionamento estejam comentadas.
A linha
provisioning:não deve ter nenhum espaço em branco anterior, e os itens aninhados devem ser indentados por dois espaços.# DPS TPM provisioning configuration provisioning: source: "dps" global_endpoint: "https://global.azure-devices-provisioning.net" scope_id: "SCOPE_ID_HERE" attestation: method: "tpm" registration_id: "REGISTRATION_ID_HERE" # always_reprovision_on_startup: true # dynamic_reprovisioning: falseAtualize os valores de
scope_ideregistration_idcom as informações do dispositivo e do serviço de provisionamento de dispositivos. O valorscope_idé o escopo de ID da página de resumo da instância do seu serviço de provisionamento de dispositivos.Opcionalmente, use as linhas
always_reprovision_on_startupoudynamic_reprovisioningpara configurar o comportamento de reprovisionamento do dispositivo. Se um dispositivo estiver definido para reprovisionar na inicialização, ele sempre tentará provisionar com o DPS primeiro e, em seguida, retornará ao backup de provisionamento se isso falhar. Se um dispositivo estiver definido para reprovisionar dinamicamente em si, o IoT Edge (e todos os módulos) reiniciará e reprovisionará se um evento de reprovisionamento for detectado, como se o dispositivo fosse movido de um Hub IoT para outro. Especificamente, o IoT Edge verifica se há erros debad_credentialoudevice_disableddo SDK para detectar o evento de reprovisionamento. Para disparar esse evento manualmente, desabilite o dispositivo no Hub IoT. Para obter mais informações, confira Conceitos de reprovisionamento de dispositivo do Hub IoT.Salve e feche o arquivo.
Conceda acesso do IoT Edge ao TPM
O runtime do IoT Edge precisa acessar o TPM para provisionar automaticamente seu dispositivo.
Você pode conceder ao TPM acesso ao tempo de execução do IoT Edge substituindo as configurações do systemd para que o serviço iotedge tenha privilégios de superusuário. Se você não deseja elevar os privilégios de serviço, você também pode usar as etapas a seguir para fornecer manualmente o acesso TPM.
Crie uma nova regra que dará ao runtime do IoT Edge acesso a
tpm0etpmrm0.sudo touch /etc/udev/rules.d/tpmaccess.rulesAbra o arquivo de regras.
sudo nano /etc/udev/rules.d/tpmaccess.rulesCopie as seguintes informações de acesso para o arquivo de regras. O
tpmrm0pode não estar presente em dispositivos que usam um kernel anterior a 4.12. Dispositivos que não têmtpmrm0ignorarão com segurança essa regra.# allow iotedge access to tpm0 KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="iotedge", MODE="0600" KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="iotedge", MODE="0600"Salve e feche o arquivo.
Acione o sistema
udevpara avaliar a nova regra./bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrmVerifique se a regra foi aplicada com êxito.
ls -l /dev/tpm*O resultado bem-sucedido aparece da seguinte maneira:
crw------- 1 iotedge root 10, 224 Jul 20 16:27 /dev/tpm0 crw------- 1 iotedge root 10, 224 Jul 20 16:27 /dev/tpmrm0Se você não vir que as permissões corretas foram aplicadas, tente reinicializar seu computador para atualizar
udev.Reinicie o runtime do IoT Edge para que ele pegue todas as alterações de configuração feitas no dispositivo.
sudo systemctl restart iotedge
Verifique se a instalação é bem-sucedida
Se você ainda não fez isso, reinicie o runtime do IoT Edge para que ele pegue todas as alterações de configuração feitas no dispositivo.
sudo systemctl restart iotedge
Verifique se o runtime do IoT Edge está sendo executado.
sudo systemctl status iotedge
Examine os registros do daemon.
journalctl -u iotedge --no-pager --no-full
Se você vê erros de provisionamento, é possível que as alterações de configuração ainda não entraram em vigor. Tente reiniciar o daemon do IoT Edge novamente.
sudo systemctl daemon-reload
Ou tente reiniciar a VM para ver se as alterações entram em vigor em um novo início.
Se o runtime foi iniciado com êxito, é possível entrar no hub IoT e ver que o novo dispositivo foi provisionado automaticamente. Agora seu dispositivo está pronto para executar os módulos do IoT Edge.
Listar módulos em execução.
iotedge list
Você pode verificar se o registro individual criado no serviço de provisionamento de dispositivos foi usado. No portal do Azure, acesse a instância do serviço de provisionamento de dispositivos. Abra os detalhes da matrícula para a matrícula individual que você criou. Observe que o status da inscrição é atribuído e o ID do dispositivo está listado.
Próximas etapas
O processo de registro do serviço de provisionamento de dispositivo permite definir a ID do dispositivo e as tags do dispositivo gêmeo ao mesmo tempo em que você provisiona o novo dispositivo. Você pode usar esses valores para direcionar 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 a CLI do Azure.