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
O IoT Edge 1.1 data de término do suporte foi 13 de dezembro de 2022. Confira o Ciclo de Vida do Produto da Microsoft para obter informações sobre o suporte deste produto, serviço, tecnologia ou API. Para obter mais informações sobre como atualizar para a versão mais recente do IoT Edge, consulte Update IoT Edge.
Este artigo fornece instruções de ponta a ponta para o provisionamento automático de um ou mais dispositivos Linux de Azure IoT Edge usando certificados X.509. 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:
- Gerar certificados e chaves.
- Crie um registro individual para um único dispositivo ou um registro de grupo para um conjunto de dispositivos.
- Instalar o runtime do IoT Edge e registrar o dispositivo com Hub IoT.
Usar certificados X.509 como um mecanismo de atestado é uma maneira excelente de escalar a produção e simplificar o provisionamento do dispositivo. Normalmente, os certificados X.509 são organizados em uma cadeia de certificados de confiança. Começando com um certificado raiz confiável ou autoassinado, cada certificado na cadeia assina o próximo certificado na hierarquia inferior. Esse padrão cria uma cadeia de confiança delegada do certificado raiz até cada certificado intermediário e, em seguida, até o certificado final de dispositivo downstream instalado em um dispositivo.
Dica
Se o 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, em escala, o zero-touch provisioning descrito neste blueprint, usando o exemplo iotedge-tpm2cloud.
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, poderá seguir as instruções nas seções Criar um novo Serviço de Provisionamento de Dispositivos no Hub IoT e Vincular o Hub IoT e o Serviço de Provisionamento de Dispositivos do início rápido do Serviço de Provisionamento de Dispositivos no 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 Linux físico ou virtual para ser o dispositivo IoT Edge.
Gerar certificados de identidade do dispositivo
O certificado de identidade do dispositivo é um certificado de dispositivo final que se conecta por meio de uma cadeia de confiança de certificados à autoridade de certificação principal do certificado X.509 (CA). O certificado de identidade do dispositivo deve ter um CN (nome comum) definido como a identidade do dispositivo que você deseja que o dispositivo tenha no hub IoT.
Os certificados de identidade do dispositivo são usados apenas para provisionar o dispositivo do IoT Edge e autenticar o dispositivo com o Hub IoT do Azure. Eles não são certificados de assinatura, ao contrário dos certificados de CA apresentados pelo dispositivo IoT Edge aos módulos ou dispositivos downstream para verificação. Para saber mais, confira Detalhes do 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 precisa do segmento público de um certificado CA raiz ou intermediário 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 será carregado no DPS se você criar um registro individual. A chave privada é passada para o runtime do IoT Edge.
- Um certificado de cadeia completo, que deve ter pelo menos a identidade do dispositivo e os certificados intermediários nele. O certificado de cadeia completo é passado para o runtime do IoT Edge.
- Um certificado de AC raiz ou intermediária da cadeia de certificados de confiança. Esse certificado será carregado no DPS se você criar um registro de grupo.
Observação
No momento, uma limitação no libiothsm impede o uso de certificados que expiram em ou após 1º de janeiro de 2038.
Usar certificados de teste (opcional)
Se você não tem uma autoridade de certificação disponível para criar certificados de identidade e quer 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 foram criados apenas para o teste 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 recursos do dispositivo do IoT Edge. Conclua as duas seções necessárias para configurar os scripts para geração de certificados e para criar um certificado de autoridade certificadora raiz. Em seguida, siga as etapas para criar um certificado de identidade do dispositivo. Quando tiver terminado, você deverá ter a cadeia de certificados e o par de chaves a seguir:
<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 do IoT Edge. Para utilizar o registro individual no DPS, você deverá carregar o arquivo .cert.pem. Se você for usar o registro de grupo no DPS, também precisará carregar um certificado de AC raiz ou intermediária na mesma cadeia de certificados de confiança. Se você estiver usando certificados de demonstração, use o certificado <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem para registro de grupo.
Criar um registro de DPS
Use os certificados e chaves gerados para criar um registro no DPS de um ou mais dispositivos Azure IoT Edge.
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, você tem a oportunidade de declarar um Estado Inicial do Device Twin. 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 etiquetas 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
As inscrições individuais utilizam a seção pública do certificado de identidade de um dispositivo e a comparam com o certificado no dispositivo.
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 flag de edge-enabled para especificar que o registro é para um dispositivo IoT Edge.
No portal do Azure, navegue até sua instância do serviço de provisionamento de dispositivos no Hub IoT.
Em Configurações, selecione Gerenciar registros.
Selecione adicionar registro individual, em seguida, 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.pemID de 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 na implantação de módulos. Se você não fornecer uma ID de dispositivo, o CN (nome comum) no certificado X.509 será usado.
Dispositivo do IoT Edge: selecione True para declarar que o registro é para um dispositivo do IoT Edge.
Selecione os hubs IoT aos quais este dispositivo pode ser atribuído: escolha o Hub IoT vinculado ao qual você deseja conectar o 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 inicial do dispositivo gêmeo: adicione um valor de etiqueta ao dispositivo gêmeo, se desejar. Você pode usar tags para direcionar grupos de dispositivos para a implantação automática. Por exemplo:
{ "tags": { "environment": "test" }, "properties": { "desired": {} } }
Clique em Salvar.
Em Gerenciar Registros, você pode ver a ID do Registro que acabou de criar. Anote-a, pois ela pode ser usada quando você provisiona seu dispositivo.
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 motor 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 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 logs como o mecanismo de registro de logs. Para saber mais sobre a configuração de log, confira Lista de verificação de implantação em 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 tenham efeito.
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 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.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 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.
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
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.
Prepare as seguintes informações:
- O valor do Escopo de ID do DPS. É possível recuperar esse valor da página de visão geral da instância do DPS no portal do Azure.
- O arquivo da cadeia de certificados de identidade no dispositivo.
- O arquivo de chave de identidade do dispositivo.
Abra o arquivo de configuração no dispositivo do IoT Edge.
sudo nano /etc/iotedge/config.yamlLocalize a seção de configurações de provisionamento do arquivo. Descompacte as linhas para provisionamento de certificado DPS X.509 e verifique se outras linhas de provisionamento foram 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 X.509 provisioning configuration provisioning: source: "dps" global_endpoint: "https://global.azure-devices-provisioning.net" scope_id: "SCOPE_ID_HERE" attestation: method: "x509" # registration_id: "OPTIONAL_REGISTRATION_ID_LEAVE_COMMENTED_OUT_TO_REGISTER_WITH_CN_OF_IDENTITY_CERT" identity_cert: "REQUIRED_URI_TO_DEVICE_IDENTITY_CERTIFICATE_HERE" identity_pk: "REQUIRED_URI_TO_DEVICE_IDENTITY_PRIVATE_KEY_HERE" # always_reprovision_on_startup: true # dynamic_reprovisioning: falseAtualize os valores de
scope_id,identity_certeidentity_pkcom suas informações de DPS e do dispositivo.Quando você adiciona o certificado X.509 e as informações de chave ao arquivo config.yaml, os caminhos devem ser fornecidos como URIs de arquivo. Por exemplo:
file:///<path>/identity_certificate_chain.pemfile:///<path>/identity_key.pemOpcionalmente, forneça o
registration_idpara o dispositivo, que precisa corresponder ao nome comum (CN) do certificado de identidade. Se você deixar essa linha comentada, a CN será aplicada automaticamente.Opcionalmente, use as linhas
always_reprovision_on_startupoudynamic_reprovisioningpara configurar o comportamento de reprovisionamento do dispositivo. Se um dispositivo estiver definido para provisionar novamente na inicialização, ele sempre tentará provisionar usando o DPS primeiro e, em seguida, recorrerá à provisão de backup se isso não funcionar. 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 config.yaml.
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 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 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.
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.
systemctl status iotedge
Examine os registros de serviço.
journalctl -u iotedge --no-pager --no-full
Listar módulos em execução.
iotedge list
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 os módulos de IoT Edge em escala usando o portal do Azure ou usando a CLI do Azure.