Gunakan Skrip Sesi untuk Mengelola Pengalaman AppStream Streaming Pengguna 2.0 Anda - Amazon AppStream 2.0

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gunakan Skrip Sesi untuk Mengelola Pengalaman AppStream Streaming Pengguna 2.0 Anda

AppStream 2.0 menyediakan skrip sesi on-instance. Anda dapat menggunakan skrip ini untuk menjalankan skrip kustom Anda sendiri ketika peristiwa tertentu terjadi dalam sesi streaming pengguna. Misalnya, Anda dapat menggunakan skrip khusus untuk mempersiapkan lingkungan AppStream 2.0 Anda sebelum sesi streaming pengguna Anda dimulai. Anda juga dapat menggunakan skrip khusus untuk membersihkan instance streaming setelah pengguna menyelesaikan sesi streaming mereka.

Skrip sesi ditentukan dalam gambar AppStream 2.0. Skrip ini dijalankan dalam konteks pengguna atau konteks sistem. Jika skrip sesi Anda menggunakan standar keluar untuk menulis informasi, kesalahan, atau men-debug pesan, skrip ini dapat disimpan secara opsional ke bucket Amazon S3 dalam akun Amazon Web Services Anda.

Jalankan Skrip Sebelum Sesi Streaming Dimulai

Anda dapat mengonfigurasi skrip agar berjalan maksimal 60 detik sebelum aplikasi pengguna diluncurkan dan sesi streaming mereka dimulai. Melakukannya memungkinkan Anda untuk menyesuaikan lingkungan AppStream 2.0 sebelum pengguna mulai streaming aplikasi mereka. Saat skrip sesi berjalan, spinner pemuatan akan ditampilkan untuk pengguna Anda. Ketika skrip Anda berhasil diselesaikan atau waktu tunggu maksimum berlalu, sesi streaming pengguna Anda akan dimulai. Jika skrip Anda tidak berhasil diselesaikan, pesan kesalahan akan ditampilkan untuk pengguna Anda. Namun, pengguna Anda tidak dicegah menggunakan sesi streaming mereka.

Saat Anda menentukan nama file pada instance Windows, Anda harus menggunakan garis miring terbalik ganda. Sebagai contoh:

C:\\ Skrip\\ Myscript.bat

Jika Anda tidak menggunakan garis miring terbalik ganda, kesalahan akan ditampilkan untuk memberi tahu Anda bahwa file.json salah diformat.

catatan

Ketika skrip Anda berhasil diselesaikan, mereka harus mengembalikan nilai 0. Jika skrip Anda mengembalikan nilai selain 0, AppStream 2.0 menampilkan pesan kesalahan kepada pengguna.

Ketika Anda menjalankan skrip sebelum sesi streaming dimulai dan kerangka kerja aplikasi dinamis AppStream 2.0 tidak diaktifkan, proses berikut terjadi:

AppStream 2.0 workflow diagram showing connection, application selection, and session launch steps.
  1. Pengguna Anda terhubung ke instance armada AppStream 2.0 yang tidak bergabung dengan domain. Mereka terhubung dengan menggunakan salah satu metode akses berikut:

    • AppStream 2.0 kolam pengguna

    • SAML 2.0

    • AppStream 2.0 API

  2. Katalog aplikasi ditampilkan di portal AppStream 2.0, dan pengguna Anda memilih aplikasi untuk diluncurkan.

  3. Salah satu hal berikut terjadi:

    • Jika persistensi pengaturan aplikasi diaktifkan untuk pengguna Anda, file pengaturan aplikasi Virtual Hard Disk (VHD) yang menyimpan penyesuaian pengguna Anda dan pengaturan Windows diunduh dan dipasang. Login pengguna Windows diperlukan dalam kasus ini.

      Untuk informasi tentang persistensi setelan aplikasi, lihatAktifkan Pengaturan Aplikasi Persistence untuk Pengguna AppStream 2.0 Anda.

    • Jika persistensi pengaturan aplikasi tidak diaktifkan, pengguna Windows sudah masuk.

  4. Skrip sesi Anda dimulai. Jika penyimpanan persisten diaktifkan untuk pengguna Anda, pemasangan konektor penyimpanan juga dimulai. Untuk informasi tentang penyimpanan persisten, lihatAktifkan dan Kelola Penyimpanan Persisten untuk Pengguna AppStream 2.0 Anda.

    catatan

    Pemasangan konektor penyimpanan tidak perlu diselesaikan agar sesi streaming dimulai. Jika skrip sesi selesai sebelum pemasangan konektor penyimpanan selesai, sesi streaming dimulai.

    Untuk informasi tentang memantau status pemasangan konektor penyimpanan, lihatGunakan Konektor Penyimpanan dengan Skrip Sesi.

  5. Skrip sesi Anda selesai atau habis waktu.

  6. Sesi streaming pengguna dimulai.

  7. Aplikasi yang dipilih pengguna Anda diluncurkan.

Untuk informasi tentang kerangka kerja aplikasi dinamis AppStream 2.0, lihatMenggunakan AppStream 2.0 Dynamic Application Framework untuk Membangun Penyedia Aplikasi Dinamis.

Saat Anda menjalankan skrip sebelum sesi streaming dimulai dan kerangka kerja aplikasi dinamis AppStream 2.0 diaktifkan, proses berikut terjadi:

AppStream 2.0 workflow from user login to application launch, including SAML authentication and session scripts.
  1. Pengguna Anda mengunjungi portal aplikasi SAMP 2.0 untuk organisasi Anda, dan mereka memilih tumpukan AppStream 2.0.

  2. Mereka terhubung ke instance armada AppStream 2.0 yang bergabung dengan domain.

  3. Jika persistensi pengaturan aplikasi diaktifkan untuk pengguna Anda, file VHD pengaturan aplikasi yang menyimpan penyesuaian pengguna Anda dan pengaturan Windows diunduh dan dipasang.

  4. Logon pengguna Windows terjadi.

  5. Katalog aplikasi ditampilkan di portal AppStream 2.0 dan pengguna Anda memilih aplikasi untuk diluncurkan.

  6. Skrip sesi Anda dimulai. Jika penyimpanan persisten diaktifkan untuk pengguna Anda, pemasangan konektor penyimpanan juga dimulai.

    catatan

    Pemasangan konektor penyimpanan tidak perlu diselesaikan agar sesi streaming dimulai. Jika skrip sesi selesai sebelum pemasangan konektor penyimpanan selesai, sesi streaming dimulai.

    Untuk informasi tentang memantau status pemasangan konektor penyimpanan, lihatGunakan Konektor Penyimpanan dengan Skrip Sesi.

  7. Skrip sesi Anda selesai atau habis waktu.

  8. Sesi streaming pengguna dimulai.

  9. Aplikasi yang dipilih pengguna Anda diluncurkan.

Jalankan Skrip Setelah Sesi Streaming Berakhir

Anda juga dapat mengonfigurasi skrip agar berjalan setelah sesi streaming pengguna berakhir. Misalnya, Anda dapat menjalankan skrip saat pengguna memilih End Session dari toolbar AppStream 2.0, atau ketika mereka mencapai durasi maksimum yang diizinkan untuk sesi tersebut. Anda juga dapat menggunakan skrip sesi ini untuk membersihkan lingkungan AppStream 2.0 Anda sebelum instance streaming dihentikan. Misalnya, Anda dapat menggunakan skrip untuk melepaskan kunci file atau mengunggah file log. Saat Anda menjalankan skrip setelah sesi streaming berakhir, proses berikut terjadi:

