Pengelolaan Versi

Magdalena Skarbińska
Magdalena Skarbińska
Demián Renzulli
Demián Renzulli

Aplikasi Web Terisolasi (IWA) menawarkan lingkungan runtime yang sangat tepercaya, aman, dan terpisah versinya di atas platform web. Di lingkungan produksi—terutama dalam perusahaan terkelola—administrator dan developer memerlukan kontrol terperinci atas deployment software.

Untuk memenuhi persyaratan ini, Chrome menyediakan kemampuan pengelolaan versi yang komprehensif untuk IWA, termasuk Saluran Update, Penyematan Versi, dan Penurunan Versi. Fitur ini memungkinkan prediksi deployment dan kontrol pemulihan cepat di seluruh basis pengguna Anda.

Ketersediaan

Perilaku pengelolaan versi bergantung pada apakah IWA dikelola oleh administrator atau diinstal langsung oleh pengguna:

  • IWA terkelola: Fitur administratif (termasuk penyematan dan downgrade berbasis kebijakan) tersedia mulai dari Chrome 133.
  • IWA yang Tidak Dikelola (Diinstal Pengguna): Fitur yang terlihat oleh pengguna (seperti pemilihan saluran manual) tersedia mulai Chrome 150.

Kompatibilitas jenis sesi

Semua fungsi pengelolaan versi—termasuk saluran update dan penyematan versi—kompatibel sepenuhnya di semua jenis sesi ChromeOS. Hal ini mencakup:

  • Sesi Pengguna terkelola standar
  • Sesi Tamu Terkelola (MGS)
  • Lingkungan Mode kios khusus

Perbarui saluran

Dengan menggunakan saluran update, developer dapat menyegmentasikan build aplikasi tertentu untuk audiens pengujian dan deployment yang berbeda. Untuk mengonfigurasi saluran, tambahkan kolom array saluran opsional ke setiap entri versi dalam manifes update aplikasi. Nama saluran ini tidak dibatasi pada kata kunci platform tetap (seperti canary atau stable), tetapi merupakan ID arbitrer yang ditentukan developer dan harus diformat sebagai string alfanumerik ASCII huruf kecil (yang dapat menyertakan tanda hubung atau garis bawah, tetapi tidak boleh ada spasi). Jika entri versi menghilangkan kolom saluran sepenuhnya, Chrome secara implisit menetapkan ketersediaannya ke saluran "default". Pada akhirnya, nama channel yang ditetapkan dalam kebijakan administratif harus sama persis dengan string yang ditentukan dalam manifes; setiap kesalahan ketik atau konfigurasi yang tidak cocok akan menyebabkan tidak ada versi yang memenuhi syarat yang diidentifikasi, sehingga secara efektif menghentikan update untuk klien tersebut.

Konfigurasi manifes

Untuk mengonfigurasi saluran, tambahkan array channels opsional ke setiap entri versi di Manifes Aplikasi Web Anda. Berikut beberapa pertimbangan yang perlu diperhatikan:

  • Pemetaan saluran: Jika entri versi menentukan array channels, versi tersebut hanya memenuhi syarat untuk diinstal di saluran yang ditentukan.
  • Penggantian default: Jika entri versi menghilangkan kolom channels sepenuhnya, Chrome mengasumsikan bahwa versi tersebut hanya termasuk dalam saluran default.
  • Pencocokan string persis: Nama channel yang ditentukan dalam konfigurasi kebijakan sisi klien harus sama persis dengan string yang ditentukan dalam manifes update (peka huruf besar/kecil). Jika tidak ada versi yang cocok dengan nama channel target, aplikasi tidak akan dapat menemukan update yang memenuhi syarat.

Contoh update manifes

Contoh berikut menunjukkan manifes update yang mendukung beberapa saluran rilis:

