Google - ваш друг :)
В любом случае, разделение на роль и группу исходит из концепций компьютерной безопасности (в отличие от простого управления ресурсами). Профессор Рави Сандху подробно описывает семантическую разницу между ролями и группами.
http://profsandhu.com/workshop/role-group.pdf
Группа - это совокупность пользователей с заданным набором разрешений, назначенных группе (и, транзитивно, пользователям). Роль - это набор разрешений, и пользователь фактически наследует эти разрешения, когда действует под этой ролью.
Обычно ваше членство в группе сохраняется на время вашего входа в систему. С другой стороны, роль может быть активирована в соответствии с определенными условиями. Если ваша текущая роль - «медицинский персонал», вы можете просмотреть некоторые медицинские записи данного пациента. Если, однако, ваша роль также является «врачом», вы можете увидеть дополнительную медицинскую информацию, выходящую за рамки того, что может видеть человек, выполняющий только роль «медицинского персонала».
Роли можно активировать по времени суток, месту доступа. Роли также могут быть расширены / связаны с атрибутами. Вы можете действовать как «врач», но если у вас нет атрибута «первичный врач» или отношения со мной (пользователь с ролью «пациент»), тогда вы не сможете увидеть всю мою историю болезни.
Вы можете сделать все это с группами, но, опять же, группы, как правило, сосредоточены на идентичности, а не на роли или деятельности. И только что описанный тип аспектов безопасности, как правило, лучше согласуется с последним, чем с первым.
Во многих случаях, когда используется совместная классификация вещей (и ничего более), группы и роли функционируют одинаково. Однако группы основаны на идентичности, тогда как роли предназначены для разграничения деятельности. К сожалению, операционные системы имеют тенденцию стирать различия, рассматривая роли как группы.
Вы видите гораздо более четкое различие между ролями уровня приложения или системы, несущими специфичную для приложения или системы семантику (как в ролях Oracle ), в отличие от «ролей», реализованных на уровне ОС (которые обычно являются синонимами групп).
Могут быть ограничения для ролей и моделей управления доступом на основе ролей (как и все, конечно):
http://www.lhotka.net/weblog/CommentView,guid,9efcafc7-68a2-4f8f-bc64-66174453adfd.aspx
Около десяти лет назад я видел некоторые исследования по управлению доступом на основе атрибутов и отношений, которые обеспечивают гораздо лучшую степень детализации, чем управление доступом на основе ролей. К сожалению, я уже много лет не видел большой активности в этой сфере.
Наиболее важное различие между ролями и группами заключается в том, что роли обычно реализуют механизм обязательного контроля доступа (MAC). Вы не можете назначать себя (или других) по ролям. Это делает администратор роли или инженер по ролям.
Это внешне похоже на группы UNIX, где пользователь может / может иметь возможность назначить себя в группу (конечно, с помощью sudo). Однако, когда группы назначаются в соответствии с процессом разработки безопасности, различие немного размывается.
Другой важной характеристикой является то, что настоящие модели RBAC могут предоставлять концепцию взаимоисключающих ролей. Напротив, группы на основе идентичности являются аддитивными - идентичность участника - это сумма (или соединение) групп.
Еще одна характеристика модели безопасности, основанной на настоящих RBAC, заключается в том, что элементы, созданные для определенной роли, обычно не могут быть транзитивно доступны тем, кто не действует под этой ролью.
С другой стороны, в рамках модели дискреционного контроля доступа (DAC) (модель по умолчанию в Unix) вы не можете получить такой тип гарантии только с группами. Кстати, это не ограничение групп или Unix, а ограничение моделей DAC, основанных на идентичности (и транзитивно, с группами на основе идентичности).
Надеюсь, поможет.
=======================
Добавил еще немного после того, как увидел хорошо поставленный ответ Саймона. Роли помогают управлять разрешениями. Группы помогают управлять объектами и предметами. Более того, можно думать о ролях как о «контекстах». Роль «X» может описывать контекст безопасности, который определяет, как субъект Y получает доступ (или не получает доступ) к объекту Z.
Еще одно важное различие (или идеальное) состоит в том, что существует специалист по ролям, человек, который разрабатывает роли, контексты, которые необходимы и / или очевидны в приложении, системе или ОС. Ролевой инженер обычно (но не обязательно) также является администратором роли (или системным администратором). Более того, настоящая роль (без каламбура) ролевого инженера - это разработка системы безопасности, а не администрирование.
Это новая группа, формализованная RBAC (даже если она редко используется), которая обычно не присутствовала в системах с поддержкой групп.