System Design Space
Граф знанийНастройки

Обновлено: 24 марта 2026 г. в 15:10

Подходы к управлению правами: ACL, RBAC, ABAC, ReBAC

medium

Практический разбор ACL/RBAC/ABAC/ReBAC: как принимается решение доступа, канонические схемы, сравнение trade-offs и границы применимости.

Модель контроля доступа выбирают не по тому, какая аббревиатура звучит современнее, а по тому, как реально устроены роли, ресурсы, контекст и связи в продукте.

Глава сравнивает ACL, RBAC, ABAC и ReBAC как разные способы принимать решение о доступе и показывает, как каждый из них влияет на выразительность правил, объяснимость, стоимость эксплуатации и рост системы.

Для design review это хороший материал, чтобы обсуждать политику доступа как часть доменной модели, а не как техническую надстройку, которую можно безболезненно заменить потом.

Практическая польза главы

Практика проектирования

Используйте материал по моделях контроля доступа ACL/RBAC/ABAC/ReBAC и их применимости, чтобы формировать архитектурные security-требования до этапа реализации.

Качество решений

Проверяйте решения через модель угроз, security invariants и управляемость контролей в production, а не только через чеклист соответствия.

Interview articulation

Стройте ответ в формате threat -> control -> residual risk, показывая связь между бизнес-сценарием и техническими мерами защиты.

Trade-off framing

Явно описывайте компромиссы по моделях контроля доступа ACL/RBAC/ABAC/ReBAC и их применимости: UX friction, latency overhead, стоимость сопровождения и требования compliance.

Primary

Zanzibar: Google's Consistent, Global Authorization System

Канонический источник про ReBAC на глобальном масштабе и tuple-модель отношений.

Открыть доклад
ACLRBACABACReBAC

Модель авторизации определяет, как именно система принимает решение доступа. На практике команды комбинируют несколько подходов: RBAC как базовый слой, ABAC для контекста и исключений, ReBAC для graph-shaped collaboration, ACL как локальный механизм на уровне объекта.

Каноническая визуализация моделей

ACL

Права хранятся рядом с ресурсом как список субъектов и разрешений.

Requesteruser:aliceTarget resource/docs/spec-v3ACL attached to resourcealice → read, commentteam:security → read, writebob → readservice:ci-bot → writedefault → denyinherit parent ACL = falseif (subject ∈ ACL)allow actionpermit/deny

Сравнение моделей

КритерийACLRBACABACReBAC
Единица политикиЗапись per resourceРольПравилоОтношение в графе
ГранулярностьОчень точная, но локальнаяСредняяВысокаяВысокая на графе
Изменения доступаДорого на больших наборахДёшево через role mappingЧерез политику/атрибутыЧерез новые relation tuples
ОбъяснимостьВысокаяВысокаяСредняяСредняя, нужен explain API
Сложность платформыНизкаяНизкая-средняяСредняя-высокаяВысокая
Типичный масштабЛокальные системыEnterprise/B2BRegulated domainsCollaboration at scale

ABAC

NIST SP 800-162

Практические рекомендации по policy model и атрибутам для ABAC.

Открыть документ

Границы применимости

ACL

Когда подходит: Object storage, файловые системы, небольшие изолированные домены с явным owner-правилом.

Где начинает болеть: Большие multi-tenant системы: слишком дорогие массовые изменения прав.

Граница: Используйте как edge-модель рядом с ресурсом, но не как единую глобальную политику для всей компании.

RBAC

Когда подходит: Внутренние платформы, B2B SaaS, зрелые org-структуры с понятными job functions.

Где начинает болеть: Контекстные решения (гео/время/риск) и объектные исключения per item.

Граница: Базовая модель для большинства систем. Усиливайте ABAC-предикатами или ACL-exceptions.

ABAC

Когда подходит: Домены с комплаенсом: финансы, healthcare, govtech, где важны контекст и классификация данных.

Где начинает болеть: Команды без governance для атрибутов и без тестируемого policy lifecycle.

Граница: Нужны строгий словарь атрибутов, audit policy changes и инструменты explain/trace решений.

ReBAC (Zanzibar)

Когда подходит: Коллаборативные продукты: документы, репозитории, рабочие пространства, сложные shared-графы.

Где начинает болеть: Малые системы, где граф отношений не окупает инфраструктурную сложность.

Граница: Оправдан при большом числе relationship checks и необходимости консистентного глобального AuthZ-сервиса.

В 2026 типичный production-подход: RBAC как каркас, ABAC как контекстные условия, ReBAC для shared-объектов, ACL как локальный override на ресурсе.

Контроли жизненного цикла политик доступа

ЭтапОбязательные контролиДействие при провале
Policy designЕдиный словарь ресурсов и действий, owner на каждую policy-зону, policy-as-code с code review.Блокировать merge политики без владельца и без тестов, вернуть изменение в backlog команды.
Distribution and versioningВерсионирование policy bundles, canary rollout, подпись артефактов и проверка integrity на runtime.Остановить rollout и автоматически откатить на последнюю стабильную policy-версию.
Decision pathFail-closed на критичных эндпоинтах, deny-by-default, object-level checks для чувствительных операций.Отключить рискованную операцию и поднять high-priority alert для on-call инженера.
Review and recertificationПлановые access review, recertification ролей, контроль orphan-доступов после орг-изменений.Автоматически пометить доступ как временный и инициировать revoke до подтверждения владельцем.
Emergency revokeЕдиный break-glass процесс, массовый revoke токенов/связей, проверка последствий по audit trail.Перевести систему в ограниченный режим и принудительно завершить активные сессии высокого риска.

Операционные метрики авторизации

P95 latency авторизационного check

Target: <= 20 ms

Если проверки дорогие, команды начинают обходить policy-layer и теряют консистентность доступа.

Доля решений с explain trace

Target: >= 99%

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

MTTR отката policy-изменения

Target: < 10 минут

Быстрый rollback критичен, когда новая политика ломает production-потоки или легитимный доступ.

Просроченные доступы после offboarding

Target: 0

Показывает зрелость identity lifecycle и снижает риск несанкционированного доступа бывших пользователей.

Покрытие object-level checks на high-risk API

Target: 100%

Без object-level контроля сохраняется риск BOLA/IDOR даже при формально корректном AuthN.

Roadmap внедрения модели доступа

1

Фаза 1 (0-30 дней)

Фокус: Инвентаризация прав и критичных ресурсов

Результат: Карта субъектов, ролей, ресурсов и текущих исключений с назначенными владельцами.

2

Фаза 2 (30-60 дней)

Фокус: RBAC baseline и deny-by-default

Результат: Единый role catalog, централизованные policy-check middleware и базовые audit-логи решений.

3

Фаза 3 (60-90 дней)

Фокус: Контекстные правила и граф отношений

Результат: ABAC-предикаты для риска/контекста, ReBAC для shared-объектов, explain API для дебага доступа.

4

Фаза 4 (90+ дней)

Фокус: Governance и непрерывная верификация

Результат: Регулярные access review, policy quality gates в CI/CD и измеримые SLO для authorization-платформы.

Типичные антипаттерны

Делать один 'god-role admin' и пытаться закрыть им все сценарии доступа.

Смешивать бизнес-атрибуты и security-атрибуты без owner и без data contract.

Строить ReBAC без explainability: пользователи не понимают, почему доступ есть или нет.

Оставлять права после org-изменений (offboarding/role change) без автоматического revoke.

References

Связанные главы

Чтобы отмечать прохождение, включи трекинг в Настройки