Безопасность
ABAC-модель доступа
Атрибутная модель авторизации, правила политик и схема проверки доступа.
Атрибутная модель доступа (ABAC)
1. Основа модели
- Модель доступа в системе:
ABAC-first. - Ролевые признаки (
SUPER_ADMIN,ORG_ADMIN,ANALYSTи т.д.) не заменяют ABAC, а выступают атрибутами субъекта. - Доступ принимается по политике вида:
Permit if Subject.Attributes + Resource.Attributes + Action + Context satisfy Policy
2. Наборы атрибутов
Subject(кто):user_id,org_id,roles,clearance_level.Resource(к чему):resource_type,owner_org_id,region_id,brand_id,sensitivity.Action(что делает):read,export,edit,delete,admin.Context(в каких условиях):time,ip_zone,mfa_verified,session_risk,subscription_plan.
3. Примеры политик
- Аналитик читает только данные своей организации:
allow read when subject.org_id == resource.owner_org_id
- Экспорт доступен только при MFA и активной подписке:
allow export when context.mfa_verified = true and context.subscription_plan in [pro, enterprise]
- Доступ по региону и бренду:
allow read when resource.region_id in subject.allowed_regions
and resource.brand_id in subject.allowed_brands
- Админ-операции только для привилегированных ролей и корпоративной сети:
allow admin when 'SUPER_ADMIN' in subject.roles and context.ip_zone = 'corp'
4. Поток авторизации
- Пользователь проходит аутентификацию в
Keycloak. - API получает JWT и извлекает атрибуты субъекта.
- Сервис дополняет атрибутами ресурса и контекста.
- Policy Engine принимает решение
permit/deny. - Результат, причина и policy-id логируются в audit trail.
5. Требования к реализации
Deny by defaultдля всех неописанных политик.- Версионирование политик (
policy_version,effective_from). - Трассировка причины отказа без утечки чувствительных данных.
- Единый формат PDP/PEP логов во всех сервисах.
6. Контроль и сверка
- Для каждой роли/сценария фиксируется матрица test-cases permit/deny.
- На релизе выполняются автоматические policy regression tests.
- Любое изменение ABAC-политик проходит change review.