1-freelance.ru

Журнал "Фрилансер"
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Настройка ролей и прав доступа

Настройка ролей и прав доступа

Область применения: управляемое приложение, обычное приложение.

Действует для конфигураций УП (ERP), УТ 11 и входящих в них библиотек.
Для других конфигураций рекомендуется к использованию.
Содержит уточнения к требованиям других стандартов.

1. Общие положения

1.1. Роли создаются «атомарными», т.е. дающими права на доступ к элементарным функциям программы. Из этих элементарных ролей создаются профили пользователей, которые уже и назначаются пользователям средствами БСП. Деление прав на доступ к объектам между функциями должно быть таким, чтобы на типовом внедрении не возникало необходимости в создании новых ролей.

Исключение: для ролей, назначаемых внешним пользователям, задается исчерпывающий набор прав к необходимым объектам.

Например, в УП(ERP) это роль ПартнерСамообслуживание .

1.2. Роль ПолныеПрава (англ. FullAccess ) совместно с ролью АдминистраторСистемы (англ. SystemAdministrator ) дает неограниченный доступ (без RLS) ко всем объектам. См. стандартные роли.

1.3. Ни одна роль (в т.ч. ПолныеПрава и АдминистраторСистемы ) не должна давать право на интерактивное удаление ссылочных объектов.

  • после создания нового объекта нужно зайти в роль ПолныеПрава и отключить право интерактивного удаления у ссылочных объектов.

1.4. Только роль ПолныеПрава и АдминистраторСистемы должна давать право на удаление ссылочных объектов.

1.5. Только для роли ПолныеПрава должен быть установлен флаг «Устанавливать права для новых объектов». Для всех остальных ролей этот флаг должен быть снят.

1.6. Если какое-то право может быть использовано только администратором системы (например, использование какого-то отчета или обработки), то достаточно, чтобы это предоставлялось одной из ролей ПолныеПрава и АдминистраторСистемы , создавать отдельные роли в этом случае не требуется.

1.7. Во всех документах, предполагающих проведение, должны быть выставлены флаги «Привилегированный режим при проведении» и «Привилегированный режим при отмене проведения», поэтому не нужно создавать роли, дающие права на изменение регистров, подчиненных регистраторам.

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

1.8. Во всех функциональных опциях должны быть выставлены флаги «Привилегированный режим при получении».

Исключение: в конфигурации могут быть предусмотрены параметризированные ФО, для которых разработчик специально предусматривает различия в получаемых значениях пользователями с разными правами.
Пример: Есть параметризованная ФО ИспользоватьВалютуПриРасчетеСПерсоналом , которая параметризуется организацией. Если пользователь будет получать ее значение в контексте своих прав, то он не увидит поле «валюта» в документе, если у него нет ни одной организации, где применяется валютный учет.

1.9. Не должно быть ролей, кроме стандартных ролей БСП, которые дают общие права (такие как Администрирование , ТонкийКлиент и т.п.).

  • при создании новой роли нужно следить, чтобы эти права были выключены.

1.10. В отдельных случаях для неконфиденциальных данных и общедоступных функций не требуется создавать отдельную роль на чтение (а также просмотр и ввод по строке — для ссылочных данных), а следует включать эти права в роли БазовыеПрава<ИмяБиблиотеки> (англ. BasicAccess<LibraryName> ) и БазовыеПраваВнешнихПользователей<ИмяБиблиотеки> (англ. BasicAccessExternalUser<LibraryName> ) (эта роль необходима только если в конфигурации предусмотрена работа с внешними пользователями). Например, это константы, общенациональные классификаторы, общие формы выбора периода, ввода контактной информации и др.

1.11. Не допускается, чтобы одна роль давала права на объекты, которые относятся к другим подсистемам.
Например, в хранилище УП (ERP) нельзя, чтобы одна роль давала права на объекты, которые есть в УТ 11 и на объекты, которых в УТ 11 нет. См. также: Разработка ролей в библиотеках.

2. Правила создания ролей к элементарным функциям

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

