Windows站点权限整合:一次配置,全域生效
|
去年六月份,我蹲在三号机房那个老式机柜后面配IIS站点权限——就是把那个带NTFS继承链的AppPoolIdentity往五个子站里一推,手没抖,回车键按得比泡面开盖还利索。结果当天晚上八点十七分,所有站点全挂了。不是500,是直接401.2拒之门外,连登录框都不给弹。王工蹲着看日志时把耳机线绕手腕上绕了三圈,没说话。雨下得挺烦,窗缝漏风,把墙上那张“零信任落地路径图”吹得啪啪响。 我原以为只要把ApplicationHost.config里和对齐,再确保ApplicationPoolIdentity组有Read+Execute穿到底层文件夹——就完事了。结果呢?张姐在会议室大屏上切演示环境,鼠标悬停在/dev/site3/healthz上三秒,页面白了。她没骂人,只是把保温杯盖拧开又拧紧,咔、咔、咔。我盯着她无名指上那枚褪色银戒反光看了两秒,突然想起这事跟权限树无关,跟token缓存有关。但当时没敢说。 优胜劣汰?对。真就优胜劣汰。不是你配得好不好,是你哪个子站先扛不住,它就先死,死了之后其他四个站才开始慢慢显性报错。像流感传开前总有个先发烧的——你查他体温,他烧得合理;可你回头一看,原来空调出风口正对着他工位后颈。我们删过七次web.config,重装过四回URL重写模块,最后发现是某个站用了自定义HttpModule,硬生生把HttpContext.User给null掉了两次。第二次null时,Windows认证凭据早散得比机房冷凝水还快。
文章配图,仅供参考 那天下午三点二十八分,运维小李端着盒饭进来,宫保鸡丁的花生米卡在U盾接口里,他掏了十八秒。我就站在旁边看他掏。盒饭汤汁顺着餐盒边缘淌到服务器标签纸上,把“SiteA-PROD-v2”泡得字迹发晕。我没拦。我盯着那滩油渍扩散,忽然记起三年前在阿里云上做AD FS联邦对接时,也见过一模一样的油渍——也是盒饭,也是U盾,也是某次“全域生效”之后第一个崩的节点。那次崩的是登录跳转URL拼接逻辑。这次崩的是NTLM Challenge的响应头顺序。完全不相关。但都是油渍先出来的。机柜风扇噪音是47分贝左右。恒定。不像空调外机那种忽高忽低的喘气声。你听久了会误判时间流速。比如我以为只调了四十分钟,其实已过去一百零三分钟。陈总监打来电话问“到底是不是配置问题”,我答“是”,他嗯了一声就挂了。我捏着手机想,他肯定在电梯里——因为背景音里有轿厢关门提示音,而且他左手无名指戴表,表带扣太松,每次抬手都会滑到小指根部。这细节我敢打包票。 所谓一次配置全域生效,本质是把权限校验的控制权从代码层交还给操作系统内核。但Windows内核它不认“全域”这个词。它只认SID、ACE、Owner、Group、Inherit。它连自己是否处于Domain Controller模式都要查注册表才能确定。所以你以为你在统一管理,其实你是在给十六个不同心跳频率的进程喂同一勺米汤。有的喝得急,有的呛住,有的干脆把勺子吞了。去年六月那次,是site5先吐勺子——它用了自定义的IsUserInRoleProvider,硬改了Principal对象生命周期。而它改的那一行代码,在SVN里注释写着:“临时绕过AD组策略刷新延迟”。临时。这个词现在还在prod环境config里飘着,像块没擦净的灰。 赵工用笔记本贴着机柜侧面测温度,屏幕反光里映出我半个下巴。他忽然问:“你信Active Directory里那个msDS-Behavior-Version值吗?”我没答。我知道他刚在DC上执行过dcpromo /unattend:,但没重启。他也不知道我上周三悄悄改过domain functional level的注册表备份项,就为了复现一个GPO应用滞后三小时的case。这种事没法聊透。就像没人问过,为什么每次权限整合失败后,机房排风机总要多转两圈——不是逻辑需要,是物理上空气湿度确实高了。 我现在不碰全域生效了。改成每站单独建专用AppPool,每个池分配独立虚拟账户,NTFS权限只开到该池对应目录一层,不设inheritance。慢。麻烦。但至少你知道谁死了、怎么死的、尸体在哪。上次客户问我“有没有更优雅的方式”,我说有——让所有站点都跑在Linux容器里,用OAuth2统一鉴权,然后Windows只当静态资源宿主。他笑了。我也笑了。他笑得比我久一点。桌上那盒没吃完的炒河粉已经结膜,筷子横搭在盒沿上,歪斜十五度。 下一步?等下次AD同步失败的时候,我打算把那个被注释掉的IsUserInRoleProvider重写一遍,加个retry策略,最多试三次,超时直接抛SecurityException而不是静默返回false。至于会不会影响其他站?我说不准。毕竟连微软文档里都写着:“行为可能因主机负载变化而不同”。这话真不假。昨天我看见监控里有个IO wait spike,峰值出现在下午四点零七分——正好是食堂送餐推车经过弱电井口的时间。推车轮子卡过一道地砖缝,震了一下。那一下,传到了SSD背板,又反射进LSASS进程调度队列。你看,又来了。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


IIS权限总出错?5大Windows安全盲区
Linux与Windows服务器选型的5大性能陷阱
Windows服务器站点搭建:权限配置一步到位
Windows站点搭建总踩坑?5步权限配置法
Windows多媒体站点搭建:权限配置一步到位
Windows站点搭建常被忽略的3大安全权限断点
Windows数据科学环境搭建:17年UI运维师避坑指南