每种都有什么好处,何时应该选择一种呢?在某些情况下应合并这些文件吗?

您有常用用法示例吗?

那MAC又适合什么呢?

#1 楼

RBAC(基于角色的访问控制)基于定义业务角色列表,并将系统中的每个用户添加到一个或多个角色。然后,将权限和特权授予每个角色,并且用户通过其角色成员身份(与组相当)来接收权限。应用程序通常会测试用户是否具有特定角色的成员资格,然后基于该角色授予或拒绝访问。
自由访问控制(DAC)允许用户或管理员在特定资源上定义访问控制列表(ACL)。 (例如文件,注册表项,数据库表,OS对象等),此列表将包含条目(ACE),这些条目定义有权访问该资源的每个用户以及她对该资源的特权。

RBAC相对于DAC的主要好处是易于管理-原则上,无论有多少用户,您都只有很少的角色,是集中管理的,这仅仅是向每个用户授予正确权限的问题角色;与DAC相反,对于每个新用户(或用户更改,删除等),您都必须遍历她需要访问的所有资源并将其添加到列表中。
另一方面,DAC通常更简单,并且通常更精细。同样,在DAC模型中,数据所有者可以决定谁可以访问(如果他对数据具有此权限),并可以从列表中添加或删除人员。

Windows文件系统是DAC的最常见示例。另一方面,RBAC的一个非常常见的例子是公司文件服务器上的DAC-“销售” ActiveDirectory组中的任何人都可以访问\ Sales \共享文件夹。更常见的是Windows中的Administrators组。

MAC是强制性访问控制,可以视为分类或隐私级别。这在军事系统中最常用,在大型机时代也是如此:)。尽管当前的操作系统正在实现这种风格,例如Vista / Win7的Integrity Levels,但已不再使用它了。

总结差异:


DAC基于个人权限,“组”级权限上的RBAC
DAC由数据所有者设置,RBAC由系统所有者设置/ s(通常,开发人员定义授予每个角色的访问权限,而操作管理员则将用户置于角色中)
DAC定义通常附加在数据/资源上,而RBAC通常定义在两个位置:在代码中/配置/元数据(角色访问权限),以及用户对象(或表-每个用户拥有的角色)上。
另一方面,RBAC角色是集中管理的(谁与哪些角色相关联),而DAC是“在资源上”管理的(即,您分别管理每个资源)。
每个权限的定义在RBAC中,角色通常是静态的,并且仅授予用户角色;在DAC中,每个资源的权限通常在运行时更改。
DAC应该被视为枚举“谁有权访问我的数据”,而RBAC则定义了“该用户可以做什么”。


评论


根据我对RBAC的了解,没有对象-只有可以执行的操作。

– d -_- b
2011年12月14日下午5:30

@RolfRander虽然在许多实现中很常见,但并不是模型固有的。

–AVID♦
2012-03-10 21:42

可能很高兴注意到RBAC和ACL可以互相替代。您可以配置RBAC权限以覆盖ACL设置的策略,反之亦然。同样,有相当多的RBAC实现向用户授予酌处权。那些RBAC系统已被证明能够提供DAC的所有功能。

–雅科
2012年5月18日上午10:17

还可能需要注意的是,在RBAC中没有否定权限(拒绝)。尽管某些实现确实提供了它们,但是否定权限通常与ACL / DAC关联,而不与RBAC关联。

–雅科
2012年5月18日上午10:19

要获得否定权限和对资源的更细粒度授权,请使用基于属性的访问控制(ABAC)

–大卫·布罗萨德(David Brossard)
16年8月17日在16:43