Пример:
Есть документ «Заказ клиента» и связанный с ним регистр накопления «Заказы клиентов», который хранит остатки неотгруженных товаров и неоплаченных сумм. По сути этот регистр является отражением текущего состояния табличной части заказа. Если пользователь имеет права на документ, то будет странно, что он не будет иметь прав на регистр. Поэтому документ «Заказ клиента» и регистр накопления «Заказы клиентов» можно объединить в одну элементарную функцию. Если есть отчет, отображающий в удобном виде остатки регистра «Заказы клиентов», то логично его тоже включить в эту функцию.

Противоположный пример:
Есть документ «Реализация товаров и услуг», выступающий в роли распоряжения на отгрузку товаров. Остатки по распоряжениям на отгрузку товаров хранит регистр накопления «Товары к отгрузке». Объединять «Реализацию товаров и услуг» и регистр «Товары к отгрузке» в рамках одной функции было бы не правильно, т.к., например, кладовщик, вполне может иметь права на чтение регистра «Товары к отгрузке», но может не иметь прав на чтение документа «Реализация товаров и услуг».

2.2. В случае если возникают сомнения в том, что два объекта могут быть отнесены к одной элементарной функции, лучше выделить их в разные.

2.3. Каждый объект должен быть отнесен к элементарной функции, и только к одной.

2.4. Объекты, относящиеся к разным библиотекам не могут быть отнесены к одной элементарной функции.

3. Ссылочные объекты и регистры

3.1. Для функций, включающих в себя ссылочные объекты и независимые регистры сведений, должно быть создано две роли

  • Чтение<ИмяФункции> (англ. Read<FeatureName> );
  • ДобавлениеИзменение<ИмяФункции> (англ. InsertUpdate<FeatureName> ) (или Изменение<ИмяФункции> (англ. Update<FeatureName> ), если добавление выполняется автоматически, либо только администратором).

Роли должны содержать следующие права (когда они имеются у объекта метаданных):

Назначение нескольких ролей одному пользователю

В настоящее время я разрабатываю базу данных с ролевым меню, которое имеет следующие требования.

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

Я думал о хранении ролей в виде значений, разделенных запятыми, однако это еще больше усложнило бы ситуацию. Является ли их лучшее решение? enter image description here

2 ответа

  • Назначьте несколько ролей пользователю программно в SugarCRM

Я пытаюсь выяснить, как я могу назначить несколько ролей пользователю в SugarCRM программно. Проведя некоторые исследования, я обнаружил, что могу использовать функцию role->set_user_relationship() для этого частично. Но это не позволяет мне передавать несколько ролей в качестве параметра. В.

Я хочу добавить несколько ролей к одному пользователю, в настоящее время я добавляю одну роль к пользователю, я хочу возможность добавить несколько ролей Код: protected void Page_Load(object sender, EventArgs e) < BindRolesToList(); CheckBoxList.Visible = true; >protected void.

C. Тримбл прав (+1). Если пункты меню доступны для нескольких ролей, а пользователи могут иметь несколько ролей, то на самом деле у вас есть две связи many-to-many, которые необходимо записать.

Это означает, что вам нужно добавить еще одну таблицу, как показано ниже:

ERD

Эта таблица может содержать столбцы в соответствии с C. Ответ Тримбла, или у вас может быть составной первичный ключ всего UserId + RoleId — аналогично вашей таблице MenuItemRoles . Последнее было бы моим дизайнерским предпочтением, поскольку таблица является чистым пересечением, и нет особых причин ожидать, что UserRoles будет иметь детей, связанных с ней.

Обратите внимание, что при получении доступа к элементу меню пользователя вы можете закоротить ссылку с UserRoles на MenuItemRoles , поскольку оба они имеют столбец RoleId . Это означает, что вы можете объединяться непосредственно между таблицами пересечений, оставляя Roles вне их. В TSQL году это выглядело бы так:

Вы могли бы сделать то же самое в LINQ. Если вы используете EF, то вам просто придется пройти долгий путь (через Roles ).

Отношения между пользователями и ролями являются отношениями many-to-many, поэтому вам придется моделировать отношения в таблице с двумя внешними ключами. Что-то вроде:

Затем вы можете использовать эту таблицу для объединения таблиц пользователей и ролей и получения нескольких значений.

Похожие вопросы:

можно ли выполнить динамическое назначение ролей на основе результата викторины в Moodle? Как это должно работать: — новый пользователь отвечает на вопросы в специальной викторине startup — исходя.

