摘要

  • RFC 5209 把评估定义为:收集一组端点能力的姿态,再由相应验证器按合规政策判断。结论天然带有观察范围、政策版本与时间边界。
  • 重新评估并非失败补丁,而是模型的核心用途。端点曾经合规之后,用户可能关闭防火墙,软件可能变化,政策也可能要求新的补丁。
  • 姿态判断、授权决定与访问执行分别属于不同系统。一个全局通过结果,不能证明网关已经装载规则,更不能证明二十五分钟后仍然合规。

绿灯没有撒谎,只是被改写成了现在时

09:00,一台受管笔记本开始姿态评估。防火墙收集器报告保护功能正在运行;软件更新收集器报告补丁达到要求。两个验证器使用第 42 版政策分别给出通过结果,服务器端经纪组件汇总后产生全局“合规”。外围访问系统据此允许普通网络访问。

09:17,使用者为测试应用关闭了主机防火墙。收集器发现变化并发出姿态变更通知,恰好客户端经纪进程正在重启,通知没有送达。09:25,保障看板仍显示“合规”。数据库里的 09:00 记录没有被篡改,消息当时也没有传错,那次判断本身甚至完全正确。

错误发生在时态上。看板把“09:00,在这些收集器、这些属性和第 42 版政策下,被判定合规”压缩为“现在合规”。前一句有证据,后一句无人观察。

这是为分析构造的场景,不指向任何真实机构、产品或事故。它直接采用 RFC 5209 自己列出的变化类型:此前合规的系统可能因用户关闭政策要求的主机防火墙而不再合规。规范没有承诺一次绿灯永续有效;相反,它告诉我们为什么必须留下重新评估的路径。

“评估”不是对整台机器的一次封印

RFC 5209 于 2008 年以 Informational 文档发布。它给出 NEA 的问题、术语、参考模型、用途与后续协议要求,并非某一种产品的完整实现,也不是一条包格式就能覆盖所有执行环节的统一协议。

文档将评估定义为:为端点“一组能力”收集姿态,使适当的验证器能够按照合规政策加以判断。定义里的每个限制都应被保留。

“一组能力”未必等于所有能力;“姿态”是与组织安全政策有关的硬件或软件配置、状态,不是设备现实的完整复制;“收集”意味着某个观察组件在某个时间取得属性;“验证”意味着政策规则参与了判断。于是,结果只对它实际得到的证据负责。

RFC 5209 还把消息含义拆开。Posture Attribute 描述观察到的配置或运行状态;Request Attribute 请求信息;Result Attribute 传递判断;Remediation Attribute 给出使端点恢复合规的建议。收到请求不等于返回事实,收到修复指令不等于已经修好,判断结果也不能取代原始观察。

规范说,Result Attribute 通常在评估结束时生成,用来说明端点是否“被认为”合规。这里的措辞不是客气话。它提醒运营者:合规是验证器依据输入和政策作出的结论,不是贴在设备上的永恒属性。

六类组件,各自只看见一段现实

NEA 客户端由一个或多个 Posture Collector、一个 Posture Broker Client,以及一个或多个 Posture Transport Client 构成。服务端相应有 Posture Validator、Posture Broker Server 与 Posture Transport Server。

收集器负责某项能力。它可以读取防火墙、操作系统或其他受检组件的属性,响应验证器请求,接收结果与修复信息,也可以在本地姿态变化时通知经纪组件。客户端经纪组件维护收集器登记、分发请求、汇集响应,并处理全局结果。传输组件负责建立可靠且受保护的对话通道。

另一端,验证器按政策评估一项或多项能力,可以索取更多属性,生成局部结果和修复指令。服务端经纪组件登记验证器、路由消息,并按照合规政策把多个局部判断组合为全局判断。传输服务端负责承载会话。

这种拆分不是组织图,而是证据边界。传输成功只说明对话按其安全属性送达,不能说明每个应有收集器都存在。经纪组件可以准确汇总已经收到的四项结果,却无法替第五个失联收集器观察机器。验证器可以毫无错误地执行规则,却不能让十分钟前的属性自动更新。

所以,一条可审计记录必须保存组件清单:按政策应当有哪些收集器,实际登记哪些,哪些回答,何时观察,发送哪些属性;随后还要注明哪个验证器使用哪一版规则得出什么结论,全局聚合又如何处理缺失、未知与例外。

没有坏消息,不等于已经取得好消息

后续的 PA-TNC 规范 RFC 5792 把覆盖问题写得更具体。实现可以支持不同的厂商属性类型,但仍需互操作。收集器可能对不支持的类型返回错误;在规定条件下,它可以返回全部、部分,甚至不返回所请求属性。一些版本字段还明确允许“不知道”或“不可用”。

这些安排使协议可扩展,却要求运营系统诚实面对不完整。假设政策要求检查五项能力,四个收集器工作正常,第五个没有登记。四个通过并不能替第五项通过。缺口可能来自不支持、隐私政策、不具备能力、进程失败、配置遗漏或端点拒绝披露。

本地政策可以决定如何处置:拒绝、隔离、限制访问、接受有限时效的既有断言,或由具名负责人批准例外。政策选择本身并非问题。真正的风险,是把“未观察”写成“健康”,再让下游系统以为五项都经过检查。

比单一布尔值更可靠的记录至少有三层:观察结果、覆盖度、政策处置。例如,“四项通过/五项要求/第五项例外至 10:00”可以被复核;“合规=true”则把将来重新评估最需要的线索全部删除。

重新评估是模型的时间维度