Flowchart showing AppStream 2.0 session termination process with scripts and storage actions.
  1. Sesi streaming AppStream 2.0 pengguna Anda berakhir.

  2. Skrip penghentian sesi Anda dimulai.

  3. Skrip penghentian sesi selesai atau habis waktu.

  4. Terjadi logout pengguna Windows.

  5. Salah satu atau kedua hal berikut terjadi secara paralel, jika berlaku:

    • Jika persistensi pengaturan aplikasi diaktifkan untuk pengguna Anda, file VHD pengaturan aplikasi yang menyimpan penyesuaian dan pengaturan Windows pengguna Anda dilepas dan diunggah ke bucket Amazon S3 di akun Anda.

    • Jika penyimpanan persisten diaktifkan untuk pengguna Anda, konektor penyimpanan menyelesaikan sinkronisasi akhir dan dilepas.

  6. Instance armada dihentikan.

Buat dan Tentukan Skrip Sesi

Anda dapat mengonfigurasi dan menentukan skrip sesi untuk armada Always-on, On-Demand, dan Elastic.

Untuk mengonfigurasi dan menentukan skrip sesi untuk armada Always-on dan On-Demand
  1. Buka konsol AppStream 2.0 di https://console.aws.amazon.com/appstream2.

  2. Di panel navigasi, pilih Images, Image Builder.

  3. Pilih pembuat gambar yang berada dalam status Running, dan pilih Connect.

  4. Saat diminta, pilih Administrator.

  5. Arahkan keC:\AppStream\SessionScripts, dan buka file config.json konfigurasi.

    Untuk informasi tentang parameter skrip sesi, lihatFile Konfigurasi Skrip Sesi.

  6. Setelah Anda selesai membuat perubahan, simpan dan tutup config.json file.

  7. Pada desktop pembuat gambar, buka Asisten Gambar.

  8. (Opsional) Tentukan aplikasi tambahan apa pun yang ingin Anda sertakan dalam gambar.

  9. Ikuti langkah-langkah yang diperlukan di Image Assistant untuk menyelesaikan pembuatan gambar Anda.

    Jika konfigurasi skrip sesi tidak dapat divalidasi (misalnya, jika file.json tidak diformat dengan benar), Anda akan diberi tahu saat memilih Putuskan sambungan dan buat gambar.

    catatan

    Untuk menemukan file konfigurasi skrip sesi untuk pembuat gambar berbasis Linux, navigasikan ke. /opt/appstream/SessionScripts/config.json

Untuk mengkonfigurasi dan menentukan skrip sesi untuk armada Elastis
  1. Buat file zip yang berisi skrip sesi dan file config.json. File skrip akan disalin ke lokasi berikut. Anda harus menggunakan lokasi ini untuk config.json Anda.

    • Untuk Windows, gunakanC:\AppStream\SessionScripts\SessionScript.

    • Untuk Linux, gunakan/opt/appstream/SessionScripts/SessionScript.

    catatan

    Untuk menjalankan file skrip sesi, pastikan bahwa file.zip hanya berisi skrip sesi dan config.json file, dan bukan folder yang berisi. Untuk informasi selengkapnya, lihat File Konfigurasi Skrip Sesi.

  2. Unggah file zip ke bucket Amazon S3 di akun Anda.

    catatan

    VPC Anda harus menyediakan akses ke bucket Amazon S3. Untuk informasi selengkapnya, lihat Menggunakan Titik Akhir VPC Amazon S3 untuk Fitur 2.0 AppStream .

    Anda harus memiliki bucket S3 dan armada AppStream 2.0 yang sama Wilayah AWS.

    Anda harus memiliki izin IAM untuk melakukan S3:GetObject tindakan pada objek skrip sesi di bucket Amazon S3. Untuk mempelajari selengkapnya tentang menyimpan skrip sesi di bucket Amazon S3, lihat. Simpan Ikon Aplikasi, Skrip Pengaturan, Skrip Sesi, dan VHD dalam Bucket S3

  3. Buka konsol AppStream 2.0 di https://console.aws.amazon.com/appstream2.

  4. Di panel navigasi, pilih Armada.

  5. Pilih armada Elastic yang ingin Anda perbarui, lalu pilih Lihat Detail.

  6. Pada tab Pengaturan skrip sesi, pilih Edit.

  7. Untuk objek skrip Sesi di S3, masukkan URI S3 yang mewakili objek skrip sesi, atau pilih Browse S3 untuk menavigasi ke bucket S3 Anda dan temukan objek skrip sesi.

  8. Setelah Anda selesai membuat perubahan, pilih Simpan Perubahan.

  9. Pada titik ini, skrip sesi tersedia untuk semua instance armada yang diluncurkan.

    catatan

    Anda juga dapat mengonfigurasi skrip sesi saat membuat armada Elastis baru.

