建模权限系统

时间:2010-07-05 05:26:43

标签: security permissions action modeling

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

3 个答案:

答案 0 :(得分:148)

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

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

  • Access control lists是Lampson矩阵的简化:认为它类似于稀疏矩阵实现,它列出了对象和主体以及允许的操作,并且不编码所有“null”条目来自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(及其兄弟,Domain Type Enforcement)在主体和对象上提供标签,并指定允许的对象 - 动词 - 主题(类)表。这是熟悉的SELinux和SMACK。

..然后有一些包含了时间的推移:

  • Chinese Wall是在业务环境中开发的,旨在将组织内的员工分开,为给定市场中的竞争对手提供服务:例如,一旦Johnson开始使用埃克森美孚帐户,他就不被允许访问BP帐户。如果约翰逊首先开始研究BP,他将被拒绝访问埃克森美孚的数据。

  • LOMAChigh-watermark是两种动态方法:LOMAC在逐步访问更高级别的数据时修改流程的权限,并禁止写入更低级别(流程向“top”迁移安全性“)和高水印修改数据上的标签,因为更高级别的进程访问它(数据迁移到”最高安全性“)。

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

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

答案 1 :(得分:9)

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

答案 2 :(得分:1)