Основной вопрос: что определяет права доступа пользователя в Salesforce

Когда возникает вопрос «Как пользователь получил доступ к этому полю?», правильный ответ почти всегда многокомпонентен: его профиль (Profile) определяет базовый уровень доступа, группы наборов полномочий (Permission Set Groups) расширяют функциональные возможности в соответствии с ролью, а индивидуальные наборы полномочий (Permission Set) иногда используются для точечных исключений. Проблема заключается в том, что большинство организаций выстраивают эту комбинацию в обратном порядке: начинают с широкого профиля, который включает почти всё, а затем «исправляют» точечные проблемы индивидуальными разрешениями, которые никто не помнит удалить.

Здоровая модель разрешений строится в другом направлении: максимально ограниченный профиль, который в основном определяет тип лицензии, видимость приложения по умолчанию и параметры входа в систему; и все реальные рабочие возможности — к каким объектам, полям, действиям — переносятся в Permission Sets и Permission Set Groups. Важно уточнить: эта статья рассматривает только уровни объекта (Object), поля (Field) и системных разрешений (System Permissions). Вопросы видимости записей между пользователями — OWD (Default Organization-Wide Defaults), Role Hierarchy (иерархия ролей), Sharing Rules (правила совместного доступа) — обсуждаются в руководстве по видимости и совместному доступу, поскольку это отдельный уровень принятия решений со своими компромиссами.

Три компонента и их назначение

КомпонентЧто определяетСколько может быть у пользователяКогда используется
ProfileТип лицензии, видимость приложения по умолчанию, Page Layout, Login Hours/IPРовно одинРазличия в инфраструктуре между типами пользователей
Permission SetРазрешения для объекта, поля, Apex Class, вкладки (Tab) — только добавляетСколько угодноЕдиная возможность, актуальная для части ролей
Permission Set GroupПакет из нескольких Permission Sets под одним именем, с возможностью отмены (Muting)Сколько угодноПостоянная комбинация разрешений, представляющая полный рабочий функционал

Различие между Permission Set и Permission Set Group не только техническое, но и организационное. Отдельный Permission Set подходит для одной, сфокусированной возможности («Доступ к финансовым отчетам»). Permission Set Group подходит, когда необходимо назначить полноценный «рабочий пакет» для отдела или роли и поддерживать его в одном месте при изменениях.

Принципы принятия решений: куда относится новое разрешение

Когда поступает запрос на добавление доступа, первый вопрос не «В какой профиль добавить?», а к какому компоненту разрешение относится структурно:

  1. Это разрешение, характерное для всех обладателей одной и той же лицензии? Если да — это место для Profile, при условии, что это относится ко всем обладателям лицензии, а не к подгруппе.
  2. Это рабочая функция, которая требуется определённой группе ролей всегда вместе с другими разрешениями? Если да — это место для Permission Set Group, даже если сначала её нужно разбить на несколько отдельных Permission Sets для обеспечения гибкой комбинации.
  3. Это точечное и временное разрешение для одного пользователя или исключения? Если да — это отдельный Permission Set, который назначается вручную и подлежит периодической проверке.
  4. Разрешение должно отменить что-либо для конкретного пользователя в широкой группе? Здесь вступает в действие Muting Permission Set внутри Permission Set Group — единственный инструмент в Salesforce, позволяющий ограничить разрешение, не затрагивая Profile и не разбивая группу.

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

Чек-лист для построения модели разрешений с нуля

  • ☐ Определены фактические рабочие роли (не организационные отделы), и каждая роль получила четкое название.
  • ☐ Для каждой роли определён список необходимых возможностей на уровне объекта, поля и Apex Class.
  • ☐ Созданы сфокусированные Permission Sets для одной возможности, а не общие «кучи разрешений».
  • ☐ Каждая роль получила одну Permission Set Group, объединяющую релевантные возможности.
  • ☐ Профили (Profiles) сокращены до различий в лицензировании и инфраструктуре.
  • ☐ Определён процесс для исключительных случаев: кто одобряет точечный Permission Set и на какой срок.
  • ☐ Установлена частота проверки (минимум ежеквартально), которая сравнивает активные разрешения с текущей ролью.
  • ☐ Назначен единый ответственный (Owner) за поддержание модели разрешений при изменениях организационной структуры.

