描述文件装得干干净净,所有人都连上了,然后账户密码一换。每个收到文件的设备都在同一分钟停止认证,因为它们携带的是同一个秘密。这就是征兆:一份凭据被复制进共享产物,就把一次例行的密码更换变成了整个机群的故障。把可复用的配置与个人身份拆成两次独立交付就能避免这一点,而 Apple 自己的设备管理文档也把描述文件视为设置与授权,而不是秘密仓库。

症状在第一次轮换时出现

mobileconfig 文件是 XML 或已签名的 plist。任何拿到副本的人都能解开载荷、读到里面的内容,因此模板里的 AuthPassword 值就是一份扩展名古怪的明文凭据。签名改变的是完整性与来源,不是可读性。与此同时,你真正想共享的部分,比如网关地址、预期的服务器身份和流量策略,对所有人都是相同的。

动手编辑之前先把字段分类,因为边界并不在人们以为的地方。

把共享设置与个人凭据分开

ItemShared profileIndividual record
Gateway address, expected server identityyesno
Traffic policy, IncludeAllNetworks, exclusionsyesno
User password or account tokennoyes
Device identity or certificatenoyes

交互式做法是把密码留在外面,让受支持的认证安排去询问它。要仔细读:删掉一个只是看起来相似的字段,并不是通用地改成了交互式登录。IKEv2 载荷区分AuthName与AuthPassword,而认证方式决定提示究竟能否到达;基于证书的方式根本不会询问密码。

证书同样不需要共享密钥

如果网关期望证书认证,就通过受认可的机制登记预期的用户或设备身份,并把私钥留在模板之外。每份副本里放同一个共享私钥,会带来同样的轮换问题,影响范围还更大,因为不是按人签发的密钥无法按人吊销。

把该身份的签发、续期和吊销与描述文件的修订一起记录下来。两者一起跟踪时,续期就是一项排期工作,而不是一次事故。

无人值守的机器需要第三种答案

必须在任何人登录之前就连接的机器,无法回答提示。这与让已登录的人更省事是两回事,应当用受管理的身份,或与网关所有者商定的按设备证书来解决,而不是把人的密码存进描述文件。

存下密码也去不掉第二因素。如果网关要求 MFA,带已保存密码的描述文件在启动时照样失败,而这次失败看起来像描述文件坏了,而不是缺少一个因素。

检查实际生成出来的产物

模板会靠省略说谎。管理服务或导出工具可能把凭据注入成品文件,随附的身份载荷或诊断副本也可能携带模板从未展示过的材料。在决定可以交给谁之前,先打开生成出来的产物。同样要保住受信任的签发方与预期服务器身份设置;去掉密码不是削弱网关信任的理由。

如果真实密码或私有身份已经扩散得太广,就在签发方那里吊销并更换它。改明天的模板对已经装好的副本毫无作用,而那些副本会继续认证,直到背后的凭据被收回。

用测试身份验收这次交接

通过受认可的流程,安装到一台登记为独立测试身份的设备上,完成预定的认证,并真正访问到私有资源,而不只是看着隧道起来。确认描述文件里不含任何凭据材料,再确认凭据存在于将要续期的身份记录中。这一对才是验收测试。

共享设置只有一份修订,每个人各自一条记录,以及一条你真的用过一次的吊销路径。

相关文章