Sürüm Yönetimi

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

Yalıtılmış web uygulamaları (IWA'lar), web platformunun üzerinde yüksek güvenli, güvenli ve sürümden bağımsız bir çalışma zamanı ortamı sunar. Üretim ortamlarında (özellikle yönetilen işletmelerde) yöneticilerin ve geliştiricilerin yazılım dağıtımları üzerinde ayrıntılı kontrol sahibi olması gerekir.

Chrome, bu şartları karşılamak için IWAs'a yönelik kapsamlı sürüm yönetimi özellikleri sunar. Bu özellikler arasında güncelleme kanalları, sürüm sabitleme ve sürüm düşürme yer alır. Bu özellikler, dağıtımın tahmin edilebilir olmasını ve kullanıcı tabanınızda hızlı kurtarma kontrolleri yapılmasını sağlar.

Kullanılabilirlik

Sürüm yönetimi davranışı, IWA'nın bir yönetici tarafından yönetilip yönetilmediğine veya doğrudan bir kullanıcı tarafından yüklenip yüklenmediğine bağlıdır:

  • Yönetilen IWA'lar: Yönetim özellikleri (politika odaklı sabitleme ve sürüm düşürme dahil) Chrome 133'ten itibaren kullanılabilir.
  • Yönetilmeyen (Kullanıcı Tarafından Yüklenen) IW'ler: Kullanıcıya yönelik özellikler (ör. manuel kanal seçimi) Chrome 150'den itibaren kullanılabilir.

Oturum türü uyumluluğu

Güncelleme kanalları ve sürüm sabitleme dahil olmak üzere tüm sürüm yönetimi işlevleri, tüm ChromeOS oturum türleriyle tamamen uyumludur. Bunlardan bazıları:

  • Standart yönetilen kullanıcı oturumları
  • Yönetilen misafir oturumları (MGS)
  • Özel kiosk modu ortamları

Kanalları güncelleme

Güncelleme kanallarını kullanarak geliştiriciler, belirli uygulama derlemelerini farklı dağıtım ve test kitleleri için segmentlere ayırabilir. Kanalları yapılandırmak için uygulama güncelleme manifestindeki her sürüm girişine isteğe bağlı bir kanallar dizisi alanı ekleyin. Bu kanal adları, sabit platform anahtar kelimeleri (ör. canary veya stable) ile sınırlı değildir. Bunun yerine, küçük harf ASCII alfanümerik dizeler (tire veya alt çizgi içerebilir ancak boşluk içermez) olarak biçimlendirilmesi gereken, geliştirici tarafından tanımlanan rastgele tanımlayıcılardır. Bir sürüm girişinde kanallar alanı tamamen atlanırsa Chrome, kullanılabilirliğini örtülü olarak "varsayılan" kanala ayarlar. Sonuç olarak, yönetim politikasında belirtilen kanal adı, manifestte tanımlanan dizeyle tam olarak eşleşmelidir. Yazım hataları veya eşleşmeyen yapılandırmalar, uygun bir sürümün tanımlanmamasına ve bu nedenle söz konusu istemciler için güncellemelerin durdurulmasına neden olur.

Manifest yapılandırması

Kanalları yapılandırmak için Web Uygulaması Manifestinizdeki her sürüm girişine isteğe bağlı bir channels dizisi ekleyin. Göz önünde bulundurmanız gereken bazı noktalar:

  • Kanal eşleme: Bir sürüm girişi channels dizisini tanımlarsa bu sürüm yalnızca belirtilen kanallara yüklenebilir.
  • Varsayılan yedek: Bir sürüm girişinde channels alanı tamamen atlanırsa Chrome, sürümün yalnızca default kanalına ait olduğunu varsayar.
  • Dizelerin tam olarak eşleşmesi: İstemci tarafı politika yapılandırmalarında belirtilen kanal adları, güncelleme manifestinde tanımlanan dizelerle tam olarak eşleşmelidir (büyük/küçük harfe duyarlı). Hedeflenen kanal adıyla eşleşen bir sürüm yoksa uygulama, uygun güncellemeleri bulamaz.

Manifest güncelleme örneği

Aşağıdaki örnekte, birden fazla yayın kanalını destekleyen bir güncelleme manifesti gösterilmektedir:

{
  "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"
    }
  ]
}

