【发布时间】:2011-03-11 18:42:29
【问题描述】:
您将如何建模一个系统来处理在应用程序中执行某些操作的权限?
【问题讨论】:
标签: security permissions action modeling
您将如何建模一个系统来处理在应用程序中执行某些操作的权限?
【问题讨论】:
标签: security permissions action modeling
安全模型是一个大型(且开放)的研究领域。有大量模型可供选择,包括简单的:
Lampson's Access control matrix 列出系统中的每个域对象和每个主体,以及允许主体在该对象上执行的操作。它非常冗长,如果以这种方式实际实现,则非常占用内存。
Access control lists 是 Lampson 矩阵的简化:认为它类似于列出对象和主体以及允许的操作的稀疏矩阵实现,并且不编码 Lampson 矩阵中的所有“空”条目矩阵。为了方便,访问控制列表可以包含“组”,并且列表可以通过对象或主体存储(有时,通过程序,如AppArmor 或TOMOYO 或LIDS)。
李>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 工作,他将被拒绝访问埃克森美孚的数据。
LOMAC 和 high-watermark 是两种动态方法:LOMAC 会在进程访问更高级别的数据时修改它们的权限,并禁止写入较低级别(进程向“顶级安全性”迁移),当更高级别的进程访问数据时,高水印会修改数据的标签(数据向“顶级安全性”迁移)。
Clark-Wilson 模型非常开放;它们包括不变量和规则,以确保每个状态转换都不会违反不变量。 (这可以像double-entry accounting 一样简单,也可以像HIPPA 一样复杂。)想想数据库事务和约束。
如果您想更深入地了解已发布的模型,Matt Bishop 的“计算机安全:艺术与科学”绝对值得一读。
【讨论】:
我更喜欢RBAC。虽然,你可以发现它与ACL 非常相似,但它们是differ semantically。
【讨论】: