분리형 웹 앱 (IWA)은 웹 플랫폼을 기반으로 신뢰도가 높고 안전하며 버전이 분리된 런타임 환경을 제공합니다. 프로덕션 환경, 특히 관리형 기업 내에서 관리자와 개발자는 소프트웨어 배포를 세부적으로 제어해야 합니다.
이러한 요구사항을 충족하기 위해 Chrome은 업데이트 채널, 버전 고정, 버전 다운그레이드를 비롯한 IWA의 포괄적인 버전 관리 기능을 제공합니다. 이러한 기능을 사용하면 사용자 기반 전반에서 배포 예측 가능성과 빠른 복구 제어가 가능합니다.
가용성
버전 관리 동작은 IWA가 관리자에 의해 관리되는지 아니면 사용자가 직접 설치하는지에 따라 달라집니다.
- 관리 IWA: 관리 기능 (정책 기반 고정 및 다운그레이드 포함)은 Chrome 133부터 사용할 수 있습니다.
- 관리되지 않는 (사용자 설치) IWA: 사용자 대상 기능 (예: 수동 채널 선택)은 Chrome 150부터 사용할 수 있습니다.
세션 유형 호환성
업데이트 채널, 버전 고정 등 모든 버전 관리 기능은 모든 ChromeOS 세션 유형과 완전히 호환됩니다. 여기에는 다음이 포함됩니다.
- 표준 관리 사용자 세션
- 관리 게스트 세션 (MGS)
- 전용 키오스크 모드 환경
채널 업데이트
업데이트 채널을 사용하면 개발자가 별도의 배포 및 테스트 잠재고객을 위해 특정 애플리케이션 빌드를 세그먼트화할 수 있습니다. 채널을 구성하려면 애플리케이션 업데이트 매니페스트 내 각 버전 항목에 선택적 채널 배열 필드를 추가합니다. 이러한 채널 이름은 고정된 플랫폼 키워드 (예: canary 또는 stable)로 제한되지 않으며, 대신 소문자 ASCII 영숫자 문자열 (하이픈 또는 밑줄을 포함할 수 있지만 공백은 없음)로 형식을 지정해야 하는 임의의 개발자 정의 식별자입니다.
버전 항목에서 채널 필드를 완전히 생략하면 Chrome에서는 기본적으로 'default' 채널로 사용 가능 여부를 설정합니다. 궁극적으로 관리 정책에 지정된 채널 이름은 매니페스트에 정의된 문자열과 정확히 일치해야 합니다. 오타나 구성 불일치가 있으면 적합한 버전이 식별되지 않아 해당 클라이언트의 업데이트가 중지됩니다.
매니페스트 구성
채널을 구성하려면 웹 앱 매니페스트의 각 버전 항목에 선택사항인 channels 배열을 추가합니다.
다음은 고려해야 할 몇 가지 사항입니다.
- 채널 매핑: 버전 항목이
channels배열을 정의하는 경우 해당 버전은 지정된 채널에만 설치할 수 있습니다. - 기본 대체: 버전 항목에서
channels필드를 완전히 생략하면 Chrome은 해당 버전이default채널에만 속한다고 가정합니다. - 정확한 문자열 일치: 클라이언트 측 정책 구성에 지정된 채널 이름은 업데이트 매니페스트에 정의된 문자열과 정확히 일치해야 합니다(대소문자 구분). 타겟팅된 채널 이름과 일치하는 버전이 없으면 앱에서 적합한 업데이트를 찾지 못합니다.
매니페스트 업데이트 예시
다음 예는 여러 출시 채널을 지원하는 업데이트 매니페스트를 보여줍니다.
{
"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"
}
]
}
이 매니페스트에 따라 타겟팅된 채널별로 다음 버전을 사용할 수 있습니다.
- default:
0.2.0,0.4.0(명시적 채널이 없고 기본값으로 설정됨) - delta:
0.1.0,0.2.0,0.3.0 - 베타:
0.3.0
IWA 업데이트 엔진은 앱의 업데이트 매니페스트 내에서 채널 필드를 찾아 특정 출시 채널 타겟팅을 지원합니다.
고정 중인 버전
규정 준수 수준이 높거나 안정성이 높은 엔터프라이즈 환경에서 관리자는 기기가 비즈니스에 중요한 소프트웨어의 정확한 버전을 실행하는지 확인해야 합니다. 버전 고정을 사용하면 관리자가 IWA를 특정 버전에 고정하여 이후의 모든 백그라운드 업데이트를 중지할 수 있습니다. 이를 통해 기업은 안정적인 구성을 유지하고 엄격한 내부 또는 업계 규정을 준수하는 매우 안정적인 방법을 제공받을 수 있습니다.
특정 출시 빌드에서 분리형 웹 앱 (IWA)을 고정하려면 엔터프라이즈 관리자가 IsolatedWebAppInstallForceList 정책 내에서 pinned_version 속성을 구성하면 됩니다. 이 기능은 주로 표준 IWA 설치 워크플로에 따라 애플리케이션의 세부정보 패널에 있는 Google 관리 콘솔의 대화형 UI 컨트롤을 통해 관리되지만, 관리자는 원시 JSON 구성을 사용하여 이러한 정책 값을 직접 배포할 수 있는 유연성도 유지합니다. 관리자가 유효한 버전 문자열을 타겟팅하면 Chrome에서 명시적 패키지를 가져오고 후속 자동 전달 업데이트를 모두 차단합니다.
특수 동작 및 제약 조건
- 업데이트 재개 (고정 해제): 자동 업데이트를 복원하려면
pinned_version속성을 삭제하거나 값을 최신 타겟 버전으로 변경합니다. - 기본적으로 다운그레이드 없음:
pinned_version을 현재 설치된 버전보다 낮은 버전으로 설정해도allow_downgrades이 명시적으로 사용 설정되지 않는 한 롤백이 트리거되지 않습니다. - 사용할 수 없는 고정 대상: 구성된
pinned_version이 지정된 업데이트 채널에 없거나 설치된 버전보다 오래된 경우(다운그레이드 사용 중지됨) Chrome은 현재 설치된 버전을 유지하고 추가 업데이트를 차단합니다. - 신규 배포: 관리 기기에 IWA가 아직 설치되어 있지 않고 지정된 pinned_version을 가져올 수 없거나 업데이트 매니페스트에서 누락된 경우 IWA가 설치되지 않습니다.
버전 다운그레이드
새로 배포된 업데이트로 인해 심각한 버그나 취약점이 발생하면 관리자가 기기를 이전의 안정적인 상태로 롤백해야 할 수 있습니다. Chrome에서는 이미 설치된 관리 IWA를 하위 버전으로 다운그레이드할 수 있습니다. 이전에는 순방향 업데이트만 허용되었기 때문에 플랫폼에서 사용할 수 없었던 기능입니다.
다운그레이드는 다음 정책 조건이 모두 충족되는 경우에만 가능합니다.
pinned_version이 유효한 이전 버전으로 설정되어 있습니다.allow_downgrades가 명시적으로 true로 설정됩니다.
다운그레이드 작동 방식
- 트리거 메커니즘: 롤백은 정기 업데이트 확인 주기 (4~6시간마다 실행됨) 중에 처리됩니다.
- 내부: Chrome은 업데이트 매니페스트에 지정된 이전 웹 번들 (.swbn)을 사용하여 IWA를 완전히 재설치합니다.
채널 전환 로직
정책을 사용하여 앱의 타겟 채널을 전환할 때 업데이트 엔진은 다음 특정 동작을 따릅니다.
시나리오 A: 이전 버전이 있는 채널로 전환
- 다운그레이드가 허용되는 경우: pinned_version이 타겟 채널의 이전 버전과 일치하고
allow_downgrades이 true이면 롤백이 발생하고 로컬 사용자 데이터가 삭제됩니다. - 다운그레이드가 허용되지 않는 경우: 다운그레이드가 발생하지 않습니다. 기기는 현재 설치된 상위 버전을 유지하며 새로 선택한 채널에서 새 버전을 사용할 수 있게 될 때만 업데이트됩니다.
시나리오 B: 동일한 버전의 채널로 전환
- 변경사항 없음: 새로 선택한 채널이 현재 설치된 버전 번호와 동일한 버전 번호를 가리키는 경우 Chrome은 설치된 번들을 수정하지 않습니다.
- 바이트 단위 ID 원칙: 개발자는 여러 채널에서 동일한 버전 번호가 바이트가 일치하는 동일한 코드 서명을 포함하도록 보장해야 합니다. 채널 전반에서 동일한 버전 문자열로 서로 다른 코드베이스를 배포하면 예기치 않은 불규칙한 애플리케이션 상태가 발생할 수 있습니다.
관리 정책 구성
엔터프라이즈 버전 관리는 IsolatedWebAppInstallForceList 정책 스키마를 사용하여 중앙 집중식 Google 관리 콘솔 플랫폼으로 시행됩니다. 이러한 설정은 관리 콘솔의 UI 컨트롤을 통해 직접 관리하거나 원시 JSON 정책 구성을 사용하여 배포할 수 있습니다.
다음 관리 정책 구성 예시에서는 업데이트 채널, 버전 고정, 다운그레이드를 보여줍니다.
정책 값 표현
[
{
"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
}
]
스키마 매개변수 설명
channel(문자열, 선택사항): 업데이트 매니페스트에서 이 채널에 할당된 버전만 평가하도록 Chrome에 지시합니다. 생략하면 Chrome에서 'default' 채널을 평가합니다.pinned_version(문자열, 선택사항): 지정된 버전 문자열로 기기를 명시적으로 잠급니다. 이후 자동 백그라운드 업데이트가 차단됩니다.allow_downgrades(불리언, 선택사항): 롤백 기능을 사용 설정합니다. true이고 유효한 이전pinned_version와 페어링된 경우 Chrome에서 다운그레이드 재설치를 트리거합니다. 경고: 이 매개변수를 true로 설정하면pinned_version필드가 생략되더라도 모든 표준 전달 업데이트가 차단됩니다.
비관리 (사용자 설치) IWA (150부터)
관리되지 않고 사용자가 설치한 분리형 웹 앱의 경우 버전 관리는 수동 사용자 상호작용으로 작동합니다.
설치 번들 ──► 사용자가 채널 선택 ──► 선택한 채널에 대한 자동 확인
자동 업데이트의 매니페스트 기본 요건
사용자가 설치한 IWA가 백그라운드에서 자동 주기적 업데이트를 확인하고 수신하려면 앱의 로컬 웹 앱 매니페스트 (번들 내에 /.well-known/manifest.webmanifest에 패키징된 메타데이터)에 유효한 update_manifest_url 필드가 있어야 합니다.
이 URL이 애플리케이션의 로컬 매니페스트 파일에서 누락되면 관리되지 않는 업데이트 엔진이 백그라운드 검사를 실행하지 않으며 애플리케이션이 초기 설치 버전에서 영구적으로 고정됩니다.
수동 채널 선택
관리되지 않는 IWA의 초기 설치 중에 브라우저는 업데이트 매니페스트를 확인하고 개발자가 여러 채널을 구성한 경우 사용 가능한 채널 옵션('안정화', '베타' 등)을 사용자에게 직접 표시합니다.
주요 수명 주기 규칙
- 첫 설치 출처: 설치 시 사용자가 선택한 채널과 관계없이 초기 설치는 항상 제공된 설치 번들 내에 패키징된 파일을 배포합니다.
- 후속 업데이트: 설치 후 향후 업데이트는 선택한 채널에서만 쿼리됩니다. 설치된 버전보다 높은 버전이 타겟팅된 채널에 게시된 경우에만 앱이 업데이트됩니다.
- 채널 전환: 설치 후 다른 업데이트 채널로 전환하려면 사용자가 IWA를 제거하고 다시 설치해야 하며, 설치 흐름 중에 선택한 채널을 선택해야 합니다.
관리형 배포 테스트 방법
Chrome Enterprise 관리 콘솔을 통해 기기를 관리하거나 정책을 직접 구성하는 관리자의 경우:
- 조직 설정에서 앱 세부정보 패널로 이동합니다.
- 구성 속성을 적용하여 고정 및 채널 타겟을 테스트합니다. 이러한 컨트롤은 표준 사용자 세션, 관리 게스트 세션 (MGS), 키오스크와 완전히 호환되므로 모든 타겟 배포 환경에서 동작을 확인할 수 있습니다.
- 업데이트 확인을 로컬로 검사하려면 테스트 클라이언트에서
chrome://web-app-internals로 이동하여 업데이트 확인을 수동으로 강제 실행하고 수신되는 매니페스트 패킷을 분석합니다.
결론
분리형 웹 앱의 보안 아키텍처는 개발자에게 권한을 부여하면서 애플리케이션 수명 주기 동작에 대한 엄격한 예측 가능성과 제어 기능을 유지하도록 설계되었습니다. 개발자와 IT 관리자는 Chrome의 버전 관리 기능을 활용하여 엄격한 규정 준수 표준 및 운영 목표에 부합하는 강력한 배포 파이프라인을 구축할 수 있습니다.
애플리케이션의 업데이트 전략을 설계하고 관리할 때는 다음 핵심 원칙을 염두에 두세요.
- 프로그레시브 채널 사용: 채널 (예:
beta,dev또는 맞춤 벨소리)을 업데이트하면 원격 측정 및 의견을 점진적으로 수집할 수 있습니다. 이렇게 하면 기본 채널에서 일반 사용자에게 제공되기 전에 주요 업데이트가 엄격한 검증을 거칩니다. - 안정성을 위해 고정: 구조화된 기업 환경이나 규정 준수 중심 기업 환경에서는 인증된 정확한 pinned_version에 중요 엔드포인트를 고정하여 예기치 않은 중단이나 워크플로 중단으로부터 작업을 보호합니다.
- 비상 상황에 대비한 다운그레이드: 버전 다운그레이드는 이전에는 불가능했던 강력한 수정 안전 밸브임을 인식합니다. 하지만 롤백은 완전한 재설치를 트리거하고 모든 로컬 클라이언트 스토리지 (IndexedDB, LocalStorage, 쿠키)를 삭제하므로 심각한 보안 수정에만 엄격하게 사용해야 합니다. 일반 패치의 경우 사소한 미래 지향적 업데이트를 배포하는 것이 항상 이상적인 전략입니다.
- 정책 플래그 이해: 관리 스위치를 유의하세요.
allow_downgrades를 사용 설정하면 핀이 활성 상태로 정의되지 않은 경우에도 모든 순방향 업데이트가 중지됩니다. - 바이트 단위 무결성 설정: 클라이언트가 채널 간에 전환할 때 비정상적인 애플리케이션 상태를 방지하기 위해 여러 채널에 배포된 동일한 버전 번호가 동일한 바이트 일치 번들로 매핑되는지 확인합니다.
이러한 기능을 업데이트 매니페스트 및 엔터프라이즈 정책 스키마에 직접 통합하면 분리형 웹 앱 생태계의 높은 신뢰 보장을 유지하는 안정적이고 감사 가능하며 안전한 업데이트 흐름을 보장할 수 있습니다.