{
  "versions": [
    {
      "version": "0.1.0",
      "src": "https://github.com/chromeos/iwa-sink/releases/download/v0.1.0/iwa-sink.swbn",
      "channels": ["delta"]
    },
    {
      "version": "0.2.0",
      "src": "https://github.com/chromeos/iwa-sink/releases/download/v0.2.0/iwa-sink.swbn",
      "channels": ["delta", "default"]
    },
    {
      "version": "0.3.0",
      "src": "https://github.com/chromeos/iwa-sink/releases/download/v0.3.0/iwa-sink.swbn",
      "channels": ["beta", "delta"]
    },
    {
      "version": "0.4.0",
      "src": "https://github.com/chromeos/iwa-sink/releases/download/v0.4.0/iwa-sink.swbn"
    }
  ]
}

Berdasarkan manifes ini, versi berikut tersedia per saluran yang ditargetkan:

  • default: 0.2.0,0.4.0 (yang tidak memiliki saluran eksplisit dan secara default ke default)
  • delta: 0.1.0, 0.2.0, 0.3.0
  • beta: 0.3.0

Mesin update IWA mendukung penargetan saluran rilis tertentu dengan mencari kolom saluran di dalam Manifes Update aplikasi.

Penyematan versi

Di lingkungan perusahaan yang memiliki kepatuhan tinggi atau sangat stabil, administrator harus memastikan perangkat menjalankan versi persis software penting bisnis. Penyematan versi memungkinkan administrator mengunci IWA ke versi tertentu, menghentikan semua update latar belakang berikutnya. Hal ini memberi perusahaan cara yang sangat andal untuk mempertahankan konfigurasi yang stabil dan mematuhi peraturan internal atau industri yang ketat.

Untuk membekukan Aplikasi Web Terisolasi (IWA) pada build rilis tertentu, administrator perusahaan dapat mengonfigurasi properti pinned_version dalam kebijakan IsolatedWebAppInstallForceList. Kemampuan ini terutama dikelola melalui kontrol UI interaktif di Konsol Google Admin di bagian panel detail aplikasi setelah alur kerja penginstalan IWA standar, meskipun administrator juga tetap memiliki fleksibilitas untuk men-deploy nilai kebijakan ini secara langsung menggunakan konfigurasi JSON mentah. Setelah string versi yang valid berhasil ditargetkan oleh administrator, Chrome akan menarik paket eksplisit tersebut dan memblokir semua update otomatis ke depan.

Perilaku dan batasan khusus

  • Melanjutkan update (Melepaskan): Untuk memulihkan update otomatis, hapus properti pinned_version atau ubah nilainya ke versi target yang lebih baru.
  • Tidak ada downgrade secara default: Menyetel pinned_version ke versi yang lebih rendah daripada versi yang saat ini diinstal tidak akan memicu rollback kecuali allow_downgrades diaktifkan secara eksplisit.
  • Target penyematan tidak tersedia: Jika pinned_version yang dikonfigurasi tidak ada di saluran update yang ditentukan, atau lebih lama dari versi yang diinstal (dengan downgrade dinonaktifkan), Chrome akan mempertahankan versi yang saat ini diinstal dan memblokir update lebih lanjut.
  • Deployment baru: Jika IWA belum diinstal di perangkat terkelola, dan pinned_version yang ditentukan tidak dapat diambil atau tidak ada dalam manifes update, IWA akan gagal diinstal.

Downgrade versi

Jika update yang baru di-deploy menimbulkan bug atau kerentanan yang kritis, administrator mungkin perlu melakukan rollback perangkat ke status stabil sebelumnya. Chrome mendukung downgrade IWA terkelola yang sudah diinstal ke versi yang lebih rendah—kemampuan yang sebelumnya tidak tersedia di platform saat hanya update ke depan yang diizinkan.

Downgrade hanya dapat dilakukan jika kedua kondisi kebijakan berikut terpenuhi:

  1. pinned_version disetel ke versi lama yang valid.
  2. allow_downgrades ditetapkan secara eksplisit ke benar (true).

Cara kerja downgrade

  • Mekanisme pemicu: Rollback diproses selama siklus pemeriksaan update reguler (yang berjalan setiap 4–6 jam).
  • Di balik layar: Chrome melakukan penginstalan ulang IWA secara penuh menggunakan paket web (.swbn) yang lebih lama yang ditentukan dalam manifes update.

Logika transisi saluran

