共用方式為


Configure Managed Instance on Azure App Service (preview)

Azure App Service 上的託管實例(預覽版)是一種針對需要作業系統(OS)自訂、可選私有網路及與 Azure 資源安全整合的 Windows 網頁應用程式的方案。 本文說明如何在關鍵區域配置受管理實例:

  • 受管理的識別
  • 配置(安裝)腳本
  • 儲存支架
  • 登錄機碼
  • 遠端桌面協定(RDP)存取

這很重要

Managed Instance 目前處於預覽階段,僅支援部分地區的 Windows 網頁應用程式,且僅限於 Pv4 和 Pmv4 定價方案。 更多地區即將推出。 Linux 和容器系統不被支援。

新增一個受管理身份(到 App Service 方案中)

計畫層級的受管理身份可為平台層發生的基礎設施操作提供認證,例如設定(安裝)腳本在啟動時存取 Azure 儲存裝置、從 Key Vault 拉取秘密的登錄介面卡,以及將 Azure 檔案進行認證的儲存掛載。 這些元件是方案中多個應用程式共用的資源。 例如,計畫層級身份允許受管理實例對基礎設施元件進行一次認證,而個別應用程式則為應用程式特定資源(如資料庫與應用程式秘密)保留自己的身份。

在以下情境下,應用程式服務計畫的管理身份是必要的:

  • 以安全存取並檢索 Azure Storage 中的設定腳本。
  • 存取金鑰庫以提供儲存掛載與登錄金鑰適配器的憑證與值。

請參閱 管理使用者指派的受管理身份 以建立受管理身份。

要將受管理身份加入受管理實例計畫:

  1. 請前往 Azure 入口網站中的管理實例。
  2. 選擇「使用者已指派的>」。
  3. 選取 [+ 新增]。
  4. 選擇 訂閱 並管理 身份
  5. 選擇 新增 以將身份加入計畫。

新增配置(安裝)腳本

設定(安裝)腳本會在實例啟動時執行,以套用持久自訂。 範例包括元件物件模型(COM)註冊、Microsoft/Windows 安裝程式(MSI)安裝、網際網路資訊服務(IIS Server)設定、ACL 變更、啟用 Windows 功能、設定環境變數。

你需要以下條件才能使用設定(安裝)腳本:

  • 指派給 App Service 計畫的管理身份
  • 一個儲存帳號,裡面有 Blob 容器,裡面存放設定(安裝)腳本套件(zip)。
  • 一個根節點包含(入口點)的 Install.ps1 單一壓縮檔
  • Storage Blob Data Reader 儲存帳號、容器或資源群組中的角色

要新增設定腳本:

  1. 請前往 Azure 入口網站的 Managed Instance App Service 計畫。

  2. 選擇 「配置>一般設定」。

  3. 設定腳本 區塊,先從設定你的腳本開始。

    Setting 價值觀
    記憶體帳戶 選取您的儲存體帳戶
    容器 輸入你的容器名稱
    壓縮檔 輸入壓縮檔名稱
    價值觀 請確認這個數值是否正確
  4. 選擇「套用」以儲存變更。

設定腳本最佳實務

  • 讓腳本成為冪次元(安裝前先檢查)。
  • 保護破壞性操作(避免修改受保護的 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 秘密(憑證來源)

要設定儲存掛載:

  1. 請前往 Azure 入口網站中的管理實例。
  2. 選擇配置>掛接。
  3. 選擇 + 新儲存掛接。

提供以下細節以設定儲存掛載:

Setting 價值觀
名稱 輸入坐騎名稱
記憶體類型 Azure 檔案、自訂或本地(暫存)
記憶體帳戶 選擇或輸入儲存帳戶
檔案共用 選擇檔案分享
價值觀 選擇鑰匙庫
祕密 選擇金鑰保險庫的秘密
安裝槽驅動字母 選擇磁碟代號路徑

你可以將外部儲存掛載到你的管理實例。 掛載的儲存空間在重新啟動時是持久存在的,並且可以從你的應用程式檔案系統存取。

使用 Azure Files 設定儲存掛載

要設定 Azure Files 儲存掛載:

  1. 建立一個 Azure Storage 帳戶和一個 Azure Files 共享。
  2. 將連線憑證存入 Key Vault 作為秘密。 支援的秘密內容:(例如: DefaultEndpointsProtocol=...;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net
  3. 在 Managed Instance(Azure portal 或 ARM/Bicep/Terraform)中新增掛載。

小提示

透過 Azure RBAC + 共享 ACL 強制執行共享層級權限以增強安全性。

用自訂 UNC 配置儲存掛載

對於其他託管於其他地方(本地、虛擬機或非 Microsoft)的 SMB 共享,使用掛載。 確保網路連線(虛擬網路整合/私有端點/防火牆)。

  1. 如果需要憑證,請將它們儲存在 Key Vault 祕密中,格式如下: username=<user>,password=<password>
    • 避免使用網域管理員帳號;使用最低權限服務身份。
  2. 在 Managed Instance 裡新增掛載。

設定登錄鍵

有些應用程式依賴從 Windows 登錄檔讀取的值。 使用 Registry Key 適配器,你可以建立登錄檔金鑰,並使用 Azure Key Vault 的秘密作為值。

您需要以下條件來設定登錄檔金鑰:

  • 管理身份(用於金鑰庫存取)
  • Key Vault 秘密(憑證來源)

要設定登錄檔鍵:

  1. 前往 設定>登錄檔金鑰

  2. 選取 [+ 新增]。

    Setting 價值觀
    路徑 進入登錄檔路徑
    Vault 輸入現有的保險庫名稱
    祕密 選擇或輸入金鑰庫的秘密
    類型 字串或 DWORD
  3. 選擇 新增 以新增登錄檔金鑰。

謹慎

修改系統關鍵登錄路徑時請謹慎。 錯誤的變更會影響實例穩定性。

設定 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

要設定堡壘:

  1. 前往 Configuration>Bastion/RDP
  2. 確認 虛擬網路 是否已連接。
  3. 選擇允許遠端桌面(透過 Bastion)。

謹慎

不要只透過 RDP 手動安裝或設定變更。 變更在回收或產生配置漂移時會遺失。

常見問題集 (FAQ)

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 方案中為受管實例建立一個設定(安裝)腳本介面卡。 介面卡數量增加可能會影響受管實例的配置時間。