Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Migrazione AWS IoT Greengrass V2 da dispositivi core a dispositivi non root
Importante
Questo argomento descrive un approccio di migrazione consigliato. Potrebbe essere necessario adattare questi passaggi alla configurazione del dispositivo, al sistema operativo e al software installato.
Per impostazione predefinita, AWS IoT Greengrass viene eseguito come utente root sui dispositivi Linux. Puoi migliorare il livello di sicurezza dei tuoi dispositivi migrando i dispositivi AWS IoT Greengrass principali in modo che vengano eseguiti come utente non root con solo le funzionalità Linux richieste. AWS IoT Greengrass Puoi migrare un singolo dispositivo o scalare la migrazione su un parco veicoli.
Considerazioni
Prima di eseguire la migrazione a una versione non root, considera quanto segue:
-
Questa procedura di migrazione si applica ai dispositivi AWS IoT Greengrass principali che eseguono AWS IoT Greengrass nucleus (Java-based) su Linux con systemd. Non si applica ai dispositivi che eseguono AWS IoT Greengrass nucleus lite.
-
Testa la migrazione su un singolo dispositivo in un ambiente di sviluppo prima di migrare il tuo parco di produzione.
Esegui la migrazione di un singolo dispositivo
Questa procedura di migrazione segue l'approccio descritto inSoluzione 3: configurazione AWS IoT Greengrass V2 come dispositivo non root con separazione degli utenti tra i componenti. Prima di iniziare, completa i prerequisiti in quell'argomento, inclusa la configurazione sudoers che consente all'utente non root di eseguire i componenti come utenti separati.
Usa questa procedura per migrare un singolo dispositivo prima di migrare la tua flotta.
Fase 1: Creare l'utente e il gruppo non root
Connettiti al tuo dispositivo e crea l'utente e il gruppo di sistema che AWS IoT Greengrass funzionano come. Sostituisci user-name e group-name con i nomi che desideri utilizzare.
sudo groupadd --systemgroup-namesudo useradd --system --create-home --shell /sbin/nologin -ggroup-nameuser-name
Passaggio 2: eseguire il backup della proprietà del file
Arresta AWS IoT Greengrass e salva l'attuale struttura di proprietà dei file in modo da poterla ripristinare se è necessario eseguire il rollback.
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
I comandi in questo argomento vengono utilizzati /greengrass/v2 come percorso AWS IoT Greengrass principale. Se l'installazione è AWS IoT Greengrass stata effettuata in una posizione diversa, /greengrass/v2 sostituiscila con il percorso AWS IoT Greengrass root effettivo.
Passaggio 3: modifica della proprietà del file
Trasferisci la proprietà della AWS IoT Greengrass directory all'utente non root.
sudo chown -Ruser-name:group-name/greengrass/v2
Passaggio 4: creare l'override drop-in systemd
Crea una directory drop-in e un file di configurazione che indichi a systemd di funzionare AWS IoT Greengrass come utente non root con le funzionalità Linux richieste.
sudo mkdir -p /etc/systemd/system/greengrass.service.d
La migrazione utilizza un file di override drop-in di systemd all'indirizzo. /etc/systemd/system/greengrass.service.d/10-nonroot.conf Un override drop-in sostituisce le impostazioni nel file di servizio di base senza modificarlo direttamente. Questo override configura systemd per eseguire il AWS IoT Greengrass servizio come utente non root con un set limitato di funzionalità Linux. La rimozione della directory drop-in fa sì che systemd ritorni al greengrass.service file base, che viene eseguito come root con la configurazione originale.
Crea il file /etc/systemd/system/greengrass.service.d/10-nonroot.conf con il seguente contenuto:
[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
Per informazioni su queste direttive systemd e sulle funzionalità richieste, vedere. Soluzione 3: configurazione AWS IoT Greengrass V2 come dispositivo non root con separazione degli utenti tra i componenti
Fase 5: Ricarica systemd e avvia AWS IoT Greengrass
Esegui i seguenti comandi per ricaricare il demone systemd e iniziare. AWS IoT Greengrass
sudo systemctl daemon-reload sudo systemctl start greengrass.service
Passaggio 6: verifica la migrazione
Conferma che AWS IoT Greengrass è in esecuzione come utente non root.
sudo systemctl status greengrass.service ps -ef | grep greengrass
L'output mostra l'utente non root come proprietario del processo anziché. root
Quindi, conferma che tutti i componenti distribuiti siano in esecuzione. È necessario distribuire il aws.greengrass.Cli componente sul dispositivo per eseguire questo comando.
sudo /greengrass/v2/bin/greengrass-cli component list
Ogni componente deve riportare un valore State di RUNNING oFINISHED. FINISHEDè lo stato terminale previsto peraws.greengrass.Nucleus. Esamina qualsiasi componente nello ERRORED stato BROKEN or prima di considerare la migrazione completa.
Ripristina un singolo dispositivo
Se devi eseguire il ripristino per AWS IoT Greengrass eseguirlo come root, rimuovi l'override drop-in, ripristina la proprietà del file e riavvia. 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
Esegui Passaggio 6: verifica la migrazione nuovamente i comandi di verifica da per confermare che AWS IoT Greengrass è in esecuzione come root. Il processo dovrebbe apparire root come proprietario.
Dopo aver confermato che il rollback è riuscito, puoi opzionalmente ripulire gli artefatti della migrazione:
-
Directory di backup: puoi conservarla
/opt/greengrass-backupse intendi riprovare la migrazione in un secondo momento o rimuoverla:sudo rm -r /opt/greengrass-backup -
Non-root utente e gruppo: se non intendi più eseguire l'operazione AWS IoT Greengrass come utente non root, puoi rimuovere l'utente e il gruppo che hai creato nel passaggio 1:
sudo userdeluser-namesudo groupdelgroup-nameSe altri servizi o componenti utilizzano questo utente, non rimuoverlo.
Esegui la migrazione di una flotta di dispositivi
Dopo aver verificato la migrazione su un singolo dispositivo, puoi scalare la migrazione su tutta la tua flotta. Seleziona uno dei seguenti metodi:
Usa una soluzione personalizzata AWS IoT Greengrass componente bootstrap
Puoi creare un AWS IoT Greengrass componente personalizzato che automatizzi le fasi di migrazione di un singolo dispositivo in tutta la tua flotta. Questo approccio è autonomo e utilizza solo implementazioni. AWS IoT Greengrass Non richiede strumenti esterni come Systems Manager.
Il componente utilizza il ciclo di vita Bootstrap con RequiresPrivilege set totrue, che esegue il componente come root durante la distribuzione. Lo script bootstrap esegue le stesse operazioni privilegiate della procedura per dispositivo singolo:
-
Crea l'utente e il gruppo non root se non esistono già.
-
Esegui il backup della struttura di proprietà dei file per il rollback.
-
Cambia la proprietà della directory AWS IoT Greengrass principale con l'utente non root.
-
Crea il file di override drop-in systemd.
-
Ricarica il demone systemd.
-
Esci con il codice 101 per riavviare il dispositivo.
Importante
Il componente deve uscire con il codice 101, non 100. Il codice di uscita 100 riavvia solo il processo AWS IoT Greengrass JVM, che utilizza la configurazione del servizio systemd già memorizzata nella cache. Un riavvio completo obbliga systemd a leggere il nuovo override drop-in dal disco e ad avviarsi come utente non root. AWS IoT Greengrass Il riavvio interrompe temporaneamente tutti i servizi sul dispositivo.
Rendi il componente idempotente in modo che le ridistribuzioni non falliscano se hai già eseguito la migrazione del dispositivo.
Una volta completata la distribuzione della migrazione, verifica che i tuoi dispositivi funzionino come utente non root. Per ulteriori informazioni, consulta Passaggio 6: verifica la migrazione. Puoi distribuire un componente di verifica che controlli l'utente in esecuzione e ne riporti il risultato oppure monitora lo stato della distribuzione nella console. AWS IoT Greengrass
Imposta un meccanismo di rollback
Per ripristinare la configurazione root in remoto in tutta la flotta, il componente di migrazione deve impostare un meccanismo di rollback. Un approccio consiste nell'utilizzare systemd per monitorare un file di attivazione. Questo approccio richiede le seguenti risorse systemd:
-
Uno script di rollback che rimuove l'override drop-in, ripristina la proprietà originale del file dal backup, ricarica il demone systemd e si riavvia come root. AWS IoT Greengrass
-
Un servizio systemd oneshot che esegue lo script di rollback come root. Un servizio oneshot esegue una singola attività e quindi esce, anziché essere eseguito come un demone di lunga durata.
-
Un'unità di percorso systemd che monitora un percorso di file specifico, ad esempio.
/greengrass/v2/rollback/.rollback-triggerQuando viene visualizzato il file, l'unità di percorso avvia automaticamente il servizio di rollback oneshot.
Con questo meccanismo in atto, è possibile ripristinare un dispositivo implementando un semplice AWS IoT Greengrass componente che crea il file di attivazione. L'unità di percorso systemd rileva il file, esegue il servizio di rollback come root e ripristina AWS IoT Greengrass la configurazione root originale.
Utilizzo AWS Systems Manager
Se utilizzi Systems Manager per gestire i tuoi dispositivi, puoi creare un documento SSM che automatizzi le fasi di migrazione di un singolo dispositivo. Poiché SSM viene eseguito indipendentemente AWS IoT Greengrass, può arrestare e riavviare il AWS IoT Greengrass servizio direttamente senza riavviare il dispositivo.
Il tuo documento SSM deve soddisfare i seguenti requisiti:
-
Arresta AWS IoT Greengrass ed esegui il backup della configurazione corrente del servizio e della struttura di proprietà dei file.
-
Crea l'utente e il gruppo non root.
-
Cambia la proprietà della AWS IoT Greengrass directory con l'utente non root.
-
Crea il file di override drop-in systemd.
-
Ricarica il demone systemd e avvia. AWS IoT Greengrass
-
Verifica che sia stato AWS IoT Greengrass avviato correttamente come utente non root.
Per eseguire la migrazione su tutta la tua flotta, utilizza Systems Manager Run Command per eseguire il documento SSM sui tuoi dispositivi utilizzando tag o gruppi di risorse. È possibile monitorare lo stato di esecuzione dei comandi nella console di Systems Manager, che mostra il risultato per ogni dispositivo di destinazione, inclusi eventuali errori.
Per eseguire il rollback, create un documento SSM separato che si interrompa AWS IoT Greengrass, rimuove l'override drop-in, ripristina la proprietà originale del file, ricarica il demone systemd e si riavvia come root. AWS IoT Greengrass Esegui questo documento sui dispositivi di cui hai bisogno per eseguire il rollback.
Per ulteriori informazioni sull'esecuzione dei comandi sui nodi gestiti, vedere Esecuzione di comandi tramite Systems Manager Run Command.