Azure App 服務 上的 受控執行個體 是一種針對需要作業系統(OS)自訂、可選私有網路及與 Azure 資源安全整合的 Windows 網頁應用程式的方案範圍的託管選項。 它針對舊有或依賴基礎設施的工作負載(元件物件模型(COM)、登錄檔、Microsoft/Windows 安裝程式(MSI)),同時保留 App Service 的受管理修補、擴展、診斷及身份特性。
這很重要
受控執行個體 通常在特定地區的 Windows 網頁應用程式中提供,且僅限於 Pv4 和 Pmv4 的定價方案。 Microsoft 會隨著時間增加更多區域。 受控執行個體 不支援 Linux 和容器。
透過 GitHub Copilot 現代化遷移 .NET 應用程式
GitHub Copilot 針對 .NET 的現代化提供一套代理化工作流程,用於評估、修復、驗證及部署 .NET 應用程式到 Azure。 在 Visual Studio Code 中,你可以將 受控執行個體 作為需要作業系統層級自訂的 Windows 應用程式的評估與部署目標。
Note
GitHub Copilot 現代化中的 受控執行個體 評估與部署目標體驗通常可在 Visual Studio Code 中取得。 Visual Studio 中對 受控執行個體 目標的支援預計將先於 Visual Studio Insiders 中推出,並在驗證後正式開放生產環境。
將評估目標設定為 AppServiceManagedInstance.Windows,以接收 受控執行個體 專屬的發現和建議。 接著,您可以使用現代化代理程式來:
- 評估應用程式代碼、設定及相依性以提升遷移準備度。
- 檢視並套用建議的遷移任務。
- 驗證建置、測試及修復依賴。
- 準備 Azure 資源並將應用程式部署到 受控執行個體。
若要開始,請參閱使用 GitHub Copilot 進行現代化的 .NET 專案評估與遷移。 關於目標設定與部署細節,請參閱「與應用程式評估合作」及「專案部署至Azure」。
主要功能
下表總結了受管理實例所提供的主要功能:
| 類別 | 能力 |
|---|---|
| 網路隔離 | 計畫層級虛擬網路整合(可選,建立後可新增): • 私人端點與自訂路由 • 網路安全群組(NSG)支援、NAT 閘道及路由表 • 私有網域名稱伺服器(DNS)用於內部名稱解析 |
| 計算隔離 | • 計畫範圍內的隔離,完全控制網路邊界 • 專用運算以實現可預測的效能 |
| 自訂元件支援 | PowerShell 安裝腳本用於: • COM組成部分 • 登錄檔與持久登錄檔值 • 網際網路資訊服務(IIS 伺服器)配置與存取控制列表(ACL) • MSI 安裝程式 • 非 Microsoft 元件與 Windows 服務 • 全域組件快取 (GAC) 安裝 • Windows 功能(MSMQ 用戶端、伺服器角色) • 自訂架構(客戶管理的補丁) |
| 登錄檔轉接器 | Azure Key Vault 支援的登錄金鑰安全設定 |
| 記憶體彈性 | • Azure 檔案與 金鑰保存庫 整合 • UNC路徑與網路共享存取權 • 腳本磁碟映射 • 本地暫存儲存(2 GB,非持久) |
| 受管理的識別 | • 計畫層級的系統指派與使用者指派身份 • Azure資源的無鑰匙認證 |
| 作業效率 | 平台管理負載平衡、修補與擴展: • 水平自動縮放(所有實例) • 垂直比例(僅限 Pv4/Pmv4) |
| 遠端桌面通訊協定 | • 透過 Azure Bastion 的即時 RDP(需要虛擬網路) • 存取日誌、事件檢視器及 IIS 管理器 |
| 安全性和驗證 | • TLS 及具備憑證綁定的自訂網域 • 使用 Microsoft Entra ID 進行 App Service 認證 |
| 執行時支援 | • 預裝:.NET Framework 3.5、4.8 及 .NET 8 • 透過安裝腳本自訂執行環境 |
| CI/CD 整合 | GitHub Actions、Azure DevOps、zip 部署、封裝部署、run-from-package |
設定選項
受管理實例透過以下方式提供計畫層級的配置:
配置(安裝)腳本:將壓縮的PowerShell腳本上傳到Azure 儲存體(透過管理身份存取)。 腳本會在啟動時執行以進行持久設定。
- 腳本是可選的。 當你的應用程式需要安裝相依性或設定作業系統層級功能時,請使用腳本。
- RDP 會話變更是暫時性的,且在重啟或平台維護後會遺失。
- 腳本執行日誌會出現在 App Service 主控台日誌中,並可串流至 Azure 監視器。
Windows 登錄檔介面卡:在方案層級定義登錄檔金鑰,並將秘密值儲存在 Azure Key Vault 中。
儲存體掛載:使用自訂磁碟機代號與 Azure 檔案儲存體或自訂 UNC 路徑來對應儲存體。 本地儲存空間也有,但容量限制為 2 GB,且重啟後不會持續存在。
RDP 存取:透過 Azure Bastion (需虛擬網路整合) JIT 遠端桌面。
記錄和疑難排解
- 受管理實例的日誌是在 App Service 方案層級建立,而非應用程式層級。
- 儲存掛載和登錄配接器事件會被記錄在 App Service 平台日誌中。 這些日誌可以透過 Logstream 串流,或整合至 Azure 監視器。
- 設定(安裝)腳本日誌可在 App Service 主控台日誌及實例上取得(例如 C:\InstallScripts scriptName<>\Install.log)。 使用 Logstream 或 Azure 監視器 來進行集中存取。
- RDP 存取需要 Azure Bastion 與虛擬網路整合。 建議使用 IIS Manager 和事件檢視器進行診斷。
選擇合適的主機方案
需要時使用受管理實例:
舊版 Windows 相容性
- COM 元件、登錄檔修改與 MSI 安裝程式
- IIS 管理員存取與診斷用的 RDP
- 透過 UNC 路徑或磁碟映射進行網路共享
遷移時需要最少重構
- 舊版 .NET Framework 應用程式的「提升與改善」
- 逐步現代化,無需完全重寫
- 計畫層級的網路隔離以滿足合規性需求
Windows 專屬自訂
- 啟動設定用的 PowerShell 安裝指令碼
- Windows 功能(例如 MSMQ 或伺服器角色)
- GAC 中的自訂非 Microsoft 元件
需要時使用標準應用程式服務:
現代雲端原生開發
- 多語言應用程式支援(Python、Node.js、Java、PHP 等)
- Linux 或容器化工作負載
- 平台管理基礎架構,無需作業系統自訂
- 更廣泛的執行時與框架選項
需要時使用應用服務環境(ASE):
企業級隔離
- 完全隔離、專用基礎設施
- 支援 100+ 應用程式的部署
- 完整的網路邊界控制
目前的限制
| 限度 | 詳細資訊 |
|---|---|
| 平台 | • 僅限 Windows(無 Linux/容器) 在 ASE 中無法提供 |
| SKU | 僅限 Pv4 和 Pmv4 |
| 地區 | 東亞、美國中西部、北歐、美國東部、澳洲東部、中印度、南印度 |
| 驗證 | 僅支援 Entra ID 和 Managed Identity,不支援網域加入 / NTLM / Kerberos |
| 工作負載 | 僅限網頁應用程式(不包含 WebJobs、TCP/NetPipes) |
| Configuration | 持續變更需要腳本(RDP 僅用於診斷) |
最佳做法
- 使用設定腳本(安裝腳本)來進行持久設定。
- 利用 金鑰保存庫 集中管理秘密。
- 在暫存環境中驗證日誌記錄設定。
- 在生產推出前分階段測試設定 (安裝) 指令碼。
- 將網路規則與相依性清單對齊。
- 使用 適用於雲端的 Microsoft Defender 監控以偵測威脅。