Bu manifeste göre, hedeflenen kanala göre aşağıdaki sürümler kullanılabilir:

  • varsayılan: 0.2.0,0.4.0 (açık bir kanalı olmayan ve varsayılan olarak varsayılanı kullanan)
  • delta: 0.1.0, 0.2.0, 0.3.0
  • beta: 0.3.0

IWA güncelleme motoru, uygulamanın güncelleme manifestinde bir kanallar alanı arayarak belirli sürüm kanallarını hedeflemeyi destekler.

Sürüm sabitleme

Yüksek uyumluluk veya yüksek kararlılık gerektiren kurumsal ortamlarda yöneticiler, cihazların iş açısından kritik yazılımların tam sürümlerini çalıştırdığından emin olmalıdır. Sürüm sabitleme yöneticilerin bir IWA'yı belirli bir sürüme kilitlemesine olanak tanır ve sonraki tüm arka plan güncellemelerini durdurur. Bu sayede işletmeler, kararlı yapılandırmaları korumak ve katı iç veya sektör düzenlemelerine uymak için son derece güvenilir bir yöntem kullanabilir.

Kurumsal yöneticiler, bir yalıtılmış web uygulamasını (IWA) belirli bir yayınlanan derlemede dondurmak için IsolatedWebAppInstallForceList politikası içindeki pinned_version özelliğini yapılandırabilir. Bu özellik, öncelikle standart IWA yükleme iş akışını takiben uygulama ayrıntıları panelinde Google Yönetici Konsolu'ndaki etkileşimli kullanıcı arayüzü kontrolleri aracılığıyla yönetilir. Ancak yöneticiler, bu politika değerlerini doğrudan ham JSON yapılandırmalarını kullanarak dağıtma esnekliğini de korur. Geçerli bir sürüm dizesi yönetici tarafından başarıyla hedeflendikten sonra Chrome, bu açık paketi çeker ve sonraki tüm otomatik ileri güncellemeleri engeller.

Özel davranışlar ve kısıtlamalar

  • Güncellemeleri devam ettirme (Sabitlemeyi kaldırma): Otomatik güncellemeleri geri yüklemek için pinned_version özelliğini kaldırın veya değerini daha yeni bir hedef sürümle değiştirin.
  • Varsayılan olarak eski sürüme geçiş yok: pinned_version ayarını, şu anda yüklü olan sürümden daha düşük bir sürüme ayarlamak, allow_downgrades açıkça etkinleştirilmediği sürece geri almayı tetiklemez.
  • Kullanılamayan sabitleme hedefleri: Yapılandırılan pinned_version, belirlenen güncelleme kanalında yoksa veya yüklü sürümden daha eskiyse (sürüm düşürme devre dışı bırakılmışsa) Chrome, şu anda yüklü olan sürümü korur ve başka güncellemeleri engeller.
  • Yeni dağıtımlar: Yönetilen bir cihaza henüz yüklenmemiş bir IWA varsa ve belirtilen pinned_version alınamıyorsa veya güncelleme manifestinde eksikse IWA yüklenemez.

Eski sürüme geçme

Yeni dağıtılan bir güncelleme kritik bir hata veya güvenlik açığına neden olursa yöneticilerin cihazları önceki kararlı duruma geri çekmesi gerekebilir. Chrome, önceden yüklenmiş yönetilen IWA'ların daha düşük bir sürüme düşürülmesini destekler. Bu özellik, daha önce yalnızca ileriye dönük güncellemelere izin verildiği için platformda kullanılamıyordu.

Sürüm düşürme işlemi yalnızca aşağıdaki politika koşullarının her ikisi de karşılandığında mümkündür:

  1. pinned_version geçerli bir eski sürüme ayarlanmış olmalıdır.
  2. allow_downgrades açıkça doğru olarak ayarlanmışsa

Eski sürüme dönmenin işleyiş şekli

  • Tetikleme mekanizması: Geri alma işlemleri, normal güncelleme kontrolü döngüsü (4-6 saatte bir çalışır) sırasında işlenir.
  • Arka planda: Chrome, güncelleme manifestinde belirtilen eski web paketi (.swbn) kullanılarak IWA'nın tamamen yeniden yüklenmesini sağlar.

Kanal geçişi mantığı

Bir uygulamanın hedeflenen kanalı bir politikayla değiştirilirken güncelleme motoru belirli davranışlara uyar:

