Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Migrasi AWS IoT Greengrass V2 perangkat inti ke non-root
penting
Topik ini menjelaskan pendekatan migrasi yang direkomendasikan. Anda mungkin perlu menyesuaikan langkah-langkah ini untuk konfigurasi perangkat, sistem operasi, dan perangkat lunak yang diinstal.
Secara default, AWS IoT Greengrass berjalan sebagai pengguna root pada perangkat Linux. Anda dapat meningkatkan postur keamanan perangkat Anda dengan memigrasikan perangkat AWS IoT Greengrass inti untuk dijalankan sebagai pengguna non-root hanya dengan kemampuan Linux yang AWS IoT Greengrass diperlukan. Anda dapat memigrasikan satu perangkat atau menskalakan migrasi di seluruh armada.
Pertimbangan-pertimbangan
Pertimbangkan hal berikut sebelum Anda bermigrasi ke non-root:
-
Prosedur migrasi ini berlaku untuk perangkat AWS IoT Greengrass inti yang menjalankan AWS IoT Greengrass nucleus (Java-based) di Linux dengan systemd. Ini tidak berlaku untuk perangkat yang menjalankan AWS IoT Greengrass nucleus lite.
-
Uji migrasi pada satu perangkat di lingkungan pengembangan sebelum Anda memigrasikan armada produksi Anda.
Memigrasikan satu perangkat
Prosedur migrasi ini mengikuti pendekatan yang dijelaskan dalamSolusi 3: Mengatur AWS IoT Greengrass V2 sebagai non-root dengan pemisahan pengguna komponen. Sebelum Anda mulai, lengkapi prasyarat dalam topik itu, termasuk konfigurasi sudoers yang memungkinkan pengguna non-root menjalankan komponen sebagai pengguna terpisah.
Gunakan prosedur ini untuk memigrasikan satu perangkat sebelum Anda memigrasikan armada Anda.
Langkah 1: Buat pengguna dan grup non-root
Hubungkan ke perangkat Anda dan buat pengguna dan grup sistem yang AWS IoT Greengrass berjalan sebagai. Ganti user-name dan group-name dengan nama yang ingin Anda gunakan.
sudo groupadd --systemgroup-namesudo useradd --system --create-home --shell /sbin/nologin -ggroup-nameuser-name
Langkah 2: Cadangkan kepemilikan file
Hentikan AWS IoT Greengrass dan simpan struktur kepemilikan file saat ini sehingga Anda dapat memulihkannya jika Anda perlu memutar kembali.
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
catatan
Perintah dalam topik ini digunakan /greengrass/v2 sebagai jalur AWS IoT Greengrass root. Jika Anda menginstal AWS IoT Greengrass ke lokasi yang berbeda, ganti /greengrass/v2 dengan jalur AWS IoT Greengrass root Anda yang sebenarnya.
Langkah 3: Ubah kepemilikan file
Transfer kepemilikan AWS IoT Greengrass direktori ke pengguna non-root.
sudo chown -Ruser-name:group-name/greengrass/v2
Langkah 4: Buat penggantian drop-in systemd
Buat direktori drop-in dan file konfigurasi yang memberitahu systemd untuk berjalan AWS IoT Greengrass sebagai pengguna non-root dengan kemampuan Linux yang diperlukan.
sudo mkdir -p /etc/systemd/system/greengrass.service.d
Migrasi menggunakan file penggantian drop-in systemd di. /etc/systemd/system/greengrass.service.d/10-nonroot.conf Penggantian drop-in menggantikan pengaturan dalam file layanan dasar tanpa memodifikasinya secara langsung. Penggantian ini mengonfigurasi systemd untuk menjalankan AWS IoT Greengrass layanan sebagai pengguna non-root dengan serangkaian kemampuan Linux terbatas. Menghapus direktori drop-in menyebabkan systemd kembali ke greengrass.service file dasar, yang berjalan sebagai root dengan konfigurasi asli.
Buat file /etc/systemd/system/greengrass.service.d/10-nonroot.conf dengan konten berikut:
[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
Untuk informasi tentang arahan systemd ini dan kemampuan yang diperlukan, lihatSolusi 3: Mengatur AWS IoT Greengrass V2 sebagai non-root dengan pemisahan pengguna komponen.
Langkah 5: Muat ulang systemd dan mulai AWS IoT Greengrass
Jalankan perintah berikut untuk memuat ulang daemon systemd dan mulai. AWS IoT Greengrass
sudo systemctl daemon-reload sudo systemctl start greengrass.service
Langkah 6: Verifikasi migrasi
Konfirmas AWS IoT Greengrass ikan bahwa berjalan sebagai pengguna non-root.
sudo systemctl status greengrass.service ps -ef | grep greengrass
Output menunjukkan pengguna non-root sebagai pemilik proses, bukan. root
Selanjutnya, konfirmasikan bahwa semua komponen yang digunakan sedang berjalan. Anda harus menerapkan aws.greengrass.Cli komponen pada perangkat untuk menjalankan perintah ini.
sudo /greengrass/v2/bin/greengrass-cli component list
Setiap komponen harus melaporkan State a RUNNING atauFINISHED. FINISHEDadalah status terminal yang diharapkan untukaws.greengrass.Nucleus. Selidiki komponen apa pun di ERRORED status BROKEN atau sebelum Anda menganggap migrasi selesai.
Putar kembali satu perangkat
Jika Anda perlu memulihkan AWS IoT Greengrass untuk dijalankan sebagai root, hapus penggantian drop-in, pulihkan kepemilikan file, dan mulai ulang. 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
Jalankan perintah verifikasi dari Langkah 6: Verifikasi migrasi lagi untuk mengonfirmasi AWS IoT Greengrass bahwa berjalan sebagai root. Prosesnya harus ditampilkan root sebagai pemilik.
Setelah mengonfirmasi bahwa rollback berhasil, Anda dapat membersihkan artefak migrasi secara opsional:
-
Direktori cadangan — Anda dapat menyimpan
/opt/greengrass-backupjika Anda berencana untuk mencoba kembali migrasi nanti, atau menghapusnya:sudo rm -r /opt/greengrass-backup -
Non-root pengguna dan grup — Jika Anda tidak lagi berencana untuk menjalankan AWS IoT Greengrass sebagai pengguna non-root, Anda dapat menghapus pengguna dan grup yang Anda buat di Langkah 1:
sudo userdeluser-namesudo groupdelgroup-nameJika layanan atau komponen lain menggunakan pengguna ini, jangan hapus pengguna.
Migrasikan armada perangkat
Setelah memverifikasi migrasi pada satu perangkat, Anda dapat menskalakan migrasi di seluruh armada Anda. Pilih salah satu dari metode berikut:
Gunakan kustom AWS IoT Greengrass komponen bootstrap
Anda dapat membuat AWS IoT Greengrass komponen khusus yang mengotomatiskan langkah-langkah migrasi satu perangkat di seluruh armada Anda. Pendekatan ini mandiri dan hanya menggunakan penerapan AWS IoT Greengrass . Itu tidak memerlukan alat eksternal seperti Manajer Sistem.
Komponen menggunakan siklus hidup Bootstrap dengan RequiresPrivilege set totrue, yang menjalankan komponen sebagai root selama penerapan. Skrip bootstrap melakukan operasi istimewa yang sama dengan prosedur perangkat tunggal:
-
Buat pengguna dan grup non-root jika mereka belum ada.
-
Cadangkan struktur kepemilikan file untuk rollback.
-
Ubah kepemilikan direktori AWS IoT Greengrass root ke pengguna non-root.
-
Buat file penggantian drop-in systemd.
-
Muat ulang daemon systemd.
-
Keluar dengan kode 101 untuk me-reboot perangkat.
penting
Komponen harus keluar dengan kode 101, bukan 100. Kode keluar 100 memulai ulang hanya proses AWS IoT Greengrass JVM, yang menggunakan konfigurasi layanan systemd yang sudah di-cache dalam memori. Reboot penuh memaksa systemd untuk membaca penggantian drop-in baru dari disk dan memulai AWS IoT Greengrass sebagai pengguna non-root. Reboot sementara mengganggu semua layanan di perangkat.
Jadikan komponen idempoten sehingga penerapan ulang tidak gagal jika Anda sudah memigrasikan perangkat.
Setelah penyebaran migrasi selesai, verifikasi bahwa perangkat Anda berjalan sebagai pengguna non-root. Untuk informasi selengkapnya, lihat Langkah 6: Verifikasi migrasi. Anda dapat menerapkan komponen verifikasi yang memeriksa pengguna yang sedang berjalan dan melaporkan hasilnya, atau memantau status penerapan di AWS IoT Greengrass konsol.
Siapkan mekanisme rollback
Untuk memulihkan konfigurasi root dari jarak jauh di seluruh armada Anda, komponen migrasi Anda harus menyiapkan mekanisme rollback. Salah satu pendekatannya adalah menggunakan systemd untuk memantau file pemicu. Pendekatan ini membutuhkan sumber daya systemd berikut:
-
Skrip rollback yang menghapus penggantian drop-in, mengembalikan kepemilikan file asli dari cadangan, memuat ulang daemon systemd, dan memulai ulang sebagai root. AWS IoT Greengrass
-
Layanan oneshot systemd yang menjalankan skrip rollback sebagai root. Layanan oneshot menjalankan satu tugas dan kemudian keluar, daripada berjalan sebagai daemon berumur panjang.
-
Unit jalur systemd yang memantau jalur file tertentu, seperti
/greengrass/v2/rollback/.rollback-trigger. Ketika file muncul, unit jalur secara otomatis memulai layanan rollback oneshot.
Dengan mekanisme ini, Anda dapat memutar kembali perangkat dengan menerapkan AWS IoT Greengrass komponen sederhana yang membuat file pemicu. Unit jalur systemd mendeteksi file, menjalankan layanan rollback sebagai root, dan mengembalikan AWS IoT Greengrass ke konfigurasi root aslinya.
Gunakan AWS Systems Manager
Jika Anda menggunakan Manajer Sistem untuk mengelola perangkat Anda, Anda dapat membuat dokumen SSM yang mengotomatiskan langkah-langkah migrasi perangkat tunggal. Karena SSM berjalan secara independen AWS IoT Greengrass, SSM dapat menghentikan dan memulai ulang AWS IoT Greengrass layanan secara langsung tanpa me-reboot perangkat.
Dokumen SSM Anda harus memenuhi persyaratan berikut:
-
Menghentikan AWS IoT Greengrass dan mencadangkan konfigurasi layanan saat ini dan struktur kepemilikan file.
-
Buat pengguna dan grup non-root.
-
Ubah kepemilikan AWS IoT Greengrass direktori ke pengguna non-root.
-
Buat file penggantian drop-in systemd.
-
Muat ulang daemon systemd dan mulai. AWS IoT Greengrass
-
Verifikasi bahwa AWS IoT Greengrass dimulai dengan sukses sebagai pengguna non-root.
Untuk menjalankan migrasi di seluruh armada Anda, gunakan System Manager Run Command untuk menjalankan dokumen SSM terhadap perangkat Anda menggunakan tag atau grup sumber daya. Anda dapat memantau status eksekusi perintah di konsol Manajer Sistem, yang menunjukkan hasil untuk setiap perangkat target, termasuk kesalahan apa pun.
Untuk memutar kembali, buat dokumen SSM terpisah yang berhenti AWS IoT Greengrass, menghapus penggantian drop-in, mengembalikan kepemilikan file asli, memuat ulang daemon systemd, dan memulai ulang sebagai root. AWS IoT Greengrass Jalankan dokumen ini terhadap perangkat yang perlu Anda putar kembali.
Untuk informasi selengkapnya tentang menjalankan perintah pada node terkelola, lihat Menjalankan perintah menggunakan System Manager Run Command.