Azure App Service 上的託管實例(預覽版)是一種針對需要作業系統(OS)自訂、可選私有網路及與 Azure 資源安全整合的 Windows 網頁應用程式的方案。 本文說明如何在關鍵區域配置受管理實例:
- 受管理的識別
- 配置(安裝)腳本
- 儲存支架
- 登錄機碼
- 遠端桌面協定(RDP)存取
這很重要
Managed Instance 目前處於預覽階段,僅支援部分地區的 Windows 網頁應用程式,且僅限於 Pv4 和 Pmv4 定價方案。 更多地區即將推出。 Linux 和容器系統不被支援。
新增一個受管理身份(到 App Service 方案中)
計畫層級的受管理身份可為平台層發生的基礎設施操作提供認證,例如設定(安裝)腳本在啟動時存取 Azure 儲存裝置、從 Key Vault 拉取秘密的登錄介面卡,以及將 Azure 檔案進行認證的儲存掛載。 這些元件是方案中多個應用程式共用的資源。 例如,計畫層級身份允許受管理實例對基礎設施元件進行一次認證,而個別應用程式則為應用程式特定資源(如資料庫與應用程式秘密)保留自己的身份。
在以下情境下,應用程式服務計畫的管理身份是必要的:
- 以安全存取並檢索 Azure Storage 中的設定腳本。
- 存取金鑰庫以提供儲存掛載與登錄金鑰適配器的憑證與值。
請參閱 管理使用者指派的受管理身份 以建立受管理身份。
要將受管理身份加入受管理實例計畫:
- 請前往 Azure 入口網站中的管理實例。
- 選擇「使用者已指派的>」。
- 選取 [+ 新增]。
- 選擇 訂閱 並管理 身份。
- 選擇 新增 以將身份加入計畫。
新增配置(安裝)腳本
設定(安裝)腳本會在實例啟動時執行,以套用持久自訂。 範例包括元件物件模型(COM)註冊、Microsoft/Windows 安裝程式(MSI)安裝、網際網路資訊服務(IIS Server)設定、ACL 變更、啟用 Windows 功能、設定環境變數。
你需要以下條件才能使用設定(安裝)腳本:
- 指派給 App Service 計畫的管理身份
- 一個儲存帳號,裡面有 Blob 容器,裡面存放設定(安裝)腳本套件(zip)。
- 一個根節點包含(入口點)的
Install.ps1單一壓縮檔 -
Storage Blob Data Reader儲存帳號、容器或資源群組中的角色
要新增設定腳本:
請前往 Azure 入口網站的 Managed Instance App Service 計畫。
選擇 「配置>一般設定」。
在 設定腳本 區塊,先從設定你的腳本開始。
Setting 價值觀 記憶體帳戶 選取您的儲存體帳戶 容器 輸入你的容器名稱 壓縮檔 輸入壓縮檔名稱 價值觀 請確認這個數值是否正確 選擇「套用」以儲存變更。
設定腳本最佳實務
- 讓腳本成為冪次元(安裝前先檢查)。
- 保護破壞性操作(避免修改受保護的 Windows 系統目錄)。
- 錯開安裝以降低啟動延遲。
最小郵政區的範例:
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 Files),供你的應用程式存取。 用於需要共享檔案系統存取的舊有程式碼,而非秘密(使用 Key Vault)。 雖然本地(臨時)儲存也有可用,但持續變更需要儲存掛載。
你需要以下條件來設定儲存掛載:
- 管理身份(用於金鑰庫存取)
- Key Vault 秘密(憑證來源)
要設定儲存掛載:
- 請前往 Azure 入口網站中的管理實例。
- 選擇配置>掛接。
- 選擇 + 新儲存掛接。
提供以下細節以設定儲存掛載:
| Setting | 價值觀 |
|---|---|
| 名稱 | 輸入坐騎名稱 |
| 記憶體類型 | Azure 檔案、自訂或本地(暫存) |
| 記憶體帳戶 | 選擇或輸入儲存帳戶 |
| 檔案共用 | 選擇檔案分享 |
| 價值觀 | 選擇鑰匙庫 |
| 祕密 | 選擇金鑰保險庫的秘密 |
| 安裝槽驅動字母 | 選擇磁碟代號路徑 |
你可以將外部儲存掛載到你的管理實例。 掛載的儲存空間在重新啟動時是持久存在的,並且可以從你的應用程式檔案系統存取。
使用 Azure Files 設定儲存掛載
要設定 Azure Files 儲存掛載:
- 建立一個 Azure Storage 帳戶和一個 Azure Files 共享。
- 將連線憑證存入 Key Vault 作為秘密。
支援的秘密內容:(例如:
DefaultEndpointsProtocol=...;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net) - 在 Managed Instance(Azure portal 或 ARM/Bicep/Terraform)中新增掛載。
小提示
透過 Azure RBAC + 共享 ACL 強制執行共享層級權限以增強安全性。
用自訂 UNC 配置儲存掛載
對於其他託管於其他地方(本地、虛擬機或非 Microsoft)的 SMB 共享,使用掛載。 確保網路連線(虛擬網路整合/私有端點/防火牆)。
- 如果需要憑證,請將它們儲存在 Key Vault 祕密中,格式如下:
username=<user>,password=<password>- 避免使用網域管理員帳號;使用最低權限服務身份。
- 在 Managed Instance 裡新增掛載。
設定登錄鍵
有些應用程式依賴從 Windows 登錄檔讀取的值。 使用 Registry Key 適配器,你可以建立登錄檔金鑰,並使用 Azure Key Vault 的秘密作為值。
您需要以下條件來設定登錄檔金鑰:
- 管理身份(用於金鑰庫存取)
- Key Vault 秘密(憑證來源)
要設定登錄檔鍵:
前往 設定>登錄檔金鑰。
選取 [+ 新增]。
Setting 價值觀 路徑 進入登錄檔路徑 Vault 輸入現有的保險庫名稱 祕密 選擇或輸入金鑰庫的秘密 類型 字串或 DWORD 選擇 新增 以新增登錄檔金鑰。
謹慎
修改系統關鍵登錄路徑時請謹慎。 錯誤的變更會影響實例穩定性。
設定 RDP(Bastion)存取權限
快速入門:自動部署 Azure Bastion 讓你透過遠端桌面協定(RDP)安全地連接至虛擬機器實例。 透過 Azure Bastion 的 RDP 用於暫時性診斷(日誌檢查、快速驗證)。 如果你打算透過入口網站使用 Bastion,請將你的 Bastion 資源升級到標準定價層級,並選擇 Native Client Support 和 IP-Based Connection。
你需要以下資源才能取得 Bastion/RDP 的存取:
- 受管理實例必須與 虛擬網路整合
- Azure Bastion 主機在目標虛擬網路上
- 埠 3389 必須從 Bastion 子網 NSG 允許進入 App Service Plan 子網 NSG
要設定堡壘:
- 前往 Configuration>Bastion/RDP。
- 確認 虛擬網路 是否已連接。
- 選擇允許遠端桌面(透過 Bastion)。
謹慎
不要只透過 RDP 手動安裝或設定變更。 變更在回收或產生配置漂移時會遺失。
常見問題集 (FAQ)
- Azure App Service 的 Managed Instance 上運行的是哪個作業系統(OS)?
- 我可以啟用更多 Windows 角色和功能嗎?
- Azure App Service 上的受管實例會定期更新平台與應用堆疊嗎?
- Azure App Service 的 Managed Instance 上安裝了哪些程式語言?
- 設定(安裝)腳本有哪些限制?
- 設定(安裝)腳本是在什麼權限層級執行的?
- 使用 Bastion 連接實例時,操作員擁有哪些角色權限?
- 我該如何排查我的設定(安裝)腳本或登錄檔/儲存卡的故障?
- Azure App Service 工作者實例中受管理實例的可定址記憶體是什麼?
- 我應該使用哪個 Azure Storage 服務來上傳設定(安裝)腳本?
- 安裝(安裝)腳本的命名和格式有限制嗎?
- 我能上傳成壓縮檔的相依文件大小有限制嗎?
- 在 App Service 方案介面卡上新增或編輯受管實例會重新啟動計畫實例嗎?
- 我的管理實例計畫有多個實例,我可以重新啟動單一實例嗎?
- 我在 App Service 方案中的託管實例有多個網頁應用程式,我可以重新啟動單一網頁應用程式嗎?
- 我可以在 App Service 的受管理實例方案中,為我的網頁應用程式指派管理身份(Managed Identity)嗎?
- 在 App Service 方案中,我能為 Managed Instance 建立的轉接器數量有限制嗎?
Azure App Service 的 Managed Instance 上運行的是哪個作業系統?
Windows Server 2022 的。
我可以啟用更多 Windows 角色和功能嗎?
是的,透過設定腳本。 然而,未來 Windows Server 版本中移除的功能,在 Managed Instance 中不會無法使用。
Azure App Service 上的受管實例會定期更新平台與應用堆疊嗎?
是的,實例會定期進行平台更新與維護。 預裝的應用程式堆疊也會定期更新。 你必須透過設定(安裝)腳本維護任何安裝的元件。
Azure App Service 的 Managed Instance 上安裝了哪些程式語言?
Microsoft .NET Framework 3.5、4.8 以及 Microsoft .NET 8.0。 如果你需要其他執行環境,可以用設定腳本安裝。 這些資料不會由平台維護,必須手動更新。
設定(安裝)腳本有哪些限制?
設定(安裝)腳本可以安裝相依性、啟用角色與功能,並自訂作業系統。 然而,破壞性操作(例如 Windows\System32刪除 ) 不被支援 ,可能導致實例不穩定。
設定(安裝)腳本是在什麼權限層級執行的?
設定(安裝)腳本以 管理員 權限執行,允許安裝與設定系統層級元件。
使用 Bastion 連接實例時,操作員擁有哪些角色權限?
透過 Bastion 連線的操作員在會話中擁有 管理員 權限。
我該如何排查我的設定(安裝)腳本或登錄檔/儲存卡的故障?
要排除故障,請檢查設定(安裝)腳本的日誌。 它們可以在實例的 C:\InstallScripts\Script\Install.log 中找到(不是網頁應用程式)。 或者,App Service 主控台日誌也可以被運送到 Azure Monitor 和 Log Analytics。
介面卡日誌可以在機器根目錄中找到,或者它們會被登錄在 App Service Platform 日誌中。
Azure App Service 工作者實例中受管理實例的可定址記憶體是什麼?
Azure App Service 工作者實例中受管實例的可定址記憶體會依所選的定價方案而異。 下表列出 Azure App Service 工作者實例中受管理實例的可定址記憶體。 重要的是要考慮是否有設定腳本可以安裝更多元件、服務等。這些資源會影響你的網頁應用程式可用的記憶體容量。
| 定價方案 | Cores | 記憶體 (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 Storage 服務來上傳設定(安裝)腳本?
使用 Azure Storage blob 服務來上傳腳本和必要的依賴關係。
安裝(安裝)腳本的命名和格式有限制嗎?
是的,該文字必須命名 Install.ps1為 。 目前只支援 PowerShell。 確保將設定(安裝)腳本和相依關係作為單一 .zip 檔案上傳。
我能上傳成壓縮檔的相依文件大小有限制嗎?
沒有尺寸限制。 請記得,整體相依大小會影響實例配置時間。
在 App Service 方案介面卡上新增或編輯受管實例會重新啟動計畫實例嗎?
是的,新增或編輯受管理實例計畫介面卡(設定腳本/儲存/登錄檔)會重新啟動底層實例,並影響所有部署到該計畫的網頁應用程式。 記得實例重啟會移除所有透過 RDP 會話所做的變更。 請務必使用設定(安裝)腳本來持久化相依性、安裝或其他需要的設定變更。
我的管理實例計畫有多個實例,我可以重新啟動單一實例嗎?
是的,瀏覽到受管理實例,並在左側選單選擇實例。 然後在實例名稱旁邊選擇重新啟動。
我在 App Service 方案中的託管實例有多個網頁應用程式,我可以重新啟動單一網頁應用程式嗎?
是的,請瀏覽應用程式的 概覽 頁面,選擇 重新啟動。
我可以在 App Service 的受管理實例方案中,為我的網頁應用程式指派管理身份(Managed Identity)嗎?
是的,你可以在受管理實例中為網頁應用程式指派 不同的 管理身份。 遵循 管理身份指引
在 App Service 方案中,我能為 Managed Instance 建立的轉接器數量有限制嗎?
不,儲存或登錄卡的數量沒有限制。 你只能在 App Service 方案中為受管實例建立一個設定(安裝)腳本介面卡。 介面卡數量增加可能會影響受管實例的配置時間。