Блог

Ролевая модель разграничения прав

18 декабря 2024
7 мин. 94
image
image
image
Елена Андреева редактор-копирайтер
image
Юлия Яковенко исполнительный директор
Ролевая модель разграничения прав

Современные сайты и цифровые сервисы похожи на магические лабиринты: каждый, кто туда попадает, может пройти только в определённые локации. Обычный пользователь не увидит финансовые документы, а бухгалтер — отчёты о работе отделов. Реализовывать сложные системы доступов помогает ролевая модель — специальный инструмент управления, который определяет набор прав и разрешений для различных категорий пользователей (ролей) системы. Продумать её важно ещё до разработки сайта, поскольку ролевая модель тесно связана с безопасностью данных. В этой статье расскажем обо всех нюансах использования и создания ролевых моделей и поделимся нашим опытом.

Кому и для чего нужна ролевая модель

Современные цифровые сервисы и сайты достигли невероятной сложности и масштаба, значительно отличаясь от своих предшественников 10-15 летней давности.

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

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

Первую в истории интернета ролевую модель описали ещё в 1992 году. Это сделали американские учёные Дэвид Феррайло и Ричард Кун из Национального института стандартов и технологий. Они же предложили термин RBAC (Role-based access control), который до сих пор используют разработчики. Исследования двух ученых и описания компонентов и взаимосвязей ролевой модели, сделанные ими, легли в основу международного стандарта INCITS 359-2012.

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

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

Например, так:

  • Администратор сайта. Обладает полным спектром прав.
  • Обычный пользователь. Может иметь доступ лишь к ограниченному набору функций. Клиент интернет-магазина имеет право просматривать каталог товаров и оформлять заказы.
  • Менеджер магазина может управлять заказами, добавлять новые товары и изменять цены.

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

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

Как ролевые модели обеспечивают безопасность данных

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

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

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

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

Применение ролевых моделей позволяет организациям соответствовать требованиям законодательства и стандартам безопасности, таким как GDPR или ФЗ «О персональных данных» в России. Четкое определение ролей и прав доступа обеспечивает прозрачность и контролируемость процессов.

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

Динамичная и статичная ролевая модель

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

Динамичная ролевая модель позволяет администраторам систем оперативно обновлять права доступа, если изменилась структура организации, законодательство, требования бизнеса.
Юлия Яковенко
заместитель генерального директора компании Uplab

Примеры ролевой модели в популярных сервисах

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

CRM Битрикс24

Ролевая модель в Битрикс24 определяет, какие действия может выполнять каждый пользователь в системе. Она не является строгой иерархической моделью, а скорее гибкой системой, позволяющей настраивать права доступа для различных групп пользователей (ролей) в зависимости от их функций и ответственности. Роли здесь можно создавать и модифицировать. Пользователь может иметь одну или несколько ролей.

Примеры: пользователь с ролью «Менеджер по маркетингу» имеет доступ к созданию и управлению рекламными кампаниями, анализу эффективности маркетинговых мероприятий. Может создавать и редактировать контакты. Но при этом у него.

CMS WordPress

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

Благодаря плагинам, таким как User Role Editor, можно создавать собственные роли и настраивать права доступа к конкретным страницам, записям, настройкам и даже другим плагинам.

Пример реализации: на сайте интернет-магазина, созданного с помощью WordPress, можно создать роль «Менеджер заказов», которая будет иметь доступ к панели управления заказами, но не сможет изменять настройки сайта.

Веб-фреймворк Laravel

Популярный PHP фреймворк предоставляет встроенные механизмы для реализации ролевой модели. Для проверки прав доступа перед выполнением определенных действий в Laravel используется middleware. Это набор правил, которые помогают «переводить» функциональность одной программы на язык другой и связывают таким образом фронтенд и бэкенд сайта.

Пример реализации: в веб-приложении для управления проектами, разработанном при помощи Laravel, можно создать роли «Менеджер проекта» и «Разработчик». Менеджер проекта сможет назначать задачи разработчикам и просматривать все данные проекта, а разработчик сможет только работать над своими задачами.