File Konfigurasi Skrip Sesi

Untuk menemukan file konfigurasi skrip sesi dalam instance Windows, navigasikan ke C:\\ AppStreamSessionScripts\ config.json. Pada instance Linux, navigasikan ke /opt/appstream/ SessionScripts /config.json. File diformat sebagai berikut.

catatan

File konfigurasi dalam format.json. Verifikasi bahwa teks apa pun yang Anda ketik dalam file ini dalam format.json yang valid.

{ "SessionStart": { "executables": [ { "context": "system", "filename": "", "arguments": "", "s3LogEnabled": true }, { "context": "user", "filename": "", "arguments": "", "s3LogEnabled": true } ], "waitingTime": 30 }, "SessionTermination": { "executables": [ { "context": "system", "filename": "", "arguments": "", "s3LogEnabled": true }, { "context": "user", "filename": "", "arguments": "", "s3LogEnabled": true } ], "waitingTime": 30 } }

Anda dapat menggunakan parameter berikut dalam file konfigurasi skrip sesi.

SessionStart/SessionTermination

Skrip sesi untuk dijalankan dalam acara sesi yang sesuai berdasarkan nama objek.

Tipe: String

Wajib: Tidak

Nilai yang diizinkan:SessionStart, SessionTermination

WaitingTime

Durasi maksimum skrip sesi dalam hitungan detik.

Tipe: Integer

Wajib: Tidak

Kendala: Durasi maksimum adalah 60 detik. Jika skrip sesi tidak selesai dalam durasi ini, skrip tersebut akan dihentikan. Jika Anda memerlukan skrip untuk terus berjalan, luncurkan sebagai proses terpisah.

Dapat dieksekusi

Detail untuk menjalankan skrip sesi.

Tipe: String

Wajib: Ya

Kendala: Jumlah maksimum skrip yang dapat dijalankan per acara sesi adalah 2 (satu untuk konteks pengguna, satu untuk konteks sistem).

Konteks

Konteks di mana untuk menjalankan skrip sesi.

Tipe: String

Wajib: Ya

Nilai yang diizinkan:user, system

Nama berkas

Jalur lengkap ke skrip sesi untuk dijalankan. Jika parameter ini tidak ditentukan, skrip sesi tidak dijalankan.

Tipe: String

Wajib: Tidak

Kendala: Panjang maksimum untuk nama file dan jalur lengkap adalah 1.000 karakter.

Nilai yang diizinkan:.bat,.exe, .sh

catatan

Anda juga dapat menggunakan PowerShell file Windows. Untuk informasi selengkapnya, lihat Menggunakan PowerShell File Windows.

Argumen

Argumen untuk skrip sesi Anda atau file yang dapat dieksekusi.

Tipe: String

Wajib: Tidak

Kendala panjang: Panjang maksimum adalah 1.000 karakter.

S3 LogEnabled

Ketika nilai untuk parameter ini disetel keTrue, bucket S3 dibuat dalam akun Amazon Web Services Anda untuk menyimpan log yang dibuat oleh skrip sesi. Secara default, nilai ini diatur ke True. Untuk informasi selengkapnya, lihat bagian Keluaran Skrip Sesi Pencatatan nanti dalam topik ini.

Tipe: Boolean

Wajib: Tidak

Nilai yang diizinkan:True, False

Menggunakan PowerShell File Windows

Untuk menggunakan PowerShell file Windows, tentukan jalur lengkap ke PowerShell file dalam filename parameter:

"filename": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",

Kemudian tentukan skrip sesi Anda di arguments parameter:

