2026年1月6日 星期二

[研究]GCB IIS 10.0「匿名使用者識別」從「IUSR」改為「應用程式集區識別」會否產生問題?(二)

[研究]GCB IIS 10.0「匿名使用者識別」從「IUSR」改為「應用程式集區識別」會否產生問題?(二)

政府組態基準(GCB) II 10.0

續 

[研究]GCB IIS 10.0「匿名使用者識別」改為「應用程式集區識別」會否產生問題?https://shaurong.blogspot.com/2025/10/gcb-iis-100iusr.html

因為這個的衝擊有些大,再做點研究...

以下是幾個可能會受到影響的關鍵領域:

1. 檔案系統存取權限 (NTFS Permissions)

這是最直接的衝擊。過去您只需要給予 IUSR 讀取權限,現在必須針對每一個特定的 AppPool 進行設定。

  • 影響範圍: 靜態檔案(HTML, CSS, JS, 圖片)、Web.config、日誌資料夾。
  • 調整方式: 需手動加入 IIS AppPool\<您的集區名稱> 並給予適當權限。如果站台很多,這會增加維運成本。

2. 暫存檔與臨時目錄 (Temp Folders)

  • ASP.NET 編譯暫存: 通常位於 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files。如果集區識別變更後權限不足,站台可能無法啟動或編譯失敗。
  • 系統 Temp 目錄: 某些套件(如 PDF 產生器、Excel 匯出)會使用 Path.GetTempPath()。不同身分指向的 Temp 路徑不同,可能導致找不到檔案。

3. 資料庫連線 (Windows 驗證)

如果您的資料庫連線字串中使用 Trusted_Connection=True 或 Integrated Security=SSPI:

  • 舊情況: 使用 IUSR(或電腦帳戶)去連線。
  • 新情況: 會使用 IIS AppPool\<AppPoolName> 去連線。
  • 後果: 資料庫端若未授權給該集區識別,會發生 Login failed for user 錯誤。

4. 外部網路資源存取

當您的程式碼需要存取 UNC 路徑 (網路芳鄰檔案共享) 或跨伺服器資源時:

  • AppPoolIdentity 在跨機時代表的是該伺服器的「電腦帳戶」(Domain\ComputerName$)。
  • 如果原本跨機存取是依賴特定帳戶模擬,改動後可能會失效。

5. 憑證存放區存取 (Certificate Store)

  • 如果您的網站有使用 SSL 憑證進行客戶端驗證 或 數位簽章 (WebAPI 呼叫金鑰)。
  • 私鑰的存取權限通常是綁定給特定身分的。更改為集區識別後,可能無法讀取個人憑證存放區中的金鑰。

6. 第三方元件與 COM+ 元件

  • 某些老舊的 COM 元件或系統層級的 DLL (如 Office 串接) 對執行身分非常敏感。
  • AppPoolIdentity 的 Profile 載入行為與 IUSR 不同,可能導致元件初始化失敗。


落實「最小權限原則」是好事,但出了事,問題可能很難查,全面測試100%沒問題再上線,該無人可保證。

(完)

沒有留言:

張貼留言