Коротко

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

Почему нескольких ролей недостаточно для нескольких подразделений

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

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

Сначала опишите данные и операции, затем названия ролей

Проектирование лучше начинать не со списка должностей, а с инвентаризации объектов CRM. Для каждого объекта фиксируют владельца, чувствительность, связи и допустимые операции. Карточка клиента может быть доступна менеджеру, но приложенный документ — только сотруднику, который участвует в проверке. Сделку можно читать многим участникам, тогда как изменение финансового результата должно оставаться серверной операцией с отдельным разрешением.

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

  1. 01

    Составьте реестр объектов

    Перечислите клиентов, контакты, сделки, задачи, документы, платежи, отчёты, настройки, интеграционные ключи и другие сущности.

  2. 02

    Разделите действия

    Не объединяйте чтение, изменение, согласование, удаление, экспорт и административное управление в одно разрешение.

  3. 03

    Отметьте организационную границу

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

  4. 04

    Соберите обязанности в роли

    Объединяйте только те разрешения, которые действительно нужны одной рабочей функции.

Как собрать рабочую матрицу доступа

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

Объект и действиеМенеджерРуководитель подразделенияФинансовый контролёрАдминистратор CRM
Клиенты: чтениеСвои и назначенныеСвоё подразделениеТолько связанные с проверяемыми операциямиПо утверждённой зоне администрирования
Сделки: изменениеСвои, кроме закрытых полейСделки подразделения в разрешённых статусахТолько финансовые этапыБез изменения бизнес-результата вручную
Документы: просмотрТолько необходимые для работыПо отдельному разрешениюВ рамках проверкиНе автоматически вместе с настройками
Отчёты: экспортНет по умолчаниюАгрегаты подразделенияУтверждённые финансовые отчётыНет по умолчанию
Пользователи: управлениеНетЗаявка на изменениеНетНазначение только утверждённых ролей

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

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

Принцип минимально необходимого доступа

Минимально необходимый доступ без остановки работы

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

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

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

Граница подразделения должна быть частью данных

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

Подход подтверждается кейсом Crypto Exchange CRM. Платформа рассчитана на владельца сети, суперадминистратора, администратора отдельного обменника и кассира. Организация определяется по активному профилю сотрудника, а сервер повторно проверяет принадлежность связанных записей. Кассир работает с клиентами и операционными сделками своего контекста, но не получает закрытые финансовые данные. Private-файл выдаётся только после проверки связи между файлом, клиентским документом и организацией.

Почему авторизация должна работать на сервере

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

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

  1. 01

    Идентифицировать субъект

    Получить пользователя и действующий профиль из проверенной серверной сессии, а не из параметра запроса.

  2. 02

    Определить объект и границу

    Загрузить запись на сервере и проверить её организацию, владельца и связанные сущности.

  3. 03

    Проверить действие

    Сопоставить операцию с ролью, атрибутами и текущим состоянием процесса.

  4. 04

    Безопасно завершить отказ

    Не менять состояние частично, не раскрывать закрытые данные в ошибке и зафиксировать значимое событие.

Онбординг, перевод и увольнение как один жизненный цикл

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

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

СобытиеОбязательное действиеКонтроль
НаймНазначить базовую роль и организационный контекстСогласование владельцем процесса
ПереводОтозвать старые несовместимые права и выдать новыеСравнение до и после
ЗамещениеВыдать временные полномочияДата автоматического окончания
УвольнениеЗаблокировать все учётные пути и передать рабочие объектыЗакрывающий чек-лист

Что проверять в аудите ролей и доступов

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

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

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

Как внедрить ролевую модель поэтапно

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

Для новой CRM требования к доступу включают в техническое задание до проектирования экранов. Тогда организационная принадлежность становится частью модели данных, а аудит и отзыв доступа при увольнении — частью продукта, а не поздней настройкой. Команда Agentix Labs проектирует такие правила вместе с операционными сценариями и интеграциями, чтобы ограничения одинаково работали в интерфейсе, API, отчётах и файловом контуре.

  1. 01

    Выбрать пилотную область

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

  2. 02

    Согласовать матрицу

    Получить подтверждение владельцев процессов и данных до переноса правил в код.

  3. 03

    Реализовать и проверить

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

  4. 04

    Расширять по шаблону

    Переносить подтверждённую модель на следующие подразделения, сохраняя единые определения ролей и действий.

Частые вопросы

Чем роль отличается от права доступа в CRM?

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

Достаточно ли ролей «пользователь» и «администратор»?

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

Можно ли защитить данные фильтрами и скрытыми кнопками?

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

Что делать с временным доступом на время отпуска руководителя?

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

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

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

Источники

  1. NIST: Role Based Access ControlПроверено 30 июля 2026 г.
  2. NIST SP 800-53 Rev. 5: Security and Privacy Controls for Information Systems and OrganizationsПроверено 30 июля 2026 г.
  3. OWASP Cheat Sheet Series: AuthorizationПроверено 30 июля 2026 г.
Материал подготовлен редакцией Agentix Labs с использованием AI для исследования, структуры и черновика. Финальный текст, факты и рекомендации проверяет Владислав.