A senaryosu: Önceki sürümlerin bulunduğu bir kanala geçme

  • Sürüm düşürmeye izin veriliyorsa: pinned_version, hedef kanaldaki eski bir sürümle eşleşiyorsa ve allow_downgrades doğruysa geri alma işlemi gerçekleşir (ve yerel kullanıcı verileri silinir).
  • Sürüm düşürmeye izin verilmiyorsa: Sürüm düşürme işlemi gerçekleşmez. Cihaz, yüklü olan daha yüksek sürümde kalır ve yalnızca yeni seçilen kanalda daha yeni bir sürüm kullanıma sunulduğunda güncellenir.

B senaryosu: Aynı sürümün bulunduğu bir kanala geçiş

  • Değişiklik yok: Yeni seçilen kanal, şu anda yüklü olan sürüm numarasına eşit bir sürüm numarasına işaret ediyorsa Chrome, yüklü pakette herhangi bir değişiklik yapmaz.
  • Bayt bayt kimlik ilkesi: Geliştiriciler, farklı kanallardaki aynı sürüm numaralarının aynı ve bayt eşleşen kod imzalarını içerdiğini garanti etmelidir. Kanallar arasında aynı sürüm dizesi altında farklı kod tabanlarının dağıtılması, beklenmedik ve düzensiz uygulama durumlarına yol açabilir.

Yönetim politikası yapılandırması

Kurumsal sürüm kontrolleri, IsolatedWebAppInstallForceList politika şeması kullanılarak merkezi Google Yönetici Konsolu platformuyla zorunlu kılınır. Bu ayarlar doğrudan Yönetici Konsolu'ndaki kullanıcı arayüzü kontrolleri aracılığıyla yönetilebilir veya ham JSON politika yapılandırmaları kullanılarak dağıtılabilir.
Aşağıdaki yönetim politikası yapılandırma örneğinde güncelleme kanalları, sürüm sabitleme ve eski sürüme geçiş gösterilmektedir:

Politika değeri gösterimi

[
  {
    "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
  }
]

Şema parametrelerinin açıklamaları

  • channel (dize, isteğe bağlı): Chrome'a, güncelleme manifest dosyasında yalnızca bu kanala atanmış sürümleri değerlendirmesini bildirir. Boş bırakılırsa Chrome, "varsayılan" kanalı değerlendirir.
  • pinned_version (string, isteğe bağlı): Cihazı belirtilen sürüm dizesine açıkça kilitler. Sonraki otomatik arka plan güncellemeleri engellenir.
  • allow_downgrades (boolean, isteğe bağlı): Geri alma özelliğini etkinleştirir. Doğru değerine ayarlanırsa ve geçerli, eski bir pinned_version ile eşleştirilirse Chrome, eski sürüme geçiş için yeniden yükleme işlemini tetikler. Uyarı: Bu parametrenin true olarak ayarlanması, pinned_version alanı atlanmış olsa bile tüm standart yönlendirme güncellemelerini engeller.

Yönetilmeyen (kullanıcı tarafından yüklenen) IWA'lar (150'den itibaren)

Yönetilmeyen, kullanıcı tarafından yüklenen yalıtılmış web uygulamalarında sürüm oluşturma işlemi manuel kullanıcı etkileşimleriyle yapılır:

Yükleme Paketi ──► Kullanıcı Kanalı Seçer ──► Seçilen Kanalda Otomatik Kontroller

Otomatik güncellemeler için manifest ön koşulu

Kullanıcı tarafından yüklenen IWAs'nın arka planda otomatik olarak düzenli güncellemeleri kontrol edip alabilmesi için uygulamanın yerel web uygulaması manifesti (paketin içindeki meta veriler, /.well-known/manifest.webmanifest) geçerli bir update_manifest_url alanı içermelidir.

Bu URL, uygulamanın yerel manifest dosyasından çıkarılırsa yönetilmeyen güncelleme motoru hiçbir zaman arka plan kontrolleri yapmaz ve uygulama, ilk yükleme sürümünde kalıcı olarak dondurulmuş durumda kalır.

Manuel kanal seçimi

Yönetilmeyen bir IWA'nın ilk yüklemesi sırasında tarayıcı, güncelleme manifestini kontrol eder ve geliştirici birden fazla kanal yapılandırdıysa mevcut kanal seçeneklerini (örneğin, "Kararlı", "Beta") doğrudan kullanıcıya gösterir.

