本文說明 Azure App 服務 如何更新作業系統 (OS) 和執行階段軟體、如何取得版本資訊,以及如何手動升級至新版本。
App Service 是平台即服務 (PaaS),因此 Azure 會為您管理作業系統和應用程式堆疊。 您只管理應用程式及其資料。 如果您需要進一步控制作業系統和應用程式堆疊,您可以使用 Azure 虛擬機器。
對於身為 App Service 使用者的您,了解下列資訊仍然很有幫助:
- 如何及何時套用作業系統更新。
- 如何針對重大和零時差弱點修補 App Service。
- 何時更新、新增或棄用支援的語言執行階段。
- 如何透過平台發佈頻道(Linux)控制執行時補丁更新時間。
- 如何找出正在執行您應用程式的作業系統和執行階段版本。
本文提供透明的程序,協助您隨時掌握安全性相關公告及執行階段更新的最新資訊。 基於安全性理由,我們不會發佈某些特定的安全性資訊。
OS 更新的套用方式和時機?
Azure 會管理實體伺服器和執行 App Service 資源的客體虛擬機器 (VM) 兩者的作業系統修補。 這兩個機器層級每月更新一次,與每月的週二修補程式日排程保持一致。
系統會自動套用這些更新,同時保證 Azure 服務的高可用性服務等級協定 (SLA)。 Azure App 服務 作業系統的修補遵循安全部署實務 (SDP) 和可用性優先方法。 系統會盡快套用最新的修補程式,但為避免影響和中斷應用程式,作業系統修補有時可能會變慢或暫停。
如需更新套用方式的詳細資訊,請參閱揭露 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 入口網站中或藉由在 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 應用程式服務 。
預設情況下,系統會在更新可用時自動套用執行時補丁更新。 對於 Linux 應用程式服務, 平台發佈頻道 設定讓你可以控制執行時補丁更新傳遞給應用程式的節奏。 當你希望在生產環境中採用新的執行時補丁前,有更多可預測性和驗證時間,這種控制非常實用。
可用頻道
可從三個頻道中選擇:
| Channel | Description | 建議用於 |
|---|---|---|
| Latest | 一有更新就會立即提供執行時補丁更新。 | 需要立即取得最新安全修補的應用程式。 一般不建議用於生產工作負載。 |
| Standard | 更新依標準發布節奏進行,平衡時效與穩定性。 這個頻道是預設頻道。 | 大多數生產應用程式都是這樣。 |
| 延伸版 | 通常會比標準慢一個版本,讓工作負載有更多時間驗證,然後再採用新的執行時補丁。 | 生產工作負載需要額外驗證時間,才能取得新的執行時補丁。 |
當新的執行時補丁釋出時,會依序在各頻道中流動: 最新 → 標準 → 擴充。 這種流程意味著,在 最新 版本上立即可用的更新,經過進一步驗證後會達到 標準 ,然後再經過額外驗證 後再升級為延伸 。
例如,對於 .NET 10,同一時間點可能如下:
| Channel | .NET 版本 |
|---|---|
| Latest | 10.0.7 |
| 標準 | 10.0.4 |
| 延長 | 10.0.2 |
Tip
如果你的應用程式有嚴格的穩定性要求,可以使用 Extended 頻道來降低自動執行時補丁更新的頻率。 如果你的應用程式需要盡快更新最新安全修正,請使用 Latest。
設定平台釋放通道
- 在 Azure 入口網站中,移至您的 App Service 應用程式。
- 在左側選單中,選擇 堆疊設定。
- 在 平台發佈頻道中,選擇你想要的頻道: 最新、 標準或 擴展。
- 選取 [儲存]。
欲了解更多此功能資訊,請參閱 平台發布頻道部落格公告。
如何在執行個體上查詢 OS 和執行階段更新狀態?
Kudu 主控台可讓您查詢 App Service 執行個體的作業系統版本和執行階段版本。 重要的作業系統資訊會鎖定,無法存取。 如需詳細資訊,請參閱 Azure App 服務 上的作業系統功能。
下表顯示如何使用 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 (安全性佈告欄資訊的儲存位置) 會鎖定,無法存取。