As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Migrar AWS IoT Greengrass V2 dispositivos principais para dispositivos não root
Importante
Este tópico descreve uma abordagem de migração recomendada. Talvez seja necessário adaptar essas etapas para a configuração do dispositivo, sistema operacional e software instalado.
Por padrão, AWS IoT Greengrass é executado como usuário root em dispositivos Linux. Você pode melhorar a postura de segurança de seus dispositivos migrando dispositivos AWS IoT Greengrass principais para serem executados como um usuário não root com apenas os recursos Linux necessários. AWS IoT Greengrass Você pode migrar um único dispositivo ou escalar a migração em uma frota.
Considerações
Considere o seguinte antes de migrar para o não-root:
-
Esse procedimento de migração se aplica aos dispositivos AWS IoT Greengrass principais que executam o AWS IoT Greengrass nucleus (Java-based) no Linux com systemd. Não se aplica a dispositivos que executam o AWS IoT Greengrass nucleus lite.
-
Teste a migração em um único dispositivo em um ambiente de desenvolvimento antes de migrar sua frota de produção.
Migre um único dispositivo
Esse procedimento de migração segue a abordagem descrita emSolução 3: configurar AWS IoT Greengrass V2 como não raiz com separação de usuários de componentes. Antes de começar, preencha os pré-requisitos desse tópico, incluindo a configuração sudoers que permite que o usuário não root execute componentes como usuários separados.
Use esse procedimento para migrar um único dispositivo antes de migrar sua frota.
Etapa 1: criar o usuário e o grupo não root
Conecte-se ao seu dispositivo e crie o usuário e o grupo do sistema que são AWS IoT Greengrass executados como. group-nameSubstitua user-name e pelos nomes que você deseja usar.
sudo groupadd --systemgroup-namesudo useradd --system --create-home --shell /sbin/nologin -ggroup-nameuser-name
Etapa 2: fazer backup da propriedade do arquivo
Pare AWS IoT Greengrass e salve a estrutura atual de propriedade do arquivo para que você possa restaurá-la se precisar revertê-la.
sudo systemctl stop greengrass.service sudo mkdir -p /opt/greengrass-backup sudo find /greengrass/v2 -exec stat -c 'chown %U:%G "%n"' {} \; | sudo tee /opt/greengrass-backup/restore_ownership.sh > /dev/null sudo chmod 700 /opt/greengrass-backup/restore_ownership.sh
nota
Os comandos neste tópico são usados /greengrass/v2 como caminho AWS IoT Greengrass raiz. Se você instalou AWS IoT Greengrass em um local diferente, /greengrass/v2 substitua pelo seu caminho AWS IoT Greengrass raiz real.
Etapa 3: alterar a propriedade do arquivo
Transfira a propriedade do AWS IoT Greengrass diretório para o usuário não root.
sudo chown -Ruser-name:group-name/greengrass/v2
Etapa 4: criar a substituição suspensa do systemd
Crie um diretório suspenso e um arquivo de configuração que instrua o systemd a ser executado AWS IoT Greengrass como usuário não root com os recursos necessários do Linux.
sudo mkdir -p /etc/systemd/system/greengrass.service.d
A migração usa um arquivo de substituição suspenso do systemd em. /etc/systemd/system/greengrass.service.d/10-nonroot.conf Uma substituição direta substitui as configurações no arquivo de serviço básico sem modificá-lo diretamente. Essa substituição configura o systemd para executar o AWS IoT Greengrass serviço como usuário não root com um conjunto limitado de recursos do Linux. A remoção do diretório drop-in faz com que o systemd reverta para o greengrass.service arquivo base, que é executado como root com a configuração original.
Crie o arquivo /etc/systemd/system/greengrass.service.d/10-nonroot.conf com o seguinte conteúdo:
[Service] User=user-nameAmbientCapabilities=CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_SETUID CAP_SETGID CAP_SYS_RESOURCE CAP_AUDIT_WRITE CapabilityBoundingSet=CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_SETUID CAP_SETGID CAP_SYS_RESOURCE CAP_AUDIT_WRITE ProtectSystem=strict ReadWritePaths=/greengrass/v2 /tmp
Para obter informações sobre essas diretivas systemd e os recursos necessários, consulte. Solução 3: configurar AWS IoT Greengrass V2 como não raiz com separação de usuários de componentes
Etapa 5: Recarregue o systemd e inicie AWS IoT Greengrass
Execute os comandos a seguir para recarregar o daemon systemd e iniciá-lo. AWS IoT Greengrass
sudo systemctl daemon-reload sudo systemctl start greengrass.service
Etapa 6: Verificar a migração
Confirme se AWS IoT Greengrass está sendo executado como usuário não root.
sudo systemctl status greengrass.service ps -ef | grep greengrass
A saída mostra o usuário não root como proprietário do processo em vez deroot.
Em seguida, confirme se todos os componentes implantados estão em execução. Você deve implantar o aws.greengrass.Cli componente no dispositivo para executar esse comando.
sudo /greengrass/v2/bin/greengrass-cli component list
Cada componente deve relatar um State de RUNNING ouFINISHED. FINISHEDé o estado terminal esperado paraaws.greengrass.Nucleus. Investigue qualquer componente no ERRORED estado BROKEN ou antes de considerar a migração concluída.
Reverter um único dispositivo
Se você precisar restaurar AWS IoT Greengrass para executar como root, remova a substituição suspensa, restaure a propriedade do arquivo e reinicie. AWS IoT Greengrass
sudo systemctl stop greengrass.service sudo rm -rf /etc/systemd/system/greengrass.service.d sudo bash /opt/greengrass-backup/restore_ownership.sh sudo systemctl daemon-reload sudo systemctl start greengrass.service
Execute os comandos de verificação Etapa 6: Verificar a migração novamente para confirmar se AWS IoT Greengrass está sendo executado como root. O processo deve aparecer root como proprietário.
Depois de confirmar que a reversão foi bem-sucedida, você pode, opcionalmente, limpar os artefatos de migração:
-
Diretório de backup — você pode manter
/opt/greengrass-backupse planeja tentar novamente a migração mais tarde ou removê-lo:sudo rm -r /opt/greengrass-backup -
Non-root usuário e grupo — Se você não planeja mais executar AWS IoT Greengrass como usuário não root, você pode remover o usuário e o grupo que você criou na Etapa 1:
sudo userdeluser-namesudo groupdelgroup-nameSe outros serviços ou componentes usarem esse usuário, não o remova.
Migre uma frota de dispositivos
Depois de verificar a migração em um único dispositivo, você pode escalar a migração em toda a sua frota. Escolha um dos seguintes métodos:
Use um personalizado AWS IoT Greengrass componente bootstrap
Você pode criar um AWS IoT Greengrass componente personalizado que automatiza as etapas de migração de um único dispositivo em toda a sua frota. Essa abordagem é independente e usa somente AWS IoT Greengrass implantações. Ele não requer ferramentas externas, como o Systems Manager.
O componente usa o ciclo de vida do Bootstrap com RequiresPrivilege set totrue, que executa o componente como raiz durante a implantação. O script de bootstrap executa as mesmas operações privilegiadas que o procedimento de dispositivo único:
-
Crie o usuário e o grupo não root se eles ainda não existirem.
-
Faça backup da estrutura de propriedade do arquivo para reversão.
-
Altere a propriedade do diretório AWS IoT Greengrass raiz para o usuário não raiz.
-
Crie o arquivo de substituição suspenso systemd.
-
Recarregue o daemon systemd.
-
Saia com o código 101 para reinicializar o dispositivo.
Importante
O componente deve sair com o código 101, não 100. O código de saída 100 reinicia somente o processo AWS IoT Greengrass JVM, que usa a configuração do serviço systemd já armazenada em cache na memória. Uma reinicialização completa força o systemd a ler a nova substituição drop-in do disco e iniciar AWS IoT Greengrass como usuário não root. A reinicialização interrompe temporariamente todos os serviços no dispositivo.
Torne o componente idempotente para que as reimplantações não falhem se você já tiver migrado o dispositivo.
Depois que a implantação da migração for concluída, verifique se seus dispositivos estão sendo executados como usuário não root. Para obter mais informações, consulte Etapa 6: Verificar a migração. Você pode implantar um componente de verificação que verifica o usuário em execução e relata o resultado, ou monitorar o status da implantação no AWS IoT Greengrass console.
Configurar um mecanismo de reversão
Para restaurar a configuração raiz remotamente em toda a sua frota, seu componente de migração deve configurar um mecanismo de reversão. Uma abordagem é usar o systemd para monitorar um arquivo acionador. Essa abordagem requer os seguintes recursos do systemd:
-
Um script de reversão que remove a substituição imediata, restaura a propriedade original do arquivo do backup, recarrega o daemon systemd e reinicia como root. AWS IoT Greengrass
-
Um serviço systemd oneshot que executa o script de reversão como root. Um serviço único executa uma única tarefa e depois sai, em vez de ser executado como um daemon de longa duração.
-
Uma unidade de caminho systemd que monitora um caminho de arquivo específico, como
/greengrass/v2/rollback/.rollback-trigger. Quando o arquivo aparece, a unidade de caminho inicia automaticamente o serviço de reversão oneshot.
Com esse mecanismo instalado, você pode reverter um dispositivo implantando um AWS IoT Greengrass componente simples que cria o arquivo acionador. A unidade de caminho systemd detecta o arquivo, executa o serviço de reversão como raiz e restaura AWS IoT Greengrass sua configuração raiz original.
Use AWS Systems Manager
Se você usar o Systems Manager para gerenciar seus dispositivos, poderá criar um documento SSM que automatize as etapas de migração de um único dispositivo. Como o SSM é executado de forma independente AWS IoT Greengrass, ele pode parar e reiniciar o AWS IoT Greengrass serviço diretamente sem reinicializar o dispositivo.
Seu documento SSM deve atender aos seguintes requisitos:
-
Pare AWS IoT Greengrass e faça backup da configuração atual do serviço e da estrutura de propriedade do arquivo.
-
Crie o usuário e o grupo não root.
-
Altere a propriedade do AWS IoT Greengrass diretório para o usuário não root.
-
Crie o arquivo de substituição suspenso systemd.
-
Recarregue o daemon systemd e inicie. AWS IoT Greengrass
-
Verifique se AWS IoT Greengrass foi iniciado com êxito como usuário não root.
Para executar a migração em toda a sua frota, use o Systems Manager Run Command para executar o documento SSM em seus dispositivos usando tags ou grupos de recursos. Você pode monitorar o status de execução do comando no console do Systems Manager, que mostra o resultado de cada dispositivo de destino, incluindo quaisquer erros.
Para reverter, crie um documento SSM separado que interrompa AWS IoT Greengrass, remova a substituição imediata, restaure a propriedade original do arquivo, recarregue o daemon systemd e reinicie como root. AWS IoT Greengrass Execute este documento nos dispositivos que você precisa reverter.
Para obter mais informações sobre a execução de comandos em nós gerenciados, consulte Executando comandos usando o Systems Manager Run Command.