Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan Skrip Sesi pada Armada Multi-Sesi
Saat menggunakan skrip sesi pada armada multi-sesi, ada persyaratan dan pertimbangan tambahan untuk memastikan kinerja dan keamanan yang optimal.
Persyaratan
Pada armada satu sesi, untuk contoh tertentu, SessionStartdan SessionTerminationkait dijamin hanya berjalan satu kali. Ini karena ada pemetaan sesi 1:1 ke instance. Saat menggunakan armada multi-sesi, ada pemetaan sesi N:M ke instance, di mana setiap sesi berjalan sendiri dan mengaitkannya. SessionStartSessionTermination Ini berarti bahwa SessionStartdan SessionTerminationkait dapat dijalankan berkali-kali pada contoh tertentu, dan dalam banyak urutan yang berbeda. Untuk pengalaman terbaik, berikut ini harus berlaku untuk skrip sesi Anda saat digunakan pada armada multi-sesi:
-
Skrip adalah idempoten.
Ketika suatu tindakan telah dilakukan, skrip harus menangani lebih dari satu eksekusi pada instance yang sama dengan penanganan yang anggun.
-
Skrip bersifat independen.
Karena skrip dijalankan per sesi, jika satu sesi berjalan SessionTerminationsementara yang lain sedang berjalan SessionStart, mereka tidak boleh saling mengganggu, atau dengan pengalaman sesi lainnya.
-
Skrip berkinerja.
Pada instance multi-sesi, beberapa sesi dapat disediakan secara bersamaan. Ini berarti bahwa mungkin ada beberapa eksekusi bersamaan dari skrip sesi. Skrip harus efisien, tidak mengkonsumsi sumber daya yang berlebihan, dan tidak memengaruhi pengalaman pengguna lain pada instance atau stabilitas sesi.
Banyak dari persyaratan ini dapat dipenuhi dengan menjaga logika skrip sesi terfokus pada sesi pengguna tertentu yang menjalankan skrip.
Pertimbangan Keamanan
AppStream Gambar 2.0 tidak boleh dikonfigurasi untuk mengizinkan izin menulis ke file skrip sesi oleh pengguna mana pun. Ini memperkenalkan vektor serangan kritis untuk pengguna jahat, di mana mereka dapat memodifikasi file skrip. File-file ini kemudian dapat dijalankan sebagai SYSTEM atau pengguna lain, tergantung pada konfigurasi Anda.
penting
Adalah tanggung jawab Anda untuk memastikan bahwa gambar AppStream 2.0 Anda dikonfigurasi dengan aman. Ini sangat penting untuk instance multi-sesi, di mana banyak pengguna menggunakan instance yang sama. Jika gambar tidak dikonfigurasi dengan aman, ada risiko keamanan untuk semua pengguna instance tersebut.
Berikut ini harus benar dari gambar dan file skrip sesi Anda:
-
Pengguna tidak memiliki izin untuk memodifikasi file skrip sesi.
-
Pengguna tidak memiliki izin untuk memodifikasi skrip sesi config.json. Perilaku default pada gambar membatasi akses ke administrator.
Skrip sesi yang dapat dieksekusi harus disimpan di lokasi yang aman di mana mereka aman dari modifikasi saat runtime.
Jika layanan mendeteksi bahwa skrip sesi yang dapat dieksekusi telah dimodifikasi, itu akan gagal setiap eksekusi berikutnya dari hook itu pada instance itu, unggah file log ke Amazon S3 (jika pencatatan Amazon S3 diaktifkan), dan Anda akan melihat pesan berikut:
Skrip sesi tidak dijalankan karena executable dimodifikasi setelah penyediaan instance. Eksekusi dilewati untuk keamanan.
Jika kasus penggunaan Anda memerlukan modifikasi skrip sesi yang dapat dieksekusi pada waktu berjalan (misalnya, jika Anda menunjuk ke EXE file yang dimodifikasi oleh proses pembaruan otomatis saat runtime), ini akan gagal dalam pemeriksaan di atas. Dalam hal ini, gunakan skrip untuk mengarahkan eksekusi ke executable yang dimodifikasi. Biarkan skrip tidak dimodifikasi saat runtime saat layanan melakukan pemeriksaan keamanan.
Jika file skrip sesi Anda terlalu besar (lebih dari 100 MB), ini dapat menyebabkan penundaan dalam penyediaan instance dan sesi, dan pemeriksaan keamanan akan memakan waktu tambahan (tergantung pada jenis instans dan sumber daya yang tersedia). Jika kasus penggunaan Anda memerlukan skrip sesi besar, pertimbangkan untuk menggunakan skrip yang lebih kecil untuk mengarahkan eksekusi. Ini akan meningkatkan pengalaman penyediaan instance dan sesi.
Perhatikan bahwa layanan hanya memeriksa executable yang ditentukan dalam skrip sesi config.json, dan ini hanya mekanisme fallback/best effort. Adalah tanggung jawab Anda untuk memastikan bahwa semua jalur kode dalam skrip sesi yang dapat dieksekusi aman dan tidak dapat dimodifikasi oleh pengguna akhir.