"arguments": "-File \"C:\\path\\to\\session\\script.ps1\"",

Terakhir, verifikasi bahwa Kebijakan PowerShell Eksekusi memungkinkan PowerShell file Anda berjalan.

Keluaran Skrip Sesi Pencatatan

Ketika opsi ini diaktifkan dalam file konfigurasi, AppStream 2.0 secara otomatis menangkap output dari skrip sesi yang ditulis ke standar keluar. Output ini diunggah ke bucket Amazon S3 di akun Anda. Anda dapat meninjau file log untuk tujuan pemecahan masalah atau debugging.

catatan

File log diunggah saat skrip sesi mengembalikan nilai, atau nilai yang ditetapkan WaitingTime telah berlalu, mana yang lebih dulu.

Gunakan Konektor Penyimpanan dengan Skrip Sesi

Ketika konektor penyimpanan AppStream 2.0 diaktifkan, mereka mulai dipasang saat skrip mulai sesi berjalan. Jika skrip Anda bergantung pada konektor penyimpanan yang dipasang, Anda dapat menunggu konektor tersedia. AppStream 2.0 mempertahankan status pemasangan konektor penyimpanan di registri Windows pada instance Windows, pada tombol berikut:

<provided user name>HKEY_LOCAL_MACHINE\ PERANGKAT LUNAK\ Amazon\\ Penyimpanan\\ AppStream <Storage connector>

Nilai kunci registri adalah sebagai berikut:

  • Nama pengguna yang disediakan — ID pengguna yang disediakan melalui mode akses. Mode akses dan nilai untuk setiap mode adalah sebagai berikut:

    • User Pool — Alamat email untuk pengguna

    • URL Streaming — UserID

    • SALL — NameID. Jika nama pengguna menyertakan garis miring (misalnya, SAM pengguna domainAccountName), garis miring diganti dengan karakter “-”.

  • Konektor penyimpanan — Konektor untuk opsi penyimpanan persisten yang diaktifkan untuk pengguna. Nilai konektor penyimpanan adalah sebagai berikut:

    • HomeFolder

    • GoogleDrive

    • OneDrive

Setiap kunci registri konektor penyimpanan berisi nilai MountStatusDWORD. Tabel berikut mencantumkan nilai yang mungkin untuk MountStatus.

catatan

Untuk melihat kunci registri ini, Anda harus memiliki Microsoft .NET Framework versi 4.7.2 atau yang lebih baru diinstal pada gambar Anda.

Nilai Deskripsi
0

Konektor penyimpanan tidak diaktifkan untuk pengguna ini

1

Pemasangan konektor penyimpanan sedang berlangsung

2

Konektor penyimpanan berhasil dipasang

3

Pemasangan konektor penyimpanan gagal

4

Pemasangan konektor penyimpanan diaktifkan, tetapi belum dipasang

Pada instance Linux, Anda dapat memeriksa status pemasangan folder rumah dengan melihat nilai appstream_home_folder_mount_status dalam file ~/.config//-status. appstream-home-folder appstream-home-folder-mount

Nilai Deskripsi
Benar

Folder rumah berhasil dipasang

Salah Folder rumah belum terpasang

Aktifkan Penyimpanan Bucket Amazon S3 untuk Log Skrip Sesi

Saat Anda mengaktifkan pencatatan Amazon S3 dalam konfigurasi skrip sesi, AppStream 2.0 menangkap output standar dari skrip sesi Anda. Output diunggah secara berkala ke bucket S3 dalam akun Amazon Web Services Anda. Untuk setiap AWS Wilayah, AppStream 2.0 membuat bucket di akun Anda yang unik untuk akun Anda dan Wilayah.

Anda tidak perlu melakukan tugas konfigurasi apa pun untuk mengelola bucket S3 ini. Mereka sepenuhnya dikelola oleh layanan AppStream 2.0. File log yang disimpan di setiap bucket dienkripsi saat transit menggunakan titik akhir SSL Amazon S3 dan diam menggunakan kunci enkripsi yang dikelola Amazon S3. Ember diberi nama dalam format tertentu sebagai berikut:

