Google是您的朋友:)
无论如何,角色和组之间的区分来自于计算机安全性的概念(与简单的资源管理相对)。Ravi Sandhu教授对角色和群体之间的语义差异进行了开创性的报道。
http://profsandhu.com/workshop/role-group.pdf
组是具有给定权限集的用户的集合,该组权限分配给该组(以及可传递地分配给用户)。角色是权限的集合,并且用户在该角色下操作时可以有效地继承这些权限。
通常,您的组成员身份将在您登录期间保持不变。另一方面,可以根据特定条件激活角色。如果您当前的角色是“医疗人员”,则可以查看给定患者的一些病历。但是,如果您的角色也是“医师”,则您可能会看到仅具有“医疗人员”角色的人所能看到的其他医疗信息。
可以通过一天中的时间,访问位置来激活角色。角色也可以增强/与属性相关联。您可能以“医师”的身份工作,但是如果您没有与我的“主要医师”属性或与我的关系(具有“患者”角色的用户),那么您将看不到我的全部病史。
您可以使用小组来完成所有这些工作,但是小组再次倾向于集中于身份,而不是角色或活动。刚刚描述的安全方面的类型倾向于使后者与前者更好地保持一致。
在许多情况下,为了将事物分类在一起(仅此而已),组和角色的功能是相同的。但是,组是基于身份的,而角色是用于划分活动的。不幸的是,操作系统倾向于模糊区分,将角色视为组。
您将看到应用程序或系统级别角色的区别更加清晰-承载应用程序或系统特定的语义(例如在Oracle角色中)-与在OS级别实现的“角色”(通常是组的同义词)相对。
角色和基于角色的访问控制模型可能会受到限制(当然与其他任何东西一样):
http://www.lhotka.net/weblog/CommentView,guid,9efcafc7-68a2-4f8f-bc64-66174453adfd.aspx
大约十年前,我看到了一些关于基于属性和基于关系的访问控制的研究,这些研究提供了比基于角色的访问控制更好的粒度。不幸的是,多年来我在该领域没有看到太多活动。
角色和组之间最重要的区别是角色通常实现强制性访问控制(MAC)机制。您无法将自己(或其他人)分配给角色。角色管理员或角色工程师可以做到这一点。
这从表面上类似于UNIX组,在该组中,用户可以(也许通过sudo)将自己分配给组(当然,也可以通过sudo)。但是,根据安全工程流程分配组时,区别有点模糊。
另一个重要的特征是,真正的RBAC模型可以提供互斥角色的概念。相反,基于身份的组是加性的-主体的身份是组的总和(或合集)。
基于True-RBAC的安全模型的另一个特征是,为特定角色创建的元素通常不能由不担任该角色的人员来传递访问。
另一方面,在自由访问控制(DAC)模型(Unix中的默认模型)下,您不能仅凭组获得这种类型的保证。顺便说一句,这不是组或Unix的限制,而是基于身份(以及可传递的,基于身份的组)的DAC模型的限制。
希望能帮助到你。
=======================
在看到Simon的好评后,再添加一些内容。角色可帮助您管理权限。组可以帮助您管理对象和主题。此外,人们可以将角色视为“上下文”。角色“ X”可以描述一个安全上下文,该上下文确定主体Y如何访问(或不访问)对象Z。
另一个重要的区别(或理想情况)是,有一个角色工程师,一个工程师在应用程序,系统或OS中必需和/或显而易见的角色,上下文。角色工程师通常也是(但不一定是)角色管理员(或sysadmin)。此外,角色工程师的真正角色(无双关语)是在安全工程领域,而不是管理领域。
这是由RBAC正式化的一个新颖的小组(即使很少使用),该小组通常不存在于具有小组功能的系统中。