RFC 5209 在接入评估之后,立刻把重新评估列为第二个重要用途。理由很朴素:端点姿态会变,网络合规政策也会变。初次加入网络时合规的系统,在变化发生后可能不再合规。除了关闭防火墙,文档还举出另一种情况:新的防火墙补丁发布,政策随之要求安装,昨天合格的版本今天便不再满足要求。

触发可以来自两端。收集器看到本地状态变化,可通知客户端经纪组件启动重新评估;验证器看到带外政策或威胁信息变化,也可以通知服务端经纪组件。具体部署还可能使用定时器、关键应用访问或管理员动作。

因此,“触发链是否活着”本身属于持续合规证据。收集器是否订阅了正确事件?经纪进程重启时是否持久化通知?重新评估是否排队、开始并完成?新政策是否送达全部验证器?如果系统只保存成功评估,却不保存失败触发,它的历史天然偏向绿色:通过永远留下,使旧结论失效的信号却不见了。

RFC 5209 还描述 Assertion Attribute:服务端可以为先前成功评估生成有日期、有签名的断言,在一段时间内复用,以免每次完整重测。这是性能优化,不是脱离时间。断言仍须记录签发者、端点绑定、覆盖的能力与政策、签发和到期时间,以及哪些变化会强制重测。若已知防火墙改变后仍盲目接受旧断言,问题在接受策略,而不在签名强度。

加密能保护陈述,不能补写未观察的事实

NEA 模型要求保护客户端与服务端之间的对话,并讨论中间人、消息修改、重放和属性窃取。抗重放尤其重要:若旧的通过属性可以冒充新数据,任何当前结论都不可信。

但“新鲜传输”与“事实完整”是两个问题。刚刚发送的属性仍然只描述收集器看见的那一项能力。端点身份通过认证,也不能证明其本地传感器覆盖完整。消息受到加密保护,不能证明收集器进程没有故障。密码学可以在既定信任模型下保护来源、完整性和时序,却不能发明缺少的观察。

一条完整证据链应写成:

绑定端点与会话 → 确定应有收集器 → 取得带时间的属性 → 经纪转交 → 验证器判断 → 形成全局结果 → 授权系统决策 → 执行点装载规则 → 监听变化 → 完成重新评估。

每个箭头都跨越控制边界。证据停在哪里,确定性就停在哪里。验证器的一盏绿灯,不能自动流入“规则已执行”和“现在仍合规”。

姿态结果不负责推动网络闸门

RFC 5209 明确写道:端点评估结果可以影响访问决定,并可将决定配置到网络或端点的执行机制。但是,执行机制及其协议不在该规范范围内;将 NEA 结果传递和表示给网络接入技术的方法也不在范围内。

这不是漏洞,而是职责分离。NEA 判断姿态;授权系统决定该判断对访问意味着什么;执行点安装并维持规则;实际流量和应用观测才说明效果。

推理的两个方向都受限制。全局合规不保证一定获准访问,因为身份、地点或其他授权条件可能失败。已经能够访问也不能反推所有姿态检查都通过,因为管理员可能给予受限网络、批准例外,或结合其他安全机制。收到修复指令更不能证明指令已经执行,只有修复后的再次观察才能回答。

若审计报告要声称“已经执行”,它必须拿出授权消费者、输入结果、决策映射、目标端点与会话、执行点、规则标识、安装确认、生效时间和实际效果。拿不出这些,就应准确写成“姿态判断已送至某边界”,而不是借用 NEA 的权威替另一套系统作证。

把现在时写进证据,而不是写进颜色

可用的评估凭据从 assessment ID、session ID、端点绑定、网络连接和触发来源开始。它列出应有及实际响应的收集器与验证器、组件版本和配置摘要;保存请求、属性、观察时间、不支持类型、未知值、遗漏和处理错误。

每项局部判断应记录验证器、政策版本、输入集合、规则、结果和原因。全局判断则记录聚合规则、例外与未知的处理。若复用既有断言,还要保存其范围、签发者、有效期和撤销条件。

只有外围系统提供自己的证据,记录才继续写入授权决定、执行规则、修复操作和复测结果。最后补上最近一次相关姿态变化、政策变化、成功重评、失败触发和当前证据年龄。

这并不一定意味着收集海量新数据。多数信息原本就散落在组件中,缺的是不把来源压扁。于是,在构造场景里,系统可以给出真正可行动的状态:“09:00 评估通过;09:17 防火墙变化;重评通知失败;当前合规未知;旧访问规则仍在。”工程师立即知道去哪里查。

保留一次通过的价值,就必须拒绝夸大它

对 RFC 5209 作窄而准确的解释,不会削弱端点安全,反而避免让它承担无法完成的任务。参考模型有效解决了姿态交换、政策判断、结果聚合和修复提示的问题;RFC 5792、RFC 5793、RFC 6876 与 RFC 7171 又把不同层的协议具体化。

危险来自保障层把一次历史判断升格为永久身份。一旦“合规”失去时间、收集器覆盖和政策版本,它便获得符号权力:数据库里的绿色标签可以压过正在运行的机器。当前防火墙状态反而被当成“与记录不一致”,而不是记录已经过时。

现实应当由运行中的系统优先描述。当前收集器、待处理重评、政策世代与执行确认,才是此刻的运行状态;09:00 的通过仍然真实,只是必须保留它的日期。

所以,09:25 的正确答案并不一定是“失败”。更严谨的答案是:“相关变化发生后尚未完成重新评估,当前状态未知。”这句话没有漂亮的绿灯,却第一次给出了能够修复安全性的事实。

来源