知识卡片
挂钟时间是恢复设计里的反模式
内容
把系统行为和”现在几点”绑定,是恢复设计中容易被忽视的脆弱点——证书过期检查、签名时间戳这类逻辑,一旦恢复操作发生的时间和系统正常运行时的时间假设对不上,就可能引发意外行为,无论是旧凭证意外重新生效,还是本该有效的凭证被误判过期。更稳妥的替代方案是用频率、单调递增的版本号(历元)或显式的有效性列表来表达”新旧”和”是否有效”,这些概念不依赖任何外部时钟,不会被时间同步故障或伪造的时间信号带偏。
参考来源
- 位置:《Google系统架构解密:构建安全可靠的系统》第9章《面向恢复性的设计》9.2.2节(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_080.html`)
- 结论依据:原文明确指出"通常,将事件与挂钟时间联系起来是一种反模式",并给出频率、历元编号/版本号、有效性列表三种替代方案,以Google的ALTS传输安全系统依赖吊销系统而非过期时间为具体案例佐证。
- 原始内容:通常,将事件与挂钟时间联系起来是一种反模式。我们建议使用以下方法之一替代:频率;手动设置的高级进度概念,如历元编号(epoch number)或版本号;有效性列表。