이 문서에서는 Azure App Service가 OS(운영 체제) 및 런타임 소프트웨어를 업데이트하는 방법, 버전 정보를 가져오는 방법 및 새 버전으로 수동으로 업그레이드하는 방법을 설명합니다.
App Service는 PaaS(Platform-as-a-Service)이므로 Azure에서 OS 및 애플리케이션 스택을 관리합니다. 사용자는 애플리케이션 및 해당 데이터만 관리합니다. OS 및 애플리케이션 스택에 대한 더 많은 제어가 필요한 경우 Azure Virtual Machines를 사용할 수 있습니다.
App Service 사용자로서 다음과 같은 정보를 아는 것은 여전히 유용합니다.
- OS 업데이트가 적용되는 방법 및 시기.
- App Service가 중요한 제로 데이 취약성에 대해 패치되는 방법.
- 지원되는 언어 런타임이 업데이트, 추가 또는 더 이상 사용되지 않는 시기.
- 플랫폼 릴리스 채널(Linux)을 이용해 런타임 패치 업데이트 타이밍을 제어하는 방법.
- 앱을 실행하는 OS 및 런타임 버전을 확인하는 방법.
이 문서에서는 프로세스에 대한 투명성을 제공하고 보안 관련 공지 사항 및 런타임 업데이트를 계속 업데이트하는 데 도움이 됩니다. 보안상의 이유로 특정 보안 정보는 게시되지 않습니다.
OS 업데이트 방법 및 시기
Azure는 App Service 리소스를 실행하는 물리적 서버와 게스트 VM(가상 머신) 모두에 대한 OS 패치를 관리합니다. 두 컴퓨터 계층은 매월 업데이트되며 월별 패치 화요일 일정에 맞춰집니다.
이러한 업데이트는 Azure 서비스에 대한 고가용성 SLA(서비스 수준 계약)를 보장하면서 자동으로 적용됩니다. Azure App Service OS 패치는 SDP(안전 배포 관행) 및 가용성 우선 접근 방식을 따릅니다. 최신 패치는 가능한 한 빨리 적용되지만, 앱의 영향과 중단을 방지하기 위해 OS 패치가 느려지거나 일시 중지될 수 있습니다.
업데이트가 적용되는 방식에 대한 자세한 내용은 Demystifying the magic behind App Service OS updates(App Service OS 업데이트의 마법 분석)를 참조하세요.
Azure에서 중요한 취약점을 처리하는 방법
제로데이 취약점과 같은 우선순위가 높은 문제로 즉각적인 패치가 필요할 때, Azure는 개별 사례별로 업데이트를 처리합니다. 중요한 Azure 보안 공지 사항을 최신 상태로 유지하려면 Azure 보안 블로그를 참조하세요.
지원되는 언어 런타임이 업데이트, 추가 또는 더 이상 지원되지 않는 시기
지원되는 언어 런타임의 안정적인 새 주 버전, 부 버전 또는 패치 버전은 App Service 인스턴스에 주기적으로 추가됩니다. 일부 업데이트는 기존 설치를 덮어쓰고 다른 업데이트는 기존 버전과 함께 설치됩니다.
덮어쓰기 설치는 앱이 업데이트된 런타임에서 자동으로 실행됨을 의미합니다. 병렬 설치는 새 런타임 버전을 활용하기 위해 앱을 수동으로 마이그레이션해야 함을 의미합니다. 자세한 내용은 다음 섹션을 참조하세요.
참고
이 정보는 App Service 앱에 기본 제공되는 언어 런타임에 적용됩니다. 예를 들어, App Service에 업로드하는 사용자 지정 런타임은 수동으로 업그레이드하지 않으면 변경되지 않은 상태를 유지합니다.
새 패치 업데이트
.NET, PHP, Java SDK 또는 Tomcat 버전에 대한 패치 업데이트는 기존 설치를 새 버전으로 덮어쓰는 방법으로 자동으로 적용됩니다. Node.js 패치 업데이트는 주 버전 및 부 버전과 유사하게 기존 버전과 함께 설치됩니다. 새 Python 패치 버전은 기본 제공 Python 설치와 함께 사이트 확장을 통해 수동으로 설치할 수 있습니다.
새 주 버전 및 부 버전
새 주 버전 또는 부 버전은 기존 버전과 함께 설치됩니다. 앱을 수동으로 새 버전으로 업그레이드할 수 있습니다.
web.config 또는 package.json과 같은 구성 파일에서 런타임 버전을 구성한 경우 동일한 방법을 사용하여 업그레이드해야 합니다. App Service 설정을 사용하여 런타임 버전을 구성한 경우 Azure Portal에서 또는 Azure Cloud Shell에서 Azure CLI 명령을 실행하여 변경할 수 있습니다.
다음 예제에서는 지원되는 다양한 언어 런타임에 대한 Azure CLI 구성 명령을 보여 줍니다. 앱 및 <appname> 해당 리소스 그룹의 이름으로 바꿉 <groupname> 니다.
az webapp config set --net-framework-version v4.7 --resource-group <groupname> --name <appname>
az webapp config set --php-version 7.0 --resource-group <groupname> --name <appname>
az webapp config appsettings set --settings WEBSITE_NODE_DEFAULT_VERSION=~24 --resource-group <groupname> --name <appname>
az webapp config set --python-version 3.14 --resource-group <groupname> --name <appname>
az webapp config set --java-version 1.8 --java-container Tomcat --java-container-version 9.0 --resource-group <groupname> --name <appname>
참고
Node.js 예제에서는 권장 되는 타일드 구문을 사용하여 Windows 앱 Service에서 사용 가능한 최신 버전의 Node.js 24 런타임을 대상으로 합니다.
플랫폼 릴리스 채널을 이용한 런타임 패치 업데이트 타이밍 제어
참고
플랫폼 릴리스 채널 기능은 리눅스 앱 서비스 에서만 제공됩니다.
기본적으로 시스템은 런타임 패치 업데이트가 가능해지면 자동으로 적용됩니다. Linux App Service의 경우, Platform Release Channel 설정을 통해 런타임 패치 업데이트가 앱에 전달되는 주기를 제어할 수 있습니다. 이 제어는 새로운 런타임 패치가 프로덕션에 도입되기 전에 더 예측 가능하고 검증 시간을 확보하고 싶을 때 유용합니다.
이용 가능한 채널
세 가지 채널 중에서 선택할 수 있습니다:
| Channel | Description | 권장 대상 |
|---|---|---|
| Latest | 런타임 패치 업데이트가 나오는 즉시 제공해줍니다. | 최신 보안 수정 패치에 즉시 접근할 수 있는 앱들. 일반적으로 생산 작업에는 권장되지 않습니다. |
| 표준 | 업데이트는 표준 출시 주기에 맞춰 도착하여 통화성과 안정성의 균형을 맞춥니다. 이 채널이 기본 채널입니다. | 대부분의 프로덕션 앱들이요. |
| 확장 | 보통 Standard보다 한 릴리스 뒤에 머물며, 워크로드가 새로운 런타임 패치를 채택하기 전에 검증할 시간을 더 줍니다. | 새로운 런타임 패치를 받기 전에 추가 검증 시간이 필요한 생산 워크로드입니다. |
새로운 런타임 패치가 출시되면 순서대로 채널을 통과합니다: 최신 → 표준 → 확장. 이 흐름 때문에 최신 버전에서 즉시 제공되는 업데이트는 추가 검증 후 표준 에 도달하고, 추가 검증 후에는 확장(Extended)으로 전환 됩니다.
예를 들어, .NET 10의 경우 같은 시점이 다음과 같을 수 있습니다:
| Channel | .NET 버전 |
|---|---|
| 최근 | 10.0.7 |
| 표준 | 10.0.4 |
| 확장됨 | 10.0.2 |
Tip
앱에 엄격한 안정성 요구사항이 있다면, Extended 채널을 사용해 자동 런타임 패치 업데이트 빈도를 줄이세요. 앱이 최신 보안 수정을 최대한 빨리 필요로 한다면 최신 기능을 사용하세요.
플랫폼 릴리스 채널을 설정하세요
- Azure Portal에서 App Service 앱으로 이동합니다.
- 왼쪽 메뉴에서 스택 설정을 선택하세요.
- 플랫폼 릴리스 채널에서 원하는 채널을 선택하세요: 최신, 표준, 확장 채널.
- 저장을 선택합니다.
이 기능에 대한 자세한 내용은 플랫폼 릴리스 채널 블로그 공지를 참조하세요.
인스턴스 내에서 OS 및 런타임 업데이트 상태를 쿼리하는 방법
Kudu 콘솔을 사용하면 App Service 인스턴스의 OS 버전 및 런타임 버전을 쿼리할 수 있습니다. 중요한 OS 정보는 액세스가 차단되어 있습니다. 자세한 내용은 Azure App Service의 운영 체제 기능을 참조하세요.
다음 표에서는 Kudu 또는 Cloud Shell 명령을 사용하여 앱을 실행하는 Windows 및 언어 런타임 버전을 찾는 방법을 보여 줍니다. 앱 및 리소스 그룹 이름으로 <appname> 및 <groupname>을(를) 바꿉니다.
| 정보 | 찾는 위치 |
|---|---|
| Windows 버전 |
https://<appname>.scm.azurewebsites.net/Env#sysinfo을(를) 참조하세요. |
| .NET 버전 |
https://<appname>.scm.azurewebsites.net/DebugConsole에 명령 프롬프트에서 다음 명령을 실행합니다. reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"; |
| .NET Core 버전 |
https://<appname>.scm.azurewebsites.net/DebugConsole에 dotnet --version을(를) 실행합니다. |
| PHP 버전 |
https://<appname>.scm.azurewebsites.net/DebugConsole에 php --version을(를) 실행합니다. |
| 기본 Node.js 버전 |
Cloud Shell에서 다음 명령을 실행합니다. az webapp config appsettings list --resource-group <groupname> --name <appname> --query "[?name=='WEBSITE_NODE_DEFAULT_VERSION']"; |
| Python 버전 |
https://<appname>.scm.azurewebsites.net/DebugConsole에 python --version을(를) 실행합니다. |
| Java 버전 |
https://<appname>.scm.azurewebsites.net/DebugConsole에 java -version을(를) 실행합니다. |
참고
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages에 대한 정보가 저장된 레지스트리 위치 에 대한 액세스는 잠겨 있습니다.