【问题标题】:Modelling a permissions system为权限系统建模
【发布时间】:2011-03-11 18:42:29
【问题描述】:

您将如何建模一个系统来处理在应用程序中执行某些操作的权限?

【问题讨论】:

    标签: security permissions action modeling


    【解决方案1】:
    【解决方案2】:

    安全模型是一个大型(且开放)的研究领域。有大量模型可供选择,包括简单的:

    • Lampson's Access control matrix 列出系统中的每个域对象和每个主体,以及允许主体在该对象上执行的操作。它非常冗长,如果以这种方式实际实现,则非常占用内存。

    • Access control lists 是 Lampson 矩阵的简化:认为它类似于列出对象和主体以及允许的操作的稀疏矩阵实现,并且不编码 Lampson 矩阵中的所有“空”条目矩阵。为了方便,访问控制列表可以包含“组”,并且列表可以通过对象或主体存储(有时,通过程序,如AppArmorTOMOYOLIDS)。

      李>
    • Capability systems 基于对象的引用或指针的思想;一个进程可以访问一组初始的能力,并且只有通过从系统上的其他对象接收它们才能获得更多的能力。这听起来很遥远,但想想 Unix 文件描述符:它们是对特定打开文件的不可伪造的引用,并且文件描述符可以交给或不交给其他进程。如果您将描述符提供给另一个进程,它将有权访问该文件。整个操作系统都是围绕这个想法编写的。 (最著名的可能是 KeyKOS 和 EROS,但我敢肯定这是值得商榷的 观点。 :)

    ... 到更复杂的,它具有分配给对象和主体的安全标签:

    • Security Rings,例如在 Multics 和 x86 CPU 等中实现,并提供安全陷阱或门以允许进程在环之间转换;每个环都有一组不同的权限和对象。

    • Denning's Lattice 是一个模型,其中允许主体以非常分层的方式与哪些安全标签进行交互。

    • Bell-LaPadula 类似于 Denning 的 Lattice,并提供了防止绝密数据泄露到非机密级别的规则,而常见的扩展提供了进一步的划分和分类,以更好地提供军事风格的“需要知道”支持。

    • Biba Model 与 Bell-LaPadula 类似,但“颠倒过来”——Bell-LaPadula 专注于机密性,但不为完整性做任何事情,Biba 专注于完整性,但什么也不做为保密。 (Bell-LaPadula 阻止某人阅读所有间谍名单,但很乐意允许任何人在其中写入任何内容。Biba 很乐意允许任何人阅读所有间谍名单,但几乎禁止所有人写入。)

    • Type Enforcement(及其兄弟域类型强制)提供主体和对象的标签,并指定允许的对象-动词-主题(类)表。这就是大家熟悉的 SELinux 和 SMACK。

    ..还有一些融合了时间的流逝:

    • Chinese Wall 是在商业环境中开发的,用于将在特定市场为竞争对手提供服务的组织内的员工分开:例如,一旦约翰逊开始处理埃克森美孚的账户,他就不能访问BP 帐户。如果约翰逊先开始为 BP 工作,他将被拒绝访问埃克森美孚的数据。

    • LOMAChigh-watermark 是两种动态方法:LOMAC 会在进程访问更高级别的数据时修改它们的权限,并禁止写入较低级别(进程向“顶级安全性”迁移),当更高级别的进程访问数据时,高水印会修改数据的标签(数据向“顶级安全性”迁移)。

    • Clark-Wilson 模型非常开放;它们包括不变量和规则,以确保每个状态转换都不会违反不变量。 (这可以像double-entry accounting 一样简单,也可以像HIPPA 一样复杂。)想想数据库事务和约束。

    如果您想更深入地了解已发布的模型,Matt Bishop 的“计算机安全:艺术与科学”绝对值得一读。

    【讨论】:

    • 优秀的答案。有趣的阅​​读。我想知道这个过于简单但并不罕见的系统在您的列表中的位置:“默认情况下,客人的级别为 0,注册用户的级别为 5,系统管理员的级别为 9。每个操作都有一个与之关联的级别,并且只能由该级别或更高级别的人员执行。”
    • @Oddthinking,那个简单的模型可能有几个:),但最简单的“匹配”是环模型。正如在 x86 中实现的那样,它有四个级别,如您的示例所示,每个级别都添加了只能由该级别或更高级别的代码完成的操作。 (您将它们命名为正交问题。)我也可以轻松想象此示例的 ACL、Capability、Lattice、BLP 和 TE 实现。如果其他人也能实现这个模型,我不会感到惊讶。但简单是一种美德。 :)
    • @Frank,谢谢!我的拼写非常糟糕,感谢您的捕获。
    【解决方案3】:

    我更喜欢RBAC。虽然,你可以发现它与ACL 非常相似,但它们是differ semantically

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2020-08-06
      • 2012-04-15
      • 1970-01-01
      • 2011-05-05
      • 2014-08-28
      相关资源
      最近更新 更多