建模权限系统


Answers:


156

安全模型是一个广阔的研究领域。有多种模型可供选择,包括简单的模型:

  • Lampson的访问控制矩阵列出了系统中的每个域对象和每个主体,以及允许主体对该对象执行的操作。它非常冗长,如果实际上以这种方式实现,则将占用大量内存。

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

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

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

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

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

  • Bell-LaPadula与Denning的Lattice类似,并提供规则以防止将绝密数据泄漏到未分类的级别,并且通用扩展名提供了进一步的分类和分类,以更好地提供军事风格的“需要知道”的支持。

  • Biba模型类似于贝尔LaPadula,但“颠覆了” -贝尔LaPadula的重点是保密的,但什么都不做了完整,比芭专注于诚信,但什么都不做的保密性。(Bell-LaPadula阻止某人阅读“所有间谍列表”,但会乐于允许任何人向其中写入任何内容。Biba乐于允许任何人阅读“所有间谍列表”,但几乎禁止所有人将其写入。)

  • 类型强制(及其同级域类型强制)在主体和对象上提供标签,并指定允许的对象动词主题(类)表。这是熟悉的SELinux和SMACK。

..然后有一些包含时间的流逝:

  • Chinese Wall是在业务环境中开发的,目的是将组织内的员工分隔开来,该组织为给定市场中的竞争对手提供服务:例如,一旦Johnson开始使用埃克森美孚账户,便无法访问BP账户。如果约翰逊首先开始从事BP工作,那么他将被拒绝访问埃克森美孚的数据。

  • LOMAC高水印是两种动态方法:LOMAC在进程访问更高级别的数据时修改进程的特权,并禁止写入更低的级别(进程向“最高安全性”迁移),而高水印则在进程上修改标签。更高级别的进程访问数据时(数据向“最高安全性”迁移)。

  • Clark-Wilson模型非常开放。它们包括不变式和规则,以确保每个状态转换都不会违反不变式。(这可以像两次输入记帐一样简单,也可以像HIPPA一样复杂。)考虑数据库事务和约束。

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


7
极好的答案。有趣的阅​​读。我想知道这个过于简单但并非罕见的系统在您的列表中的位置:“默认情况下,访客的级别为0,注册用户的级别为5,系统管理员的级别为9,并且只能由该级别或更高级别的人员执行。”
奇怪的想

1
@Oddthinking,那个简单的模型可能在几个:)中,但是最简单的“匹配”是Ring模型。正如在x86中实现的那样,它具有四个级别,如您的示例所示,每个级别都添加了只能由该级别或更高级别的代码才能完成的操作。(您给他们起的名字是一个正交的问题。)我也可以轻松想象这个示例的ACL,Capability,Lattice,BLP和TE实现。如果其他人也可以实现此模型,我不会感到惊讶。但是简单是一种美德。:)
sarnold

@弗兰克,谢谢!感谢您的收获,我的拼写非常残酷。
sarnold 2010年


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.