Направление работ: Back Код раздела: 1.2 Аккаунты и пользователи > Организация доступа к системе > ABAC Статус: черновик Ответственный: Панкова Л.А. Версия: 0.1 Обновлено: 01.07.26


1. Назначение

Документ фиксирует требования к ABAC-реализации доступа для партнерского кабинета v3.0.

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

Требования уточняют реализацию модели доступа из Back 1.2 и не заменяют детальные матрицы ролей, тарифов и интерфейсные сценарии.

2. Ключевые понятия

ABAC — модель контроля доступа, в которой решение рассчитывается по атрибутам субъекта, объекта и действия.

PEP — точка применения политики в сервисе, которая собирает контекст операции, обращается за решением к PDP и выполняет или блокирует операцию.

PDP — точка принятия решения, которая проверяет запрос авторизации и возвращает разрешение или отказ с причиной.

PIP — источник атрибутов для PDP: данные ролей, прав, тарифа, scope и кэша профиля.

PAP — администрирование ролей, прав и каталога permissions.

SubjectProfile — профиль субъекта для авторизации, собранный из данных аккаунта, ролей, тарифа и scope.

EffectivePermissions — итоговый набор прав аккаунта, сформированный из ролей и ограниченный тарифом.

ResourceScope — область ресурса в иерархии партнерская зона > база > комната.

PolicySet — набор политик авторизации, объединенных правилом deny-overrides.

Before / After — область ресурса до и после операции, используемая для проверки операций перемещения.

3. Требования

Правила и ограничения бизнеса на уровне данных, источник истины в системе

