你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 应用服务 上的 托管实例 是一种基于计划范围的托管选项,适用于需要操作系统(OS)定制、可选私有网络以及与 Azure 服务安全集成的 Windows Web 应用。
- 托管标识
- 配置(安装)脚本
- 存储装载
- 注册密钥
- 远程桌面协议 (RDP) 访问
重要
托管实例 通常在部分地区支持 Windows 网页应用,且仅限于 Pv4 和 Pmv4 定价方案。 Microsoft 会随着时间推移增加更多区域。 托管实例不支持Linux和容器。
(向应用服务计划)添加托管标识
计划级托管标识可为发生在平台层的基础结构操作启用身份验证,例如在启动期间访问 Azure 存储的配置(安装)脚本,以及用于存储挂载和注册表项适配器的密钥保管库访问。
在以下场景中,需要应用服务计划的托管标识:
- 从 Azure 存储安全地访问和检索配置脚本。
- 访问密钥库以提供用于存储装载和注册表项适配器的凭据和值。
请参阅管理用户分配的托管标识,以创建托管标识。
将托管标识添加到托管实例计划:
- 在 Azure 门户中转到你的托管实例。
- 选择“标识”>“用户分配的”。
- 选择 + 添加。
- 选择“订阅”和“托管标识”。
- 选择“添加”,将标识添加到计划中。
添加配置(安装)脚本
配置(安装)脚本不是必须的。 当你的应用需要安装依赖或配置操作系统级功能时,可以使用脚本。
配置(安装)脚本在实例启动时运行,以应用持久的自定义。 例如组件对象模型(COM)注册、Microsoft/Windows安装程序(MSI)安装,以及启用Windows角色/功能。 对必须在实例重启后仍然保留的更改,请使用配置脚本。 使用RDP进行诊断,而不是持久配置。
使用配置(安装)脚本需满足以下条件:
- 一个分配给应用服务计划的托管标识
- 一个存储帐户以及包含配置(安装)脚本包 (zip) 的 Blob 容器。
- 一个根目录包含
Install.ps1(入口点)的 zip 文件 -
存储帐户、容器或资源组上的
Storage Blob Data Reader角色
添加配置脚本:
在 Azure 门户中转到托管实例应用服务计划。
选择“配置”>“常规设置”。
在“配置脚本”部分,开始配置脚本。
设置 价值 存储帐户 选择存储帐户 集装箱 输入容器的名称 Zip 文件 输入 zip 文件的名称 价值 验证此值是否正确 选择“应用”以保存更改。
配置脚本最佳做法
- 使脚本具有幂等性(安装前检查)。
- 防范破坏性操作(避免修改受保护的 Windows 系统目录)。
- 错开大量安装,以减少启动延迟。
最小 zip 结构的示例:
Install.ps1
myInstallerfileNameGoesHere.msi
config.xml
示例配置脚本:
# Install Components, for example Crystal Reports, Control Library, Database Driver
$ComponentInstaller = "myInstallerFileNameGoesHere.msi"
try {
$Component = Join-Path $PSScriptRoot $ComponentInstaller
Start-Process $Component -ArgumentList "/q" -Wait -ErrorAction Stop
} catch {
Write-Error "Failed to install ${ComponentInstaller}: $_"
exit 1
}
配置存储装载
存储挂载提供持久的外部存储,比如 Azure 文件存储,你的应用可以访问这些存储。 对于需要共享文件系统访问的旧版代码,使用存储挂载。 不要用存储挂架来存放秘密;改用密钥保管库吧。 本地存储是临时的,但Azure 文件存储和自定义UNC挂载会在重启后保持不变。
需要满足以下条件才能配置存储装载:
- 托管标识(用于密钥库访问)
- 密钥保管库 机密(凭据源)
配置存储装载:
- 在 Azure 门户中转到你的托管实例。
- 选择“配置”“装载”。>
- 选择“+ 新建存储装载”。
提供以下详细信息以配置存储装载:
| 设置 | 价值 |
|---|---|
| Name | 输入装载名称 |
| 存储类型 | Azure 文件存储、自定义存储或本地存储(临时存储) |
| 存储帐户 | 选择或输入存储帐户 |
| 文件共享 | 选择文件共享 |
| 价值 | 选择密钥保管库 |
| 机密 | 选择密钥保管库机密 |
| 装载驱动器号 | 选择驱动器号路径 |
可以将外部存储装载到托管实例。 装载的存储在重启后持久且可从应用的文件系统访问。
使用 Azure 文件存储配置存储装载
配置 Azure 文件存储的存储装载:
- 创建一个 Azure 存储帐户和一个 Azure 文件存储共享。
- 将连接凭据作为机密存储在 密钥保管库 中。
支持的机密内容:(例如:
DefaultEndpointsProtocol=...;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net) - 在托管实例中添加装载(Azure 门户或 ARM/Bicep/Terraform)。
小窍门
通过 Azure RBAC 和 共享 ACL 强制实施共享级权限,以提高安全性。
使用自定义 UNC 配置存储装载
使用装载来访问托管在其他位置的 SMB 共享(本地、虚拟机或非 Microsoft)。 确保有网络连接(虚拟网络集成/专用终结点/防火墙)。
- 如果需要凭据,请使用以下格式将其存储在 密钥保管库 机密中:
username=<user>,password=<password>- 避免域管理员帐户,使用最低特权服务标识。
- 在托管实例中添加装载。
配置注册表项
部分应用程序依赖于从 Windows 注册表读取的值。 使用注册表项适配器,可以创建注册表项,并使用 Azure 密钥保管库 中的机密作为值。
需要满足以下条件才能配置注册表项:
- 托管标识(用于密钥库访问)
- 密钥保管库 机密(凭据源)
配置注册表项:
转到“配置”>“注册表项”。
选择 + 添加。
设置 价值 路径 输入注册表路径 保管库 输入现有保管库名称 机密 选择或输入密钥保管库机密 类型 字符串或 DWORD 选择“添加”,添加注册表项。
注意
修改系统关键型注册表路径时要谨慎。 不正确的更改可能会影响实例的稳定性。
配置 RDP (Bastion) 访问
快速入门:自动部署 Azure Bastion 可让你通过远程桌面协议(RDP)安全地连接到 VM 实例。 通过 Azure Bastion 的 RDP 主要用于诊断和故障排除。 使用配置脚本来进行持久性更改。
需要以下资源才能进行 Bastion/RDP 访问:
- 托管实例必须集成虚拟网络
- 目标虚拟网络上的 Azure Bastion 主机
- 必须允许端口 3389 从 Bastion 子网 NSG 到应用服务计划子网 NSG
配置 Bastion:
- 转到“配置”>“Bastion/RDP”。
- 验证“虚拟网络”是否已连接。
- 选择“允许远程桌面(通过 Bastion)”。
注意
不要只通过 RDP 来应用手动安装程序或配置更改。 回收或创建配置偏移时,更改将丢失。
常见问题 (FAQ)
- Azure 应用服务上的托管实例上运行的是什么操作系统 (OS)?
- 我可以启用更多 Windows 角色和功能吗?
- Azure 应用服务上的托管实例接收平台和应用程序堆栈定期更新吗?
- Azure 应用服务上的托管实例上安装了哪些编程语言?
- 配置(安装)脚本有什么限制?
- 在什么权限级别执行配置(安装)脚本?
- 操作员在使用 Bastion 连接实例时,拥有哪些角色权限?
- 如何使用我的配置(安装)脚本或注册表/存储适配器来排查出现的故障?
- Azure 应用服务上的托管实例辅助角色实例的可寻址内存是什么?
- 我应该使用哪一个 Azure 存储服务来上传配置(安装)脚本?
- 配置(安装)脚本的命名和格式是否存在限制?
- 可上传为 zip 文件的一部分的依赖项有大小限制吗?
- 在应用服务计划适配器上添加或删除托管实例是否会重启计划实例?
- 我的托管实例计划有多个实例,我可以只重启一个实例吗?
- 应用服务计划上的托管实例有多个 Web 应用程序,我可以只重启一个 Web 应用程序吗?
- 我可以在应用服务计划上的托管实例中将托管标识分配给 Web 应用程序吗?
- 我可以为应用服务计划上的托管实例创建的适配器存在数量限制吗?
Azure 应用服务上的托管实例上运行的是什么操作系统 (OS)?
Windows Server 2022。
我可以启用更多 Windows 角色和功能吗?
可以,通过配置脚本启用。 然而,你无法配置那些从未来版本 Windows Server 中移除的功能。
Azure 应用服务上的托管实例接收平台和应用程序堆栈定期更新吗?
接收。实例接收例行的平台更新和维护。 该服务还定期更新预装的应用栈。 你负责通过配置脚本维护你安装的任何组件。
Azure 应用服务上的托管实例上安装了哪些编程语言?
该服务包含Microsoft .NET 3.5、4.8 和 Microsoft .NET 8.0 框架。 如果你需要其他运行时,可以用配置脚本安装。 Azure 应用服务 不会维护额外的运行时作为平台的一部分。
配置(安装)脚本有什么限制?
配置(安装)脚本有哪些限制?
配置(安装)脚本可安装依赖项,启用角色和功能,以及自定义操作系统。 然而,该服务不支持破坏性操作(例如删除 Windows\\System32),因为它们会影响实例稳定性。
在什么权限级别执行配置(安装)脚本?
使用管理员权限执行配置(安装)脚本,以允许安装和配置系统级组件。
操作员在使用 Bastion 连接实例时,拥有哪些角色权限?
通过 Bastion 连接的操作员在会话期间具有管理员权限。
如何使用我的配置(安装)脚本或注册表/存储适配器来排查出现的故障?
通过Bastion连接的操作员在会话中拥有 管理员 权限。 你可以在机器根部找到适配器日志,或者它们被登录在应用服务平台日志中。
可以在计算机的根目录中找到适配器日志,或者它们已记录在应用服务平台日志中。
Azure 应用服务上托管实例的辅助角色实例的可寻址内存是什么?
Azure 应用服务 工作器实例上 托管实例 的可寻址内存大小因你选择的定价计划而异。 下表列出了 托管实例 工作实例的可寻址内存。
| 定价计划 | 核心数 | 内存 (MB) |
|---|---|---|
| P0v4 | 1 | 2048 |
| P1v4 | 2 | 5952 |
| P2v4 | 4 | 13440 |
| P3v4 | 8 | 28672 |
| P1Mv4 | 2 | 13440 |
| P2Mv4 | 4 | 28672 |
| P3Mv4 | 8 | 60160 |
| P4Mv4 | 16 | 121088 |
| P5Mv4 | 32 | 246016 |
我应该使用哪一个 Azure 存储服务来上传配置(安装)脚本?
使用 Azure 存储 Blob 服务来上传脚本和需要的依赖项。
配置(安装)脚本的命名和格式是否存在限制?
是,脚本必须命名为 Install.ps1。 仅支持 PowerShell。 确保将配置(安装)脚本和依赖项作为一个 .zip 文件上传。
上传为 zip 文件一部分的依赖项有大小限制吗?
不强制实施大小限制。 请记住,依赖项的总大小会影响实例预配时间。
在应用服务计划适配器上添加或删除托管实例是否会重启计划实例?
是的,添加或编辑 托管实例 计划适配器(配置脚本、存储或注册表)会重启底层实例,并影响所有部署到计划中的 Web 应用。 需要重启实例才能使配置更改生效。
我的托管实例计划有多个实例,我可以只重启一个实例吗?
可以,浏览到托管实例,在左侧菜单中选择“实例”。 然后选择实例名称旁的“重启”。
应用服务计划上的托管实例有多个 Web 应用程序,我可以只重启一个 Web 应用程序吗?
可以,浏览到应用的“概述”页面,然后选择“重启”。
我可以在应用服务计划上的托管实例中将托管标识分配给 Web 应用程序吗?
是的,你可以向托管实例中的 Web 应用程序分配不同的托管标识。 请遵循托管标识指南
我可以为应用服务计划上的托管实例创建的适配器存在数量限制吗?
我在 App Service 计划中为 托管实例 创建的适配器数量有限制吗?
没有,存储或注册表适配器无数量限制。 你只能为应用服务计划上的托管实例创建一个配置(安装)脚本适配器。 增加适配器数量可能会增加实例配置时间。