Saat mengganti saluran target aplikasi dengan kebijakan, mesin update mematuhi perilaku tertentu:

Skenario A: Beralih ke channel dengan versi sebelumnya

  • Jika downgrade diizinkan: Jika pinned_version cocok dengan versi yang lebih lama di target channel dan allow_downgrades bernilai benar, rollback akan terjadi (dan data pengguna lokal akan dihapus).
  • Jika downgrade tidak diizinkan: Tidak ada downgrade yang akan terjadi. Perangkat akan tetap menggunakan versi yang lebih tinggi yang saat ini terinstal dan hanya akan diupdate jika versi yang lebih baru tersedia di saluran yang baru dipilih.

Skenario B: Beralih ke channel dengan versi yang identik

  • Tidak ada perubahan: Jika saluran yang baru dipilih mengarah ke nomor versi yang sama dengan yang saat ini diinstal, Chrome tidak akan melakukan modifikasi pada paket yang diinstal.
  • Prinsip identitas Byte-by-Byte: Developer harus menjamin bahwa nomor versi yang identik di berbagai saluran berisi tanda tangan kode yang identik dan cocok byte-nya. Men-deploy codebase yang berbeda dengan string versi yang sama di seluruh saluran dapat menyebabkan status aplikasi yang tidak terduga dan tidak stabil.

Konfigurasi kebijakan administratif

Kontrol versi Enterprise diterapkan dengan platform Konsol Google Admin yang terpusat menggunakan skema kebijakan IsolatedWebAppInstallForceList. Setelan ini dapat dikelola langsung melalui kontrol UI di Konsol Admin, atau di-deploy menggunakan konfigurasi kebijakan JSON mentah.
Contoh konfigurasi kebijakan administratif berikut menunjukkan saluran update, penyematan versi, dan downgrade:

Representasi nilai kebijakan

[
  {
    "update_manifest_url": "https://awesome-kitchen-sink.glitch.me/update.json",
    "web_bundle_id": "aiv4bxauvcu3zvbu6r5yynoh4atkzqqaoeof5mwz54b4zfywcrjuoaacai",
    "channel": "beta",
    "pinned_version": "0.7.0",
    "allow_downgrades": true
  }
]

Penjelasan parameter skema

  • channel (string, opsional): Menginstruksikan Chrome untuk hanya mengevaluasi versi yang ditetapkan ke saluran ini dalam manifes update. Jika dihilangkan, Chrome akan mengevaluasi saluran "default".
  • pinned_version (string, opsional): Mengunci perangkat secara eksplisit ke string versi yang ditentukan. Update latar belakang otomatis berikutnya diblokir.
  • allow_downgrades (boolean, opsional): Mengaktifkan kemampuan rollback. Jika benar (true) dan dipasangkan dengan pinned_version lama yang valid, Chrome akan memicu penginstalan ulang downgrade. Peringatan: Menetapkan parameter ini ke benar (true) akan memblokir semua update penerusan standar meskipun kolom pinned_version dihapus.

IWA yang tidak dikelola (diinstal pengguna) (dari 150)

Untuk Aplikasi Web Terisolasi yang tidak dikelola dan diinstal pengguna, pembuatan versi beroperasi dengan interaksi pengguna manual:

Paket Penginstalan ──► Pengguna Memilih Saluran ──► Pemeriksaan Otomatis pada Saluran yang Dipilih

Prasyarat manifes untuk update otomatis

Agar IWA yang diinstal pengguna dapat memeriksa dan menerima update berkala otomatis di latar belakang, Manifes Aplikasi Web lokal aplikasi (metadata yang dikemas di dalam paket pada /.well-known/manifest.webmanifest) harus berisi kolom update_manifest_url yang valid.

Jika URL ini tidak ada dalam file manifes lokal aplikasi, mesin update yang tidak dikelola tidak akan pernah melakukan pemeriksaan di latar belakang, dan aplikasi akan tetap dibekukan secara permanen pada versi penginstalan awalnya.

Pemilihan saluran manual

Selama penginstalan awal IWA yang tidak dikelola, browser akan memeriksa manifes update dan menampilkan opsi saluran yang tersedia (misalnya, "Stabil", "Beta") langsung kepada pengguna jika developer telah mengonfigurasi beberapa saluran.

