Поделиться через


Эффективное проектирование ролей

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

Характеристики пользователей и данных и пригодность ролей

Роли работают очень хорошо, чтобы охарактеризовать группы пользователей и, на этом основании, фильтровать действия, которые могут выполнять эти пользователи. Часто это выполняется на практике путем создания ролей, которые отражают место пользователя в организации, например роли "Менеджеры" и "Рассчитыватели", "Администратор istrators" и "Читатели", "Project One Employees" и "Project Two Employees". В таких случаях, когда доступ к данным является довольно универсальным относительно пользователей, роли можно использовать эффективно для применения бизнес-правил, таких как:

  • "Менеджеры могут передать любую сумму денег. Рассеятели могут передать только до $ 10000".

  • "Администратор istrator может изменить что-либо. Все остальные могут читать только".

  • "Сотрудники Project One могут получить доступ к определенной базе данных. Никто другой не может.

Пользователи могут естественно попасть в несколько ролей в зависимости от того, как роли моделировают организационную структуру бизнеса.

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

  • "Конкретный менеджер может получить доступ к данным персонала только для ее отчетов".

  • "Джо Потребитель может искать баланс своей учетной записи".

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

Сложность и масштабируемость политики авторизации на основе ролей

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

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

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

Для управления сложностью и устранением этих проблем можно использовать следующие рекомендации.

  • Выберите имена ролей, которые являются самообисательными. Сделайте его как можно более очевидным, какие пользователи должны принадлежать к каким ролям.
  • Сделайте политику на основе ролей максимально простой (и не проще). Выберите как можно меньше ролей, сохраняя эффективную политику.
  • Четко документируйте политику на основе ролей, созданную для администраторов, независимо от того, является ли членство в роли очевидным (для вас). В частности, используйте поле описания, доступное для каждой роли, чтобы описать намерение роли. Если вы не можете описать как правило, кто должен принадлежать роли в нескольких предложениях, это, вероятно, слишком сложно.
  • Настоятельно рекомендуется, чтобы администраторы приложения заполняли роли группами пользователей вместо отдельных пользователей. Это гораздо более масштабируемое решение. Это упрощает переназначение или удаление пользователей по мере перемещения в организации и изоляции администраторов от определенного объема надзора и проблем в обмене данными.

Границы безопасности

Сведения о контексте вызова безопасности

Свойство контекста безопасности

Использование ролей для авторизации клиента