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

Обновлено: 11 апреля 2026 г. в 20:55

Контроль доступа в медиасервисе

средний

Классическая задача: права доступа к контенту, модели RBAC/ABAC/ReBAC, отзыв прав, журнал аудита и согласованность кэша решений.

Контроль доступа в медиасервисе начинается не с проверки токена, а с ответа на вопрос, можно ли этому пользователю открыть конкретный объект здесь и сейчас: с его подпиской, регионом, устройством и ролью.

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

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

Права доступа

Главный вопрос здесь не в токене как таковом, а в том, как быстро и однозначно вычислить право пользователя на конкретный объект с учётом подписки, региона и роли.

Версии политик

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

Отзыв прав

Скомпрометированный доступ нельзя отключать вручную по одному узлу: нужен короткий и надёжный путь распространения отзыва по всему контуру.

Журнал аудита

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

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

Источник

Acing the System Design Interview

Глава 16: Design Access Control for Media App с фокусом на модели правил, точках применения и надёжности контура доступа.

Читать обзор

Где этот паттерн критичен

  • Netflix / Spotify: разграничение доступа к контенту по региону, подписке и правам.
  • YouTube Studio: роли для команд авторов и разные права на публикацию, удаление и управление медиаматериалами.
  • B2B media SaaS: и для корпоративных клиентов.
  • Внутренние платформенные инструменты: доступ операторов и сервисов к чувствительным операциям по явно заданным правилам.

Функциональные требования

Основной API контроля доступа

  • POST /authorize - решение о доступе и код причины
  • POST /explain - объяснение применённых правил
  • POST /revoke - срочный отзыв прав или области токена
  • GET /audit - поиск истории по decision_id

Функции политик и правил

  • RBAC как базовый слой, ABAC и ReBAC - для контекста запроса и графа владения
  • Версионирование политик и безопасный выпуск изменений
  • Запрет по умолчанию для чувствительных операций
  • Полная история: кто, что, когда и по какому правилу получил доступ

Нефункциональные требования

ТребованиеЦелевое значениеОбоснование
Задержка принятия решения (p95)< 20msПроверка доступа не должна становиться узким местом API
Доступность99.99%Сбой контура доступа блокирует критичные пользовательские действия
Задержка отзыва прав< 5 секБыстрое отключение скомпрометированного доступа
Целостность журнала аудитаНеизменяемый журналРазбор инцидентов и регуляторные проверки
Изоляция арендаторовЖёсткая границаЗащита от межарендаторных утечек и неверного наследования прав

Основной компромисс здесь - удерживать пользовательскую задержку низкой, но не допускать окон, в которых система продолжает опираться на устаревшие правила доступа.

Архитектура высокого уровня

Теория

ACL/RBAC/ABAC/ReBAC

Модели контроля доступа и их практическое применение в распределённых системах.

Читать обзор

Архитектура высокого уровня

контур принятия решения, политики, атрибуты, аудит и отзыв прав

Схема отделяет контур принятия решения от обновления политик и контура аудита и отзыва прав.

Клиент или сервис
запрос доступа
API-шлюз
входная точка
PEP
точка применения правил
PDP
движок принятия решения
Хранилище политик
версии правил
Хранилище атрибутов
субъект и ресурс
Кэш решений
короткий TTL
Журнал аудита
неизменяемые записи
SIEM и оповещения
поиск аномалий
Сервис отзыва прав
экстренное отключение доступа

Контур контроля доступа отделяет путь принятия решения от , где живут публикация политик, версии правил и служебные операции. В медиасценариях система часто дополнительно выдаёт для краткоживущего доступа к объекту, но корректность такого доступа всё равно зависит от точной и синхронизации между PDP и PEP.

Путь записи и путь чтения

Путь записи и путь чтения

Как обновления правил попадают в контур управления и как обслуживается горячий путь принятия решения.

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

Изменение политики

Этап 1

запрос от администратора

Сервис безопасности или администратор меняет роли, правила доступа и события отзыва.

Хранилище политик

Этап 2

версионированная запись

Изменение фиксируется как новая версия политики и проходит проверки перед выпуском.

Инвалидация кэша

Этап 3

синхронизация PEP и PDP

Система сбрасывает устаревшие решения в кэше и обновляет точки применения правил.

Поток аудита

Этап 4

неизменяемые события

События обновления и отзыва записываются в журнал аудита и попадают в SIEM.

Новые правила активны

Этап 5

готово к применению

PEP и PDP работают на новой версии политики и принимают решения по обновлённым правилам.

Ключевые точки пути записи

  • Каждое изменение политики должно иметь версию и автора.
  • Кэш решений нужно синхронно инвалидировать до завершения выпуска новых правил.
  • Отзыв прав должен быстро доходить до активных сессий и edge-точек.

Согласованность политик и отказоустойчивость

Глубже

Identification, Authentication, Authorization

Границы между аутентификацией и авторизацией, жизненный цикл токенов и практические паттерны безопасности.

Читать обзор

Самая неприятная ошибка здесь - разрешить доступ после того, как право уже должно быть отключено. Поэтому система обязана быстро распространять , явно различать режимы и , а изменения правил выпускать через .

Модель решений с учётом версии

Решение должно всегда быть привязано к версии политики и контексту запроса:

decision = evaluate(subject, resource, action, context, policy_version)
cache_key = request_hash + policy_version
  • Версия политики - защищает кэш решений от устаревания.
  • Код причины - нужен, чтобы поддержка и расследования понимали, почему доступ был выдан или отклонён.
  • Детерминированная проверка - позволяет воспроизводить решение в расследованиях и разборе инцидентов.

Защитные механизмы

  • Блокировка критичных операций: при недоступности PDP чувствительные действия не должны проходить по инерции.
  • Экстренный отзыв прав: активные сессии и токены нужно отключать без длинного окна рассинхронизации.
  • Поиск аномалий: всплески отказов и необычные шаблоны доступа должны быстро попадать в алерты.
  • Защита выпуска правил: канареечный запуск и автоматический откат нужны, чтобы новая политика не ломала выдачу доступа.

Риски и типовые ошибки

  • Смешение аутентификации и авторизации: размытые границы быстро приводят к обходу проверок.
  • Устаревший кэш решений: после обновления правил система продолжает жить на старых вердиктах.
  • Необъяснимые отказы: команда поддержки не может быстро показать, почему доступ был запрещён.
  • Медленный отзыв прав: у скомпрометированного аккаунта остаётся слишком длинное окно доступа.
  • Скрытая проблема в модели прав: возникает из-за неверной комбинации ролей, арендаторов и контекстных правил.

Что важно проговорить на интервью

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

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

  • Identification, authentication, authorization - Границы между аутентификацией и авторизацией, жизненный цикл токенов и базовые практики identity-контура.
  • ACL/RBAC/ABAC/ReBAC - Как выбирать модель контроля доступа для ролей, контекста запроса и графа владения.
  • API Security Patterns - Применение правил на уровне шлюза и сервисов, защита API-поверхности и снижение риска обхода проверок.
  • Zero Trust - Подход минимальных полномочий, постоянная проверка контекста и сегментация доверия в распределённых системах.
  • SRE Book - Надёжность, защитные ограничения и операционные практики для критичных сервисов контроля доступа.
  • Payment System - Параллели по журналу аудита, безопасному поведению при сбоях и отзыву чувствительных прав.

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