[研究]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%沒問題再上線,該無人可保證。
(完)
沒有留言:
張貼留言