Как создать эффективную ролевую модель? Пять важных шагов

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

  1. Начните с создания функциональной модели — верхнеуровневого документа, в котором подробно описан функционал каждого подразделения и каждой должности. Как правило, информация в него попадает из различных документов: должностных инструкций и положений по отдельным подразделениям — отделам, управлениям, департаментам. Функциональная модель должна быть согласована со всеми заинтересованными подразделениями (бизнес, внутренний контроль, безопасность) и утверждена руководством компании. Для чего нужен этот документ? Для того, чтобы ролевая модель могла на него ссылаться.
  2. Соберите вводные. Основных источники, которые помогут определить роли и их возможности:
    • общие корпоративные требования;
    • требования к областям ИБ (зависят от направлений деятельности организации);
    • требования к технологическим процессам (инструкции, матрицы доступа, методические указания, требования к конфигурациям),
    • кадровые источники.
  3. Если вы моденизиуете уже существующий сайт или сервис, изучите, как пользователи регистрируются на нём сейчас и как получают доступ к информации.
  4. Изучите полномочия пользователей и бизнес-функции, которая за ними стоят.
  5. Зафиксируйте и систематизируйте все полученные данные.

При проектировании сервиса разработчикам могут быть непонятны многие бизнес-процессы и связи между ними. Это иногда приводит к созданию лишних пользовательских ролей и неправильной настройке доступа. Чтобы такой проблемы не возникло, разрабатывается таблица с подробным описанием ролей и доступов, которая называется «матрица CRUD». Мы подробно рассказывали об этом инструменте в одной из прошлых статей блога.

Как мы в Uplab используем ролевые модели в своих продуктах

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

Ролевая модель всегда возникает, когда типов пользователей больше, чем один. Это необходимо, чтобы чтобы управлять действиями пользователей, базой данных и функциями. В основе разделения ролей лежит идея безопасности через контроль и управление доступом.
При разработке сайта мы заранее изучаем ролевую модель в организации и бизнес-процессы, которые связаны с этими ролями. Для сложных сервисов, где много ролей и разделов с разными правами доступа, обязательно создаём матрицу CRUD и согласовываем её с заказчиком. Для более простых сайтов и сервисом можем просто пописать роли и функционал для них: вносим в документ все разделы и подразделы, все роли и доступные действия для каждой роли в каждом из разделов.

Сложность ролевой модели влияет на сложность разработки сайта или цифрового сервиса, на срок и бюджет. Поэтому наш первый вопрос на любом пресейле (т.е. начальном этапе переговоров с заказчиком): «Какая ролевая модель, кто пользователи, какие есть роли?». Эти вопросы важно задать в самом начале разработки. После, на этапе аналитики, идёт глубокая проработка полученной информации, и в процессе ролевая модель может меняться и дополняться. Но мы помним о ролевой модели на всех этапах разработки и обращаемся к ней при работе с каждым разделом.
Юлия Яковенко
заместитель генерального директора компании Uplab

Саммари

  1. Ролевая модель разграничения прав — это эффективный инструмент для обеспечения безопасности данных в информационных системах. Роли могут быть привязаны к должностям, подразделениям, возможностям ресурса или функциональным задачам сотрудников; у каждой роли есть свой набор возможных действий.
  2. Главная задача ролевой модели — сократить риски несанкционированного доступа. Также она позволяет повысить прозрачность и соответствовать требованиям безопасности.
  3. Примеры ролевых моделей можно найти на сайтах, в цифровых сервисах, в базах данных, в CMS и фреймворках.
  4. При создании ролевой модели важно учитывать кадровый состав компании, требования безопасности (внутренние и законодательные), бизнес-процессы и функции сотрудников.
  5. Мы в Uplab разрабатываем ролевую модель ещё на начальном этапе создания сайта или сервиса и обращаемся к ней на протяжении всей работы.

Расскажите
о вашем проекте