建模权限系统

问题描述 投票:75回答:3

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

security permissions action modeling
3个回答
150
投票

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

  • 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的莱迪思,并提供了防止将绝密数据泄露到非分类级别的规则,并且通用扩展提供了进一步的划分和分类,以更好地提供军事风格的“需要知道”支持。
  • Biba Model类似于Bell-LaPadula,但“转过头来” - Bell-LaPadula专注于机密性,但对诚信没有任何作用,而Biba专注于诚信,但对机密性没有任何作用。 (Bell-LaPadula阻止某人阅读所有间谍名单,但很乐意允许任何人写任何东西.Biba很乐意允许任何人阅读所有间谍名单,但禁止几乎所有人写入。)
  • Type Enforcement(及其兄弟,域类型强制执行)在主体和对象上提供标签,并指定允许的对象 - 动词 - 主题(类)表。这是熟悉的SELinux和SMACK。

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

  • Chinese Wall是在商业环境中开发的,旨在将组织内的员工分开,为特定市场中的竞争对手提供服务:例如,一旦Johnson开始使用埃克森美孚帐户,就不允许他访问BP帐户。如果约翰逊首先开始研究BP,他将被拒绝访问埃克森美孚的数据。
  • LOMAChigh-watermark是两种动态方法:LOMAC在逐步访问更高级别的数据时修改进程的权限,禁止写入更低级别(进程向“顶级安全性”迁移),高水印修改数据上的标签为更高级别的进程访问它(数据迁移到“最高安全性”)。
  • Clark-Wilson模型非常开放;它们包括不变量和规则,以确保每个状态转换都不违反不变量。 (这可以像double-entry accounting一样简单,也可以像HIPPA一样复杂。)考虑数据库事务和约束。

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


9
投票

我更喜欢RBAC。虽然,你可以发现它非常类似于ACL,但他们differ semantically


© www.soinside.com 2019 - 2024. All rights reserved.