IIS 与 Windows 服务的最小权限:应用池、gMSA 与 ACL
选对服务身份,只给应用需要的 NTFS 权限;域服务账户必须托管时用 gMSA。
测试环境Standard / Datacenter · 版本号 26100.33650 · x64
E1- 版本号
- 26100.33650
- 版本
- Standard / Datacenter
- 架构
- x64
- 支持
- 文档(E1)
- 证据
- E1官方文档
- 核验日期
- 2026-10-29
- 页面类型
- 任务
IIS 默认用 ApplicationPoolIdentity。Windows 服务需要域身份时用 gMSA(或严格限定的服务账户),不用域管、不用 LocalSystem。
给:
- 应用二进制/静态文件读/执行;
- 需要时只给一个 upload/cache 目录 modify;
- 应用必须读的配置/密钥读;
- 不要给
C:\、C:\Windows或别的应用目录。
IIS 应用池
Section titled “IIS 应用池”New-WebAppPool -Name 'apppool'Set-ItemProperty IIS:\AppPools\apppool -Name processModel.identityType -Value ApplicationPoolIdentityicacls C:\sites\app /grant "IIS AppPool\apppool:(OI)(CI)RX"上传:
icacls C:\sites\app\uploads /grant "IIS AppPool\apppool:(OI)(CI)M"RX 读/执行;M 修改。不要因为厂商安装器说要 F(完全)就给。
Windows 服务
Section titled “Windows 服务”应用作为服务(Node/Go/Python)时,用专用本地/域账户或 gMSA:
- 有“作为服务登录”权限;
- 应用目录读/执行;
- 日志/上传/临时目录写;
- 不允许交互登录;
- 不是本地管理员。
New-ADServiceAccount -Name svc-app -DNSHostName svc-app.example.com ` -PrincipalsAllowedToRetrieveManagedPassword 'IIS-Servers'Install-ADServiceAccount -Identity svc-appTest-ADServiceAccount -Identity svc-app应用池/服务设为 EXAMPLE\svc-app$,无密码。gMSA 需要 AD 和 KDS 根密钥;单机没有。
验证有效权限
Section titled “验证有效权限”icacls C:\sites\appGet-IISAppPool apppool | Select-Object Name,State,ProcessModelwhoami /priv服务查 Get-CimInstance Win32_Service -Filter "Name='api'" | Select-Object StartName。
常见过度授权
Section titled “常见过度授权”- 一个子目录失败,就给整个站点加
Everyone读。 - 为了访问共享,把应用池加进本地管理员。
- 只读一个目录的服务用域管。
- 多个不相关应用共用一个服务账户。
- 给
web.config或 PHP/Node 二进制写权限。
E1。实验室在 Windows 11 上用 ApplicationPoolIdentity 建了 labpool,没有配 gMSA/AD。gMSA 步骤是 Server 2025 域环境待验证模式。