Önemli yaşam döngüsü kuralları

  1. İlk yükleme kaynağı: Kullanıcı tarafından yükleme sırasında seçilen kanaldan bağımsız olarak, ilk yükleme her zaman sağlanan yükleme paketinin içinde paketlenmiş dosyaları dağıtır.
  2. Sonraki güncellemeler: Yüklendikten sonra gelecekteki güncellemeler yalnızca seçilen kanaldan sorgulanır. Uygulama yalnızca hedeflenen kanalda yüklü sürümden daha yeni bir sürüm yayınlandığında güncellenir.
  3. Kanallar arasında geçiş yapma: Yükleme işleminden sonra farklı bir güncelleme kanalına geçmek için kullanıcının IWA'yı kaldırıp yeniden yüklemesi ve yükleme akışı sırasında seçilen kanalı tercih etmesi gerekir.

Yönetilen dağıtımları test etme

Cihazları Chrome Enterprise Yönetici Konsolu üzerinden yöneten veya politikaları doğrudan yapılandıran yöneticiler için:

  1. Kuruluş ayarları bölümündeki Uygulama Ayrıntıları paneline gidin.
  2. Sabitleme ve kanal hedeflerini test etmek için yapılandırma özelliklerini uygulayın. Bu kontroller standart kullanıcı oturumları, yönetilen misafir oturumları (MGS) ve kiosklarla tamamen uyumlu olduğundan tüm hedef dağıtım ortamlarındaki davranışları doğrulayabilirsiniz.
  3. Güncelleme kontrollerini yerel olarak incelemek için bir test istemcisinde chrome://web-app-internals konumuna gidin. Burada, güncelleme kontrollerini manuel olarak zorlayabilir ve gelen manifest paketlerini analiz edebilirsiniz.

Sonuç

İzole edilmiş web uygulamalarının güvenlik mimarisi, uygulama yaşam döngüsü davranışları üzerinde sıkı bir tahmin edilebilirlik ve kontrol sağlarken geliştiricileri güçlendirmek için tasarlanmıştır. Chrome'un sürüm yönetimi özelliklerinden yararlanarak hem geliştiriciler hem de BT yöneticileri, katı uyumluluk standartlarına ve operasyonel hedeflere uygun sağlam dağıtım kanalları oluşturabilir.

Uygulamanızın güncelleme stratejisini tasarlarken ve yönetirken aşağıdaki temel ilkeleri göz önünde bulundurun:

  • Aşamalı kanalları kullanma: Güncelleme kanalları (ör. beta, dev veya özel zil sesleri) telemetri ve geri bildirimleri aşamalı olarak toplamanıza olanak tanır. Bu sayede, büyük güncellemeler varsayılan kanalda genel kitleye sunulmadan önce titiz bir doğrulama sürecinden geçer.
  • Kararlılık için sabitleme: Yüksek düzeyde yapılandırılmış veya uyumluluk odaklı kurumsal ortamlarda, işlemleri beklenmedik arızalardan veya iş akışı kesintilerinden korumak için kritik uç noktaları doğrulanmış ve tam olarak sabitlenmiş bir pinned_version'a kilitleyin.
  • Acil durumlarda sürüm düşürme özelliğini kullanın: Sürüm düşürmenin, daha önce mümkün olmayan güçlü ve düzeltici bir güvenlik önlemi olduğunu unutmayın. Ancak geri alma işlemi, tam bir yeniden yüklemeyi tetiklediği ve tüm yerel istemci depolama alanını (IndexedDB, LocalStorage, çerezler) temizlediği için kesinlikle kritik güvenlik düzeltmeleri için ayrılmalıdır. Normal yamalar için, küçük bir ileriye dönük güncelleme dağıtmak her zaman ideal stratejidir.
  • Politika işaretlerini anlama: Yönetim anahtarlarına dikkat edin. allow_downgrades seçeneğinin etkinleştirilmesi, PIN aktif olarak tanımlanmamış olsa bile tüm ileriye dönük güncellemeleri durdurur.
  • Bayt Bayt Bütünlük Oluşturma: Farklı kanallarda dağıtılan aynı sürüm numaralarının, istemciler kanallar arasında geçiş yaparken düzensiz uygulama durumlarını önlemek için aynı, bayt eşleşmeli paketlerle eşlendiğinden emin olun.

Bu özellikleri doğrudan Güncelleme Manifestinize ve kurumsal politika şemanıza entegre ederek, yalıtılmış web uygulaması ekosisteminin yüksek güven garantilerini koruyan güvenilir, denetlenebilir ve güvenli bir güncelleme akışı sağlayabilirsiniz.