Aturan siklus proses utama

  1. Asal penginstalan pertama: Terlepas dari saluran yang dipilih oleh pengguna saat penginstalan, penginstalan awal selalu men-deploy file yang dikemas di dalam paket penginstalan yang disediakan.
  2. Update berikutnya: Setelah diinstal, update mendatang akan dikueri secara eksklusif dari saluran yang dipilih. Aplikasi hanya akan diupdate jika versi yang lebih tinggi daripada yang terinstal dipublikasikan ke saluran yang ditargetkan tersebut.
  3. Mengganti saluran: Untuk beralih ke saluran update lain setelah penginstalan, pengguna harus meng-uninstal IWA dan menginstalnya kembali, dengan memilih saluran yang dipilih selama alur penginstalan.

Cara menguji deployment terkelola

Untuk administrator yang mengelola perangkat melalui Konsol Admin Chrome Enterprise atau mengonfigurasi kebijakan secara langsung:

  1. Buka panel Detail Aplikasi di bagian setelan organisasi.
  2. Terapkan properti konfigurasi untuk menguji penyematan dan target saluran. Karena kontrol ini sepenuhnya kompatibel dengan Sesi Pengguna standar, Sesi Tamu Terkelola (MGS), dan Kios, Anda dapat memverifikasi perilaku di semua lingkungan deployment target.
  3. Untuk memeriksa update secara lokal, buka chrome://web-app-internals di klien pengujian untuk memaksa pemeriksaan update secara manual dan menganalisis paket manifes yang masuk.

Kesimpulan

Arsitektur keamanan Aplikasi Web Terisolasi dirancang untuk mendukung developer sekaligus mempertahankan prediktabilitas dan kontrol yang ketat atas perilaku siklus proses aplikasi. Dengan memanfaatkan fitur pengelolaan versi Chrome, developer dan administrator IT dapat membangun pipeline deployment yang andal dan selaras dengan standar kepatuhan yang ketat serta tujuan operasional.

Saat Anda mendesain dan mengelola strategi update aplikasi, ingatlah prinsip inti berikut:

  • Gunakan saluran progresif: Saluran update (seperti beta, dev, atau dering kustom) memungkinkan Anda mengumpulkan telemetri dan masukan secara progresif. Hal ini memastikan update besar menjalani verifikasi yang ketat sebelum tersedia untuk populasi umum di saluran default.
  • Sematkan untuk stabilitas: Di lingkungan perusahaan yang sangat terstruktur atau didorong oleh kepatuhan, kunci endpoint penting ke pinned_version yang diverifikasi dan tepat untuk melindungi operasi dari gangguan yang tidak terduga atau gangguan alur kerja.
  • Cadangkan penurunan versi untuk keadaan darurat: Ketahui bahwa penurunan versi adalah katup pengaman korektif yang efektif dan sebelumnya tidak mungkin dilakukan. Namun, karena rollback memicu penginstalan ulang lengkap dan menghapus semua penyimpanan klien lokal (IndexedDB, LocalStorage, cookie), rollback harus dikhususkan untuk perbaikan keamanan penting. Untuk patch biasa, men-deploy update kecil yang berorientasi ke depan selalu menjadi strategi yang ideal.
  • Pahami tanda kebijakan: Perhatikan peralihan administratif; mengaktifkan allow_downgrades akan menghentikan semua pembaruan ke depan meskipun pin tidak ditetapkan secara aktif.
  • Menetapkan Integritas Byte demi Byte: Pastikan nomor versi yang identik yang di-deploy di berbagai saluran dipetakan ke bundle yang identik dan cocok byte-nya untuk menghindari status aplikasi yang tidak menentu saat klien bertransisi antar-saluran.

Dengan mengintegrasikan fitur ini langsung ke skema kebijakan perusahaan dan Manifes Update, Anda dapat memastikan alur update yang andal, dapat diaudit, dan aman yang mempertahankan jaminan kepercayaan tinggi dari ekosistem Aplikasi Web Terisolasi.