В чем разница между группами и ролями? - PullRequest
13 голосов
/ 24 сентября 2010

Многие реализации управления идентификацией используют роли в дополнение к группам. Насколько они разные? До сих пор я не нашел убедительного варианта использования для их разделения. Все объяснения, которые я прочитал, являются расплывчатыми и волнующими.

Можете ли вы привести хороший пример, когда необходимы группы ролей и ?

Ответы [ 4 ]

18 голосов
/ 24 сентября 2010

Человек - Группа - Роли

  • Человеку принадлежит одна или несколько групп.
  • Группе назначено несколько ролей.

Пример:

  • В системе существуют две роли stock_purchaser , timecard_supervisor .
  • В системе существуют две группы shift_supervisor , Regional_Manager .
  • Regional_Manager имеет stock_purchaser и timecard_supervisor роль.
  • shift_supervisor имеет роль timecard_supervisor .

В случае создания новой роли (например, review_leave_requests ) - ее можно добавить квсе те группы, которым требуется эта роль.В системе, имеющей только роли, это может быть трудоемкой задачей - добавить роль всем людям, которым она требуется.

17 голосов
/ 24 сентября 2010

Роли - это наборы прав

Группы - это наборы людей

Представьте, что у вас есть 2 группы людей (G1, G2), использующие приложение (A1), для которого у вас есть два типа пользователей: администраторы и пользователи только для чтения.

Вы можете создать роль администратора на А1, определить его права и дать G1 эту роль Если G2 также нужны эти права, вам не нужно предоставлять их по одному, вы можете просто дать G2 ту же роль, которую вы создали для G1

1 голос
/ 16 апреля 2018

Для меня разница между "группами" и "ролями" заключается в Количество элементов

Группа не может содержать группу.Но роль может содержать роли.

Мне нравится способ, которым PostgreSQL обрабатывает ее: из Роли и привилегии базы данных

Роль можно рассматривать какпользователь базы данных или группа пользователей базы данных, в зависимости от того, как установлена ​​роль

Это означает, что использование ролей может сделать приложения более простыми и гибкими.Представьте себе инструмент отслеживания проблем.Используя внешний ключ к роли, вы обрабатываете оба случая: вы можете ссылаться на одного человека или несколько человек.

1 голос
/ 06 июня 2013

Одним из важных моментов, который отсутствует во всех комментариях, является тот факт, что вы можете назначать роли и отдельным пользователям, а не только группам.

Вот пример использования: Профессор физики в университете выполняет роль «Тест оценки» (или право или привилегия) для определенного курса или набора курсов. Однако он решает продолжить учебный год и хочет, чтобы другой инструктор (или, возможно, несколько инструкторов - группа), т. Е. Его замена (и), выполнял ту же роль (и) (привилегии), чем тот же набор курсов. Обратите внимание, что замещающие инструкторы могут принадлежать к разным группам пользователей. Администратор может легко назначить соответствующие роли отдельным пользователям или группам пользователей. Конечно, после возвращения штатного профессора администратор может отозвать эти роли (привилегии).

С системной точки зрения нам важно только то, какие методы разрешено выполнять пользователю (или группе пользователей). Перед выполнением ограниченного метода мы проверяем роли пользователей, вызывая другие методы, которые обычно возвращают логические значения.

...