IDТребованиеКомментарийТип требованияВес
#BR1.2-ABAC-1Система должна использовать ABAC-модель для проверки доступа к операцииРешение рассчитывается по атрибутам субъекта, объекта и действия. Роль не является отдельным механизмом RBAC, а используется как источник атрибута “набор прав”.Системное1
#BR1.2-ABAC-2Система должна разделять аутентификацию и авторизациюGateway проверяет валидность токена и передает идентификаторы субъекта. Решение “можно ли выполнить операцию” принимает PDP.Системное1
#BR1.2-ABAC-3PDP должен быть единой точкой принятия решения по авторизацииPDP принимает запрос авторизации и возвращает ALLOW или DENY с причиной. Бизнес-сервисы не должны самостоятельно дублировать полный набор политик авторизации.Техническое1
#BR1.2-ABAC-4Контракты авторизации должны быть едиными для сервисов, которые обращаются к PDPБазовые контракты: AuthorizationRequest, AuthorizationDecision, SubjectProfile, ResourceScopeDto.Техническое1
#BR1.2-ABAC-5PEP должен собирать контекст авторизации в сервисе, где выполняется операцияСервис знает затронутый ресурс, измененные поля, Before/After scope и специфичные атрибуты операции. Gateway этот контекст не собирает.Техническое1
#BR1.2-ABAC-6Запрос авторизации должен передавать коды требуемых прав и область затронутых ресурсовСостав запроса: accountId, source, required permissions, Before/After resource scopes, признаки необходимости scope и активного тарифа, специфичные атрибуты операции.Техническое1
#BR1.2-ABAC-7SubjectProfile должен хранить полный снимок атрибутов субъекта для проверки доступаСостав профиля: AccountId, Source, Tariff, EffectivePermissions, Scope, IsAdmin. Для отдельных операций профиль может включать доменные ограничения роли, например CancellableStatuses.Системное1
#BR1.2-ABAC-8EffectivePermissions должен формироваться как итоговый набор прав аккаунта с учетом ролей и тарифаВ набор объединяются права основной роли, дополнительных ролей и роли в партнерской зоне, после чего набор ограничивается тарифом.Системное1
#BR1.2-ABAC-9Тариф должен применяться как потолок прав в партнерской зонеПри неактивном тарифе доступ к операциям должен ограничиваться продлением доступа. Расширяемые права доступны только если они открыты тарифом.Бизнес1
#BR1.2-ABAC-10Scope субъекта должен задавать, к каким партнерским зонам, базам и комнатам у аккаунта есть доступДоступ применяется по иерархии партнерская зона > база > комната. Доступ к зоне означает доступ ко всем ее базам и комнатам, если scope не сужен.Бизнес1
#BR1.2-ABAC-11Модель Permission должна хранить метаданные, необходимые для проверки ABACСостав метаданных: код права, категория, группа, тип права, необходимость resource scope, необходимость активного тарифа, состояние active/deprecated, версия.Техническое1
#BR1.2-ABAC-12Каталог permissions v3.0 должен быть источником прав для PDPКаталог должен покрывать партнерский набор v3.0: заказы, календарь, цены, скидки, объекты, площадки, абонементы и тарифные возможности.Системное1
#BR1.2-ABAC-13Каталог permissions должен выделять отдельные коды для операций с самостоятельным бизнес-правилом или тарифным гейтомКандидаты на детализацию: отмена по правилам и без правил, финансовые оси отмены, перенос заказа, платные режимы цен и календаря, абонементы, Open API.Бизнес1
#BR1.2-ABAC-14Для старых и новых permissions должен быть задан mappingMapping связывает текущие грубые права read/write/delete с новыми детализированными permissions. Enforce-код, используемый в обработчике, должен присутствовать в каталоге или иметь явное соответствие.Техническое1
#BR1.2-ABAC-15Система должна предоставлять API для управления каталогом прав, ролями, назначениями ролей и scopeНужны операции получения каталога permissions с фильтрами, создания и изменения ролей, назначения permissions ролям, назначения ролей сотрудникам, получения effective permissions и настройки scope на уровне зоны, базы и комнаты.Системное1
#BR1.2-ABAC-16Решение PDP должно складываться из независимых политик по правилу deny-overridesЕсли любая политика возвращает отказ, итоговое решение должно быть DENY. Базовые политики: AdminBypass, PermissionPolicy, TariffPolicy, ResourceScopePolicy и operation-specific policies.Системное1
#BR1.2-ABAC-17На MVP система должна поддерживать временный AdminBypass по признаку IsAdminЕсли IsAdmin = true, операция разрешается до проверки остальных политик. После MVP bypass должен быть заменен системной ролью.Техническое2
#BR1.2-ABAC-18PermissionPolicy должна разрешать операцию только при наличии всех требуемых permissions в EffectivePermissionsЕсли хотя бы один обязательный код отсутствует в итоговом наборе прав субъекта, PDP возвращает отказ с причиной PermissionDenied.Системное1
#BR1.2-ABAC-19TariffPolicy должна блокировать операции, требующие активного тарифа, если тариф неактивенПри неактивном тарифе PDP возвращает отказ с причиной TariffExpired, кроме операций продления доступа.Системное1
#BR1.2-ABAC-20ResourceScopePolicy должна проверять каждый scope из Before и After относительно scope субъектаДля каждой области ресурса проверяется принадлежность разрешенной партнерской зоне, базе и комнате. При несовпадении PDP возвращает отказ с причиной ResourceAccessDenied.Системное1
#BR1.2-ABAC-21Любой ресурс, требующий проверки доступа к месту, должен приводиться к ResourceScopeDtoЗаказ, позиция, цена и другие ресурсы сводятся к иерархии партнерская зона > база > комната. Для нестандартных ресурсов используется резолвер scope, но сама проверка выполняется общей ResourceScopePolicy.Техническое1
#BR1.2-ABAC-22Operation-specific policies должны проверять доменные ограничения, влияющие на доступ к конкретной операцииПример: для отмены заказа проверяется, входит ли статус заказа в CancellableStatuses субъекта.Системное1
#BR1.2-ABAC-23PEP должен определять требуемые permissions по diff измененных полей операцииЕсли команда меняет несколько полей, PEP передает в PDP коды только для фактически измененных полей. Например, изменение даты и площадки требует коды редактирования даты/времени и площадки.Техническое1
#BR1.2-ABAC-24Команда с несколькими измененными полями должна выполняться только при успешной авторизации по всем требуемым permissionsЕсли по одному из измененных полей право отсутствует или scope не проходит проверку, операция должна быть отклонена целиком.Системное1
#BR1.2-ABAC-25При переносе заказа на другую площадку система должна проверять доступ к исходной и целевой области ресурсаДля изменения BaseId или RoomId PEP передает Before и After scope, а ResourceScopePolicy требует доступ и к старой, и к новой базе или комнате.Бизнес1
#BR1.2-ABAC-26При изменении позиций заказа система должна добавлять scope каждой позиции в общий список проверкиПозиции проверяются тем же механизмом ResourceScopePolicy, что и заказ. Отдельная политика для позиций не требуется.Системное2
#BR1.2-ABAC-27Отмена заказа должна проверяться через базовое право отмены и дополнительные права для явно выбранных осей отменыБазовая отмена по правилам требует partner.order.cancel. Явные значения по осям штрафа и предоплаты требуют дополнительные коды, например отмену без штрафа или удержание предоплаты.Бизнес1
#BR1.2-ABAC-28Доступность отмены по статусу заказа должна проверяться как атрибут объекта относительно настроек роли субъектаСтатус заказа передается в контекст авторизации. Набор разрешенных статусов для субъекта хранится в CancellableStatuses; для владельца и администратора доступен максимальный набор.Бизнес2
#BR1.2-ABAC-29PDP не должен рассчитывать деньги, штрафы, возвраты и квотыPDP отвечает только на вопрос доступа. Денежные правила, размер сбора, возврат, лимиты и счетчики рассчитывает соответствующий бизнес-сервис или домен.Системное1
#BR1.2-ABAC-30PDP должен работать на своих данных PIP и не обращаться к бизнес-сервисам на горячем пути проверкиПрофиль субъекта, роли, права, тариф и scope берутся из PIP и кэша профиля.Техническое1
#BR1.2-ABAC-31SubjectProfile должен кэшироваться и инвалидироваться при изменении данных, влияющих на доступКэш профиля должен иметь короткий TTL со случайным разбросом и сбрасываться при изменении ролей, permissions, тарифа или scope. Ориентир TTL: 3-5 минут.Техническое1
#BR1.2-ABAC-32При сбое PDP или невозможности получить решение система должна запрещать операциюПоведение fail-closed снижает риск случайного предоставления доступа при ошибке авторизации.Системное1
#BR1.2-ABAC-33Каждое решение авторизации должно фиксироваться в audit с причиной результатаЛогируются allow, deny и errors. Для отказов фиксируются причины, например PermissionDenied, TariffExpired, ResourceAccessDenied, StatusNotAllowed.Техническое1
#BR1.2-ABAC-34Система должна поддерживать метрики и shadow mode для безопасного включения ABACМетрики должны показывать allow, deny и errors. Shadow mode нужен для проверки влияния новых политик до блокировки реальных операций.Техническое2
#BR1.2-ABAC-35Для ABAC должны быть подготовлены миграции и сиды данныхМинимальный набор данных: permissions, roles, role_permissions, employee_roles, employee_scopes, tariff_permissions.Техническое1

0 items under this folder.