Организационный сценарий: страховая компания с тремя отделами продаж

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

Архитектурная команда перестроила модель: всего три профиля, по типу лицензии (полная Sales Cloud, Community для внешних агентов, Service Cloud для претензий). Сверху — семь групп наборов полномочий (Permission Set Groups) по фактическим рабочим ролям: представитель по продажам, руководитель отдела продаж, внешний агент, менеджер агентов, оценщик претензий, менеджер претензий, и смешанная роль, которая занимается как продажами, так и претензиями. Каждая Permission Set Group состояла из сфокусированных Permission Sets, таких как «доступ к активным полисам» или «утверждение возмещения до определённого лимита», что позволяло комбинировать их заново при создании новой роли без построения разрешений с нуля.

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

Распространённые риски и меры по их предотвращению

РискКак он проявляется на практикеМера предотвращения
Profile превращается в инструмент точечных исправленийМножество почти идентичных Profiles, каждый для небольшой группыПеренести каждое точечное разрешение в Permission Set и сократить Profiles до типа лицензии
Несоответствие Field-Level Security (FLS)Одно и то же поле видно в одном месте и скрыто в другомДокументировать центральную матрицу FLS для каждого чувствительного поля и проверять её при каждом релизе
Разрешения «прилипают» после смены ролиПользователь, сменивший роль, сохраняет разрешения от предыдущейПроцесс Offboarding-от-роли, который удаляет старую Permission Set Group перед добавлением новой
Слишком широкие системные разрешения (View All Data, Modify All)Предоставляются «для экономии времени» и не удаляются впоследствииЦелевое одобрение и срок действия для каждого широкого системного разрешения
Отсутствие ответственного за модель разрешенийКаждый отдел добавляет разрешения без общего виденияЕдиный ответственный, который утверждает каждый новый Permission Set или Group перед развертыванием

Метрики для оценки состояния модели

ОбластьЧто измеряетсяЧастота проверки
Излишнее дублированиеКоличество активных Profiles по отношению к количеству фактических типов лицензийЕжеквартально
Точность разрешенийПроцент пользователей, чьи разрешения соответствуют зарегистрированной в HR ролиЕжеквартально
Открытые исключенияКоличество точечных Permission Sets без даты проверкиЕжемесячно
Широкие разрешенияКоличество пользователей с View All Data / Modify All Data без документированного обоснованияЕжемесячно
Время настройкиСреднее время от запроса нового доступа до полного назначенияПостоянно

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

Как это интегрируется в более широкую архитектуру

Качественная модель разрешений является необходимым условием, а не заменой для планирования видимости записей (OWD, Role Hierarchy, Sharing Rules) — эти две темы дополняют друг друга, но решаются по отдельности. Организация, которая пытается решить проблему видимости путём расширения Profile, или наоборот, обычно обнаруживает, что решение становится хрупким при изменении организационной структуры. Когда организация переходит от множества Orgs к одному Org, модель разрешений — одна из вещей, которые необходимо пересмотреть — подробнее об этом в руководстве Single Org vs Multi Org. И когда само разрешение зависит от сложной условной логики, стоит рассмотреть, относится ли реализация к Flow или Apex, как подробно описано в руководстве Flow vs Apex.

В организациях, которые используют процессы, основанные на событиях, между системами, необходимо убедиться, что разрешения пользователей интеграции (Integration Users) построены по тому же принципу — сфокусированный Permission Set, а не широкий Profile с «System Administrator» как удобным по умолчанию. Эта тема связана с более широким планированием межсистемных коммуникаций, описанным в руководстве по событийной архитектуре для Salesforce.

Заключение

Модель разрешений, которая выдерживает испытание временем, строится снизу вверх: сфокусированные возможности в Permission Sets, сборка их по реальным рабочим ролям в Permission Set Groups, и Profile, который сохраняет минимальную роль только для лицензирования и инфраструктуры. Очевидным признаком провала является множество Profiles, созданных для решения точечных проблем — каждый такой дополнительный Profile является техническим долгом, который накапливается до тех пор, пока никто не помнит, почему он существует. При отсутствии внутренних ресурсов для построения или очистки существующей модели, услуги по архитектуре CRM представляют собой практический путь к целенаправленному началу.