То, что у меня есть, — это два стола. Одна таблица с пользователями и другая таблица с ролями пользователей. Я знаю, как получить данные из mysql DB, но как добавить все эти роли к моему.

Ive justed начал использовать laravel, и мне любопытно узнать, предлагает ли laravel-4 массовое назначение на основе ролей прямо из коробки ? Я хочу разрешить некоторым пользователям доступ к этим.

Я пытаюсь выяснить, как я могу назначить несколько ролей пользователю в SugarCRM программно. Проведя некоторые исследования, я обнаружил, что могу использовать функцию role->set_user_relationship().

Я хочу добавить несколько ролей к одному пользователю, в настоящее время я добавляю одну роль к пользователю, я хочу возможность добавить несколько ролей Код: protected void Page_Load(object sender.

Я пытаюсь программно назначить несколько ролей пользователю в DNN. Используя следующий код : Roles_controller.AddUserRole(0, user_id, role_id, DateTime.Now, DateTime.Now.AddYears(10));.

Когда я добавляю раздел appRoles в манифест приложения в Azure AD, я могу назначить пользователей и группы ролям на портале Управления. appRoles: [ < allowedMemberTypes: [ User ], description: Can.

Я создаю блок в moodle для назначения определенных системных ролей пользователю. Не уверен, что это лучший способ сделать это.. Я знаю, что вы можете назначать роли из меню Администрирование Сайта >.

Вместо того чтобы иметь всех пользователей с правом делать все, я пытаюсь добавить роли (администратор, пользователь) в рабочий проект Java EE. Я начал сам, изменяя таблицы, написав собственный.

Я хочу создать роли для зарегистрированного приложения в Azure Active Directory и загрузить меню в зависимости от ролей, назначенных пользователю. Я сделал это в своем предыдущем проекте, где нет.

Можно ли одному пользователю назначить несколько ролей

Роль объединяет набор разрешений, которые могут быть предоставлены пользователю.

Пользователь может иметь несколько ролей. При этом он получает логическую сумму (ИЛИ) прав на некоторый объект от всех ролей, которые у него есть. Например, если пользователю назначены роли A и B, роль A не дает разрешений на X, роль B разрешает X, то в итоге X будет разрешен.

Роль может давать разрешения на конкретные целевые объекты, а также на целые категории объектов: экраны, операции над сущностями, атрибуты сущностей, специфические разрешения. Например, можно легко дать разрешение Read на все сущности и разрешение View на все их атрибуты.

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

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

Рекомендуемый способ определения роли — создать класс, расширяющий AnnotatedRoleDefinition , переопределить методы, возвращающие разрешения различных типов, и добавить им аннотации, указывающие, какие разрешения дает данная роль. Класс должен находиться в модуле core . Например, роль дающая разрешения на сущность Customer и ее экраны списка и редактирования может выглядеть следующим образом:

Аннотации могут быть указаны несколько раз. Например, следующая роль дает доступ только на чтение ко всем сущностям и их атрибутам, позволяет модифицировать атрибуты grade and comments сущности Customer , а также позволяет создавать и изменять сущность Order и ее атрибуты:

Определять роли во время разработки можно только если свойство приложения cuba.security.rolesPolicyVersion установлено в 2, что является значением по умолчанию для проектов, созданных на версии CUBA 7.2 или новее. Если ваш проект мигрирует с предыдущей версии CUBA, см. раздел Предыдущая реализация ролей и разрешений.

Фреймворк содержит UI, который позволяет создавать роли в работающем приложении, см. Administration > Roles. Роли, созданные таким образом, можно изменить или удалить. Роли, заданные при разработке приложения, доступны только на чтение.

В верхней части экрана редактирования роли отображаются общие параметры роли, в нижней части — вкладки управления разрешениями.

Вкладка Screens — разрешения на экраны системы. Дерево в левой части вкладки отражает структуру главного меню системы. Последним элементом дерева является Other screens, внутри которого сосредоточены экраны, не включенные в главное меню (например, экраны редактирования сущностей).

Флажок Allow all screens разрешает все экраны сразу. Он эквивалентен аннотации @ScreenAccess(screenIds = «*») .

Вкладка Entities — разрешения на операции с сущностями. При переходе на данную вкладку изначально включен флажок Assigned only, поэтому в таблице отображаются только сущности, для которых в данной роли уже есть явные разрешения. Поэтому для новой роли таблица пуста. Для установки разрешений снимите флажок Assigned only и нажмите Apply. Список сущностей можно фильтровать, вводя в поле Entity любую часть имени сущности и нажимая Apply. Установив флажок System level, можно выбрать системную сущность, помеченную аннотацией @SystemLevel . По умолчанию такие сущности не показываются в таблице.

Панель Allow all entities предназначена для разрешения операций над всеми сущностями. Ее флажки эквивалентны аннотации @EntityAccess(entityName = «*», …​) .

Вкладка Attributes — разрешения на атрибуты сущностей. В таблице сущностей в колонке Permissions отображается список атрибутов, для которых явно указаны разрешения. Управление списком сущностей аналогично описанному для вкладки Entities.

Панель Allow all attributes предназначена для разрешения просмотра или модификации всех атрибутов всех сущностей. Если необходимо разрешить все атрибуты конкретной сущности, отметьте флажок «*» внизу панели Permissions для этой сущности. То же самое можно сделать используя символ «*» в атрибутах entityName и view/modify аннотации @EntityAttributeAccess .

Вкладка Specific — разрешения на именованную функциональность. Имена объектов, на которые могут быть назначены специфические разрешения, определяются в конфигурационном файле permissions.xml проекта.

Флажок Allow all specific permissions является эквивалентом аннотации @SpecificAccess(permissions = «*») .

Вкладка UI — разрешения на UI-компоненты экранов. Для создания ограничения выберите нужный экран в выпадающем списке Screen, задайте путь к компоненту в поле Component, и нажмите Add. При формировании пути, следуйте правилам, описанным в разделе Разрешения. Для отображения структуры экрана нажмите кнопку Components tree, выберите компонент и выберите Copy id to path в контекстном меню.

Области действия позволяют назначать одному пользователю различные наборы ролей (и тем самым различные разрешения) в зависимости от клиентской технологии, которую он использует для доступа к приложению. Область действия указывается в атрибуте securityScope аннотации @Role , или в поле Security scope экрана редактирования роли, если роль создается во время работы приложения.

Ядро фреймворка содержит единственного клиента — Generic UI, поэтому все роли по умолчанию имеют область действия GENERIC_UI . Все пользователи, входящие в систему через UI приложения получат набор ролей с этим значением области действия.

Аддон REST API определяет свою собственную область действия — REST , поэтому если вы добавите аддон к проекту, вам необходимо сконфигурировать отдельный набор ролей для пользователей, входящих в систему через REST API. Если этого не сделать, пользователи не смогут входить через REST, так как у них не будет разрешения cuba.restApi.enabled .

Фреймворк определяет две предустановленные роли для области действия GENERIC_UI :

system-minimal — содержит минимальный набор разрешений, необходимый пользователям для работы с Generic UI. Данная роль задается классом MinimalRoleDefinition . Она дает специфическое разрешение cuba.gui.loginToClient , а также разрешения на некоторый системные сущности и экраны. У роли system-minimal установлен атрибут «по умолчанию», поэтому она автоматически назначается новым пользователям.

system-full-access — дает все разрешения на все объекты, тем самым может использоваться для создания администраторов, имеющих полные права на систему. Встроенный пользователь admin по умолчанию имеет эту роль.

Для того, чтобы настроить разрешения на просмотр определенных экранов системы, нужно также настроить доступ к пунктам меню выше по иерархии.

Для ролей, определенных во время разработки, используется аннотация @ScreenAccess , например:

В список идентификаторов, помимо идентификаторов экранов, следует добавить идентификаторы пунктов меню верхнего уровня (например, screenIds = <"application-demo">).

На вкладке Screens экрана редактирования роли помимо разрешенных экранов следует разрешить все пункты меню вверх по иерархии. В противном случае экраны не будут показаны пользователю.

Роли и привилегии WordPress

Роли и привилегии WordPress

Хотя WordPress начинался как платформа для ведения блогов, он уже давно превратился в полнофункциональную систему управления контентом.

Одна из особенностей, которая делает Вордпресс полнофункциональной CMS, является система ролей и привилегий, которая определяет, что зарегистрированные пользователи могут или не могут делать на вашем сайте.

Если у вас на сайте есть регистрация пользователей, например, несколько авторов, которые создают для вас контент, или мембершип-сайт, то вам нужно понимать роли и привилегии, которые они имеют.

Что такое роли и привилегии

Чтобы понять, что это такое, лучше начать с привилегий.

Привилегии — это отдельные действия / разрешения на сайте. Это что-то, что пользователь может «делать» или «видеть».

  • Установить плагин
  • Создать новую страницу
  • Опубликовать страницу
  • Редактировать чью-то страницу
  • Заменить тему Вордпресс
  • Просматривать личные страницы

Каждое действие / разрешение — это уникальная возможность. Кроме этих действий / разрешений / возможностей существуют десятки других, которые связаны с вашим сайтом или плагинами и темами.

Роль — это набор возможностей, которые можно назначить пользователю. Каждой учетной записи пользователя назначена роль, которая определяет, какие возможности есть у каждого пользователя.

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

Вы можете редактировать роль пользователя в разделе Пользователи меню Вордпресс:

Роли Вордпресс

Вы можете выбрать роль по умолчанию для новых пользователей в НастройкахОбщие.

Как использовать роли и привилегии

Предположим, на вашем сайте есть автор, который пишет статьи.

Вы хотите, чтобы этот пользователь мог создавать новый контент в админке Вордпресс, чтобы этого не пришлось делать вам.

Но в то же время вы не хотите, чтобы этот пользователь мог устанавливать плагины или менять тему. Даже если вы доверяете этому человеку, вы все равно не хотите, чтобы он мог что-то менять, потому что он может случайно что-то сломать.

Роли и привилегии позволяют дать этому человеку только те разрешения, которые необходимы ему для выполнения своей части работы.

Это позволяет избежать случайных ошибок на сайте, и усиливает безопасность сайта, применяя технику защиты, которая называется принцип наименьших привилегий.

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

Стандартные роли и привилегии Вордпресс

По умолчанию, одиночная установка Вордпресс имеет 5 ролей, каждая со своими привилегиями для стандартных действий и разрешений Вордпресс:

  • Администратор (Administrator) — Роль по умолчанию, назначается, когда вы устанавливаете Вордпресс. У администратора есть все привилегии, включая установку тем и плагинов.
  • Редактор (Editor) — Может редактировать и публиковать Записи / Страницы, но не может работать с темами, плагинами, и так далее.
  • Автор (Author) — Может создавать, редактировать и публиковать свои собственные Записи, но не может редактировать контент, созданный другими пользователями.
  • Участник (Contributor) — Может создавать свой собственный контент, но не может публиковать его и не может загружать медиа файлы.
  • Подписчик (Subscriber) — Может редактировать данные своего профиля, больше ничего делать не может. По умолчанию это роль для новых пользователей, но вы можете ее изменить.

Вы можете посмотреть все стандартные возможности, а также узнать, какие привилегии доступны для каждой роли в таблице «Возможности и роли» на WordPress.org.

Если вы используете Мультисайт, то Вордпресс добавляет шестую роль по умолчанию – Супер-администратор.

Супер-администраторы получают новые возможности для доступа ко всем сетевым настройкам и редактированию отдельных сайтов сети.

Плагины добавляют свои роли и привилегии

В зависимости от плагинов, которые вы используете, у вас могут появиться дополнительные действия, которые могут совершать пользователи.

Например, если вы используете WooCommerce для создания интернет-магазина, у вас появится много новых разрешений, которые нужны для работы вашего магазина.

Чтобы это работало, плагины добавляют свои собственные роли и / или возможности.

Например, WooCommerce создает 2 новые роли пользователей:

  • Менеджер магазина (Shop manager) — Эта роль позволяет управлять магазином без необходимости давать пользователю роль Администратора.
  • Клиент (Customer) — Это роль по умолчанию для покупателя. Эти пользователи могут редактировать свои предыдущие / текущие заказы, и редактировать свой профиль.

Также WooCommerce добавляет новые разрешения для редактирование настроек WooCommerce и просмотра отчетов.

Многие другие плагины добавляют свои возможности. Например, некоторые плагины событий добавляют новые разрешения для создания и редактирования событий.

Кроме этого, вы тоже можете создавать свои собственные роли и назначать им привилегии.

Как создать собственные роли и привилегии

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

Например, некоторым владельцам сайтов нравится роль Участник, потому что она не позволяет пользователям публиковать новый контент.

Но в то же время Участник не может загружать медиа файлы, что может быть слишком сильным ограничением.

Вы можете дать Участнику привилегию upload_files (Загружать файлы)

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

Вы можете создавать собственные роли и назначать привилегии вручную или с помощью плагинов.

Как создать роль пользователя с помощью плагина

Для работы с ролями Вордпресс существует несколько плагинов, в этом примере я буду использовать плагин User Role Editor:

Управление доступом на основе ролей

Управление доступом на основе ролей (англ.  Role Based Access Control, RBAC ) — развитие политики избирательного управления доступом, при этом права доступа субъектов системы на объекты группируются с учётом специфики их применения, образуя роли. [1] [2]

Формирование ролей призвано определить чёткие и понятные для пользователей компьютерной системы правила разграничения доступа. Ролевое разграничение доступа позволяет реализовать гибкие, изменяющиеся динамически в процессе функционирования компьютерной системы правила разграничения доступа.

Такое разграничение доступа является составляющей многих современных компьютерных систем. Как правило, данный подход применяется в системах защиты СУБД, а отдельные элементы реализуются в сетевых операционных системах. Ролевой подход часто используется в системах, для пользователей которых чётко определён круг их должностных полномочий и обязанностей.

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

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

Содержание

История [ править | править код ]

Элементарные формы модели RBAC были осуществлены во множестве специальных форм на многих системах, начиная с 1970-х годов. Контроль доступа на основе ролей, используемый в настоящее время происходит из модели, предложенной Феррайоло (англ.  Ferraiolo ) и Куном (англ.  Kuhn ) (1992) и как образцовая модель позже усовершенствованная Санди (англ.  Sandhu ), Койн, Фейнштейн и Йоман (1996).

     — статья Феррайоло и Куна, определяющая RBAC посредством доступа только через роли, иерархии и ограничения. формальная модель;  — DTOS базировал опытный образец RBAC, на прототипе модели, предложенной Феррайоло, Кун, Гаврилья (англ.  Gavrila )
  • 1994 год — статья Nyanchama и Osborn определяет модель;
  • 1994 год — IBM подаёт (в Европе) первую заявку на патент в области RBAC, цитирующую Феррайоло и Куна;  — Феррайоло, Кугини (англ.  Cugini ), Кун расширили формальную модель, введя определение форм разделения обязанностей;  — метод Санди для того, чтобы осуществить МАС на основе RBAC; —1998 годы — Sybase, Безопасное Вычисление, Siemens объявляет о продуктах RBAC, описанных как базирующиеся непосредственно на модели
  • 1997 год — безопасное вычисление включает модель Феррайоло-Куна RBAC в американскую Глобальную Команду DoD и Систему управления; выходит статья Куна на тему разделения обязанностей, необходимых и достаточных условий для безопасности разделения;
  • 1997 год — статья Осборна основанная на отношениях между RBAC и многоуровневой безопасностью мандатной модели политики безопасности; аннотация роли, связывающая RBAC и многоуровневую безопасность
  • 1998 год — RBAC — метод Куна для того, чтобы осуществить RBAC на системе МАС;  — Барклей (англ.  Barkley ), Феррайоло, Кун открывают исходный опытный образец RBAC для развитых веб-серверов;  — Санди, Феррайоло, Кун публикуют статью, определяющую объединенную модели RBAC, и предлагают стандарт RBAC;  — Американский национальный институт стандартов и Международный комитет по стандартам информационных технологий (ANSI/INCITS) принимают предложенную Санди, Феррайоло и Куном модель RBAC как единый стандарт.

Базовая модель RBAC [ править | править код ]

Для определения модели RBAC используются следующие соглашения:

  • S = Субъект (англ.  Subject ) = Человек или автоматизированный агент (множество пользователей);
  • R = Роль (англ.  Role ) = Рабочая функция или название, которое определяется на уровне авторизации (множество ролей);
  • P = Разрешения (англ.  Permissions ) = Утверждения режима доступа к ресурсу (множество прав доступа на объекты системы);
  • SE = Сессия (англ.  Session ) = Соответствие между S, R и/или P
  • SA = Назначение субъекта (англ.  Subject Assignment )
  • PA: R → 2 p  — функция, определяющая для каждой роли множество прав доступа; при этом для каждого p ∈ P существует r ∈ R такая, что p ∈ PA(r); (англ.  Permission Assignment )
  • RH = Частично упорядоченная иерархия ролей (англ.  Role Hierarchy ). RH может быть еще записана так: ≥
  • Один субъект может иметь несколько ролей.
  • Одну роль могут иметь несколько субъектов.
  • Одна роль может иметь несколько разрешений.
  • Одно разрешение может принадлежать нескольким ролям.

Роли назначаются субъектам, вследствие чего субъекты получают те или иные разрешения через роли. RBAC требует именно такого назначения, а не прямого — назначение разрешений субъектам, иначе это приводит к сложно контролируемым отношениям между субъектами и разрешениями [3] .

На возможность наследования разрешений от противоположных ролей накладывается ограничительная норма, которая позволяет достичь надлежащего разделения режимов. Например, одному и тому же лицу может быть не позволено создать учётную запись для кого-то, а затем авторизоваться под этой учётной записью.

Обозначение: x ≥ y означает, что x наследует разрешения y.

Субъект может иметь множество одновременных сессий с различными разрешениями.

Возможности и применение [ править | править код ]

Технология управления доступом на основе ролей достаточно гибка и сильна, чтобы смоделировать как избирательное управление доступом (DAC) [4] , так и мандатное управление доступом (MAC) [5]

До разработки RBAC, единственными известными моделями управления доступом были MAC и DAC. Исследования в 90-х показали, что RBAC не попадает ни в ту, ни в другую категорию.

Роли создаются внутри организации для различных рабочих функций. Определённым ролям присваиваются полномочия (permissions) для выполнения тех или иных операций. Штатным сотрудникам (или другим пользователям системы) назначаются фиксированные роли, через которые они получают соответствующие привилегии для выполнения фиксированных системных функций. В отличие от управления доступом на основе контекста (англ.  context-based access control, CBAC ), реализация RBAC в чистом виде не принимает во внимание текущую ситуацию (такую как, например, откуда было установлено соединение).

RBAC отличается от списков контроля доступа (англ.  access control lists, ACL ), используемых в традиционных избирательных системах управления доступом, тем, что может давать привилегии на сложные операции с составными данными, а не только на атомарные операции с низкоуровневыми объектами данных. Например, список контроля доступа может предоставить или лишить права записи в такой-то системный файл, но он не может ограничить то, каким образом этот файл может быть изменен. Система, основанная на RBAC, позволяет создать такую операцию как открытие «кредита» в финансовом приложении или заполнение записи «тест на уровень сахара в крови» в медицинском приложении. Присвоение привилегии на выполнение какой-либо операции многозначно, так как операции являются дробящимися в пределах приложения.

Концепции иерархии ролей и ограничений позволяют создать или смоделировать контроль доступа на основе решетки (англ.  lattice-based access control, LBAC ) средствами RBAC. Таким образом, RBAC может быть основанием и расширением LBAC.

В организациях с разнородной IT-инфраструктурой, содержащих десятки и сотни систем и приложений, помогает использование иерархии ролей и наследования привилегий. Без этого использование RBAC становится крайне запутанным. В статье «Дополнительные роли: практический подход к обслуживанию пользователей предприятия» [6] обсуждаются стратегии, альтернативные большому масштабу присвоения привилегий пользователям.

Современные системы расширяют старую модель NIST [7] ограничениями RBAC для развертывания на больших предприятиях.

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

RBAC широко используется для управления пользовательскими привилегиями в пределах единой системы или приложения. Список таких систем включает в себя Microsoft Active Directory, SELinux, FreeBSD, Solaris, СУБД Oracle, PostgreSQL 8.1, SAP R/3, Lotus Notes и множество других.

голоса
Рейтинг статьи
Читайте так же:
Можно ли проследить заказное письмо
Ссылка на основную публикацию
Adblock
detector