appstream-logs-region-code-account-id-without-hyphens-random-identifier
kode wilayah

Ini adalah kode AWS Wilayah tempat tumpukan dibuat dengan penyimpanan bucket Amazon S3 yang diaktifkan untuk log skrip sesi.

account-id-without-hyphens

Pengenal akun Amazon Web Services Anda. ID acak memastikan bahwa tidak ada konflik dengan bucket lain di Wilayah itu. Bagian pertama dari nama bucket,appstream-logs, tidak berubah di seluruh akun atau Wilayah.

Misalnya, jika Anda menentukan skrip sesi dalam gambar di Wilayah AS Barat (Oregon) (us-barat-2) pada nomor akun 123456789012, AppStream 2.0 akan membuat bucket Amazon S3 dalam akun Anda di Wilayah tersebut dengan nama yang ditampilkan. Hanya administrator dengan izin yang cukup yang dapat menghapus bucket ini.

appstream-logs-us-west-2-1234567890123-abcdefg

Menonaktifkan skrip sesi tidak menghapus file log apa pun yang disimpan di bucket S3. Untuk menghapus file log secara permanen, Anda atau administrator lain dengan izin yang memadai harus melakukannya dengan menggunakan konsol Amazon S3 atau API. AppStream 2.0 menambahkan kebijakan bucket yang mencegah penghapusan bucket secara tidak sengaja. Untuk informasi selengkapnya, lihat Kebijakan IAM dan Bucket Amazon S3 untuk Ketekunan Setelan Aplikasi di. Identity and Access Management untuk Amazon AppStream 2.0

Saat skrip sesi diaktifkan, folder unik dibuat untuk setiap sesi streaming yang dimulai.

Jalur untuk folder tempat file log disimpan di bucket S3 di akun Anda menggunakan struktur berikut:

bucket-name/stack-name/fleet-name/access-mode/user-id-SHA-256-hash/session-id/SessionScriptsLogs/session-event
nama-ember

Nama bucket S3 tempat skrip sesi disimpan. Format nama dijelaskan sebelumnya di bagian ini.

nama-tumpukan

Nama tumpukan sesi berasal.

nama armada

Nama armada tempat skrip sesi berjalan.

modus akses

Metode identitas pengguna: custom untuk AppStream 2.0 API atau CLI, federated untuk SAMP, dan userpool untuk pengguna di kumpulan pengguna.

ID pengguna-SHA-256-hash

Nama folder khusus pengguna. Nama ini dibuat menggunakan string heksadesimal hash SHA-256 huruf kecil yang dihasilkan dari pengenal pengguna.

session-id

Pengidentifikasi sesi streaming pengguna. Setiap sesi streaming pengguna menghasilkan ID unik.

sesi-acara

Peristiwa yang menghasilkan log skrip sesi. Nilai acara adalah: SessionStart danSessionTermination.

Struktur folder contoh berikut berlaku untuk sesi streaming yang dimulai dari test-stack dan test-fleet. Sesi ini menggunakan API ID penggunatestuser@mydomain.com, dari Akun AWS ID dari123456789012, dan grup pengaturan test-stack di Wilayah AS Barat (Oregon) (us-barat-2):

appstream-logs-us-west-2-1234567890123-abcdefg/test-stack/test-fleet/custom/a0bcb1da11f480d9b5b3e90f91243143eac04cfccfbdc777e740fab628a1cd13/05yd1391-4805-3da6-f498-76f5x6746016/SessionScriptsLogs/SessionStart/

Struktur folder contoh ini berisi satu file log untuk skrip awal sesi konteks pengguna, dan satu file log untuk skrip awal sesi konteks sistem, jika berlaku.

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 berjalan per sesi, jika satu sesi berjalan SessionTerminationsementara yang lain sedang berjalan SessionStart, mereka tidak boleh mengganggu satu sama lain, atau dengan pengalaman sesi lain.

  • 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 file EXE 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.