Azure 应用服务中的 OS 和运行时修补

本文介绍如何有关应用服务中的 OS 或软件的特定版本信息。

应用服务是一种平台即服务,这意味着,Azure 会自行管理 OS 和应用程序堆栈,而你只需管理自己的应用程序及其数据。 在 Azure 虚拟机中,你能够以更高的力度控制 OS 和应用程序堆栈。 考虑到这一点,应用服务用户了解以下方面的详细信息总会有好处:

  • 如何以及何时应用 OS 更新?
  • 应用服务如何修补重大漏洞(例如零日漏洞)?
  • 应用运行哪些 OS 和运行时版本?

出于安全原因,有些具体的安全信息不会公布。 但是,文章旨在缓解安全忧虑,它会最大程度地将该过程透明化,并介绍如何获取最新的安全相关公告或运行时更新。

如何以及何时应用 OS 更新?

Azure 管理两个级别的 OS 修补:运行应用服务资源的物理服务器和来宾虚拟机 (VM)。 这两种方案会根据每月的周二修补计划更新。 这些更新会自动应用,保证达到 Azure 服务的高可用性 SLA。

有关如何应用更新的详细信息,请参阅揭示应用服务 OS 背后的秘密

Azure 如何处理重大漏洞?

严重的漏洞(例如零日漏洞)需要立即修补时,将会根据案例以高优先级处理更新。

访问 Azure 安全博客,及时了解 Azure 中的关键安全公告。

何时更新、添加或弃用受支持的语言运行时?

受支持语言运行时的新稳定版本(主要、次要或修补版本)会定期添加到应用服务实例。 一些更新会覆盖现有的安装,还有一些更新会连同现有的版本一并安装。 覆盖安装意味着应用自动在更新的运行时上运行。 并列安装意味着必须手动迁移应用才能利用新的运行时版本。 有关详细信息,请参阅以下小节之一。

注意

此处的信息适用于应用服务应用中内置的语言运行时。 例如,上传到应用服务的自定义运行时将保持不变,除非手动升级。

新的修补更新

对 .NET、PHP、Java SDK 或 Tomcat 版本所做的修补更新会通过将现有安装覆盖为最新版本来自动应用。 Node.js 修补更新将与现有版本一并安装(类似于下一部分中的主要版本和次要版本)。 新的 Python 修补程序版本可以通过站点扩展,与内置的 Python 安装一起手动安装。

新的主要版本和次要版本

添加新的主要版本或次要版本后,该版本与现有版本一并安装。 可将应用手动升级到新版本。 如果在配置文件(例如 web.configpackage.json)中配置了运行时版本,则需要使用相同的方法升级。 如果使用应用服务设置配置了运行时版本,则可在 Azure 门户中更改此版本,或者通过在 Azure CLI 中运行 Azure CLI 命令来更改此版本,如以下示例所示:

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=~14 --resource-group <groupname> --name <appname>
az webapp config set --python-version 3.8 --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>

注意

此示例使用建议的“波浪号语法”来定位 Windows 应用服务上 Node.js 16 运行时的最新可用版本。

如何在实例中查询 OS 和运行时更新状态?

尽管关键的 OS 信息已被限制访问(请参阅 Azure 应用服务中的操作系统功能),但可以使用 Kudu 控制台在应用服务实例中查询有关 OS 版本和运行时版本的信息。

下表显示了应用中运行的 Windows 和语言运行时版本:

信息 查找位置
Windows 版本 查看 https://<appname>.scm.chinacloudsites.cn/Env.cshtml(在“系统信息”下)
.NET 版本 https://<appname>.scm.chinacloudsites.cn/DebugConsole 中的命令提示符下运行以下命令:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
.NET Core 版本 https://<appname>.scm.chinacloudsites.cn/DebugConsole 中的命令提示符下运行以下命令:
dotnet --version
PHP 版本 https://<appname>.scm.chinacloudsites.cn/DebugConsole 中的命令提示符下运行以下命令:
php --version
默认的 Node.js 版本 Azure Cli 中运行下列命令:
az webapp config appsettings list --resource-group <groupname> --name <appname> --query "[?name=='WEBSITE_NODE_DEFAULT_VERSION']"
Python 版本 https://<appname>.scm.chinacloudsites.cn/DebugConsole 中的命令提示符下运行以下命令:
python --version
Java 版本 https://<appname>.scm.chinacloudsites.cn/DebugConsole 中的命令提示符下运行以下命令:
java -version

注意

访问注册表位置 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages,其中存储了有关“KB”修补的信息。该位置已被锁定。

更多资源

信任中心:安全性

Azure 应用服务中的 64 位 ASP.NET Core