摘要

  • Jerry Saltzer 在 1974 年的 Multics 保护机制论文中指出,CTSS 的共享链接会影响访问方式,导致撤权要进入借用者的目录,审计则要搜遍系统;Multics 的链接只保留间接寻址功能。
  • 把权限决定放回目标段的访问控制表,能让授权位置更清楚,却不能收回已经复制的数据,也不能自动证明缓存、映射或会话已经接到新的决定。

设想一个文件已经借给同事。入口不是放在文件主人手边,而是写进同事自己的目录。主人改变主意时,问题便不只是“把谁从名单中删掉”,而是“还有多少入口散落在别人控制的位置”。若同一个人通过两个入口获得不同权利,系统又该以哪个入口为准?

Saltzer 在回顾 CTSS 时抓住了这类麻烦。CTSS 通过特殊的目录链接共享文件:链接指向原文件,通常还附带对可用方式的进一步限制。它很灵活,但授权状态也随之分散。撤销访问必须修改借用者目录;同一使用者可能因所走链接不同而拥有不同权利;若要列出所有能访问某文件的人,审计者得搜索每一个目录,还可能窥见与审计无关的私人信息。

Multics 没有抛弃链接,而是缩小了链接的权力。链接仍可给资源另一个名字,也仍能把进程带到目标,但它本身不授予访问权。它只是间接地址。真正的决定由目标段所附的访问控制表作出。

名称、主体与动作

在 Saltzer 描述的 Multics 存储体系里,命名段既是编目单位,也是可以映射进进程虚拟内存的单位,还是独立保护单位。进程带有不可伪造的主体标识;请求访问某个已编目的资源时,系统把该标识与资源的访问控制表逐项比较。

“访问”也不是一个含糊的总开关。对段,可以分别控制读、写、执行;对消息队列,可以区分入队与出队;对目录,则可区分列出、修改与新增。路径只解决“是哪一个资源”,控制表还要回答“是哪一个主体、要做哪一个动作”。

这使同一目标不会因为换了名字就悄悄改变权利。别名可以增减,访问决定仍在目标处集中解释。资源主人或相应管理员改变控制表,不必先追回每个借用者目录里的名字。审计也可从资源和它的控制表出发,而不是把所有路径都当成潜在的隐形许可证。

当然,控制表本身并不简单。Multics 的主体标识可以包含个人、项目和隔离区;具体条目可优先于宽泛条目;目录还决定谁有权修改下层项目的控制表。架构没有消灭权力层级,它只是让权力在哪儿生效更容易定位。

为什么放弃“共同附表”

Saltzer 的价值还在于他记录了被放弃的方案。早期 Multics 曾把目录的初始访问控制表当作目录内每个资源的共同附表。看起来,改动一个上层默认值就能影响许多资源。问题是,附表与各资源已有条目的组合、排序不同,同一次改动可能产生不同后果,使用者很难预见。

后来,系统改为在创建资源时复制初始控制表。它牺牲了动态继承:未来调整目录默认值,不会自动重写过去的资源。换来的好处是,每个资源的现行规则更能独立阅读。Saltzer 把访问控制描述为表达灵活性、可理解性与实现成本之间的工程权衡。不能清楚说明后果的“灵活”,会把错误藏进日常操作。

链接去权也属于同一选择。让每条路径携带不同限制,适合个别局部需求,却会制造多个互相冲突的事实来源。把链接限制为命名工具,相当于减少撤权时必须寻找和协调的地方。

被记住的允许决定

Saltzer 与 Michael D. Schroeder 后来把“完全中介”列为信息保护原则:每次对资源的访问都必须接受权限检查。1974 年的论文同时指出,持续运行的系统会为以后使用而记住一些决定;一旦权限变化,设计者必须考虑新状态怎样传入这些局部记忆。

这里不能把原则读成“每碰一个字节就重新读表”。传统文件系统可能在打开时检查,Multics 则与段的映射相关。若打开的句柄、已有映射、会话或缓存继续沿用旧结果,中心控制表的更新只能证明规则已经改变,不能证明所有旧决定都已失效。

因此,一次可靠的授权记录至少要连起主体、最终解析出的资源、请求动作、采用的规则版本、决定时间,以及由此产生的本地状态寿命。撤权也需要完成证据:哪些映射、会话、缓存或委托凭据已经失效,之后哪一次尝试证实新状态确实被执行。

撤权无法逆转披露

把名字与权限分开,可以让撤权更利落,却不能让信息倒流。Saltzer 明确提醒,获准读取段的人可以制作副本。随后取消源段权限,并不会删除那份副本。信息在合法释放后的继续控制,当时仍是研究问题。

论文也没有把 Multics 描绘成无懈可击的终点。它列出未完成机制和已知弱点,包括当时处于最高保护区的模块过多,难以逐行审查。清楚的边界只是让需要信任的部分变得可见,并不自动证明它足够小、足够正确。

今天,分享链接、别名、对象句柄和长期会话仍容易被统称为“访问”。Saltzer 的比较要求运营者保留四类不同证据:名字如何找到资源,谁被授予何种动作,实际发生过什么使用,以及撤权怎样传到旧决定。链接可以继续存在;权限必须随时有另一个地方重新作答。

来源