Files
transcriber/docs/adr/ADR-2026-08-12-access-delegated-to-provider.md
T
av c44f0e7582 HTTP API закрыт за вход через OIDC у Authelia
- шаг схемы закрывает поверхность, которую хранилище приносит открытой:
  собственную регистрацию, вход по паролю и одноразовый код — без этого
  закрытие приёма обходилось двумя запросами
- продление сессии выключено, срок семь суток: иначе отзыв доступа у
  провайдера до сервиса не доходит никогда
- файл записи отдаётся вошедшему по токену файла — пересмотр
  ADR-2026-08-12-file-link-open-but-not-logged
2026-08-12 17:44:22 +03:00

3.8 KiB
Raw Blame History

Кого пускать в сервис, решает правило провайдера, а не сервис

Решение

Сервис пускает всякого, кого пропустил провайдер, и своей проверки допуска не делает. Кто допущен, определяет правило Authelia на этого клиента — настройка выкладки, лежащая вне репозитория.

Почему

Authelia — общий провайдер контура, а не выделенный под этот сервис: учётная запись в ней есть у всякого, кому её завели ради любого другого сервиса на том же сервере. Ревью дизайна назвало следствие прямо: механизм, приглашающий «второго человека», приглашает всех, кто уже есть у провайдера.

Очевидный ответ — проверять принадлежность к названной в конфиге группе своим кодом. Владелец от него отказался: это завело бы второе место, где решается допуск, и решать его пришлось бы в двух местах согласованно.

Цена отказа названа в источнике и повторена в модели угроз:

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

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

Последствия

  • + допуск решается в одном месте, а не в двух; изменение круга допущенных не требует ни правки кода, ни выкладки.
  • + сервис не читает из ответа провайдера ничего сверх нужного для заведения записи — ни групп, ни ролей.
  • защита сервиса стала свойством настройки, лежащей в другом репозитории, и ревью её проверить не может: ни один проход не увидит, что клиент настроен слишком широко.
  • ошибка в настройке клиента не имеет наблюдаемого признака внутри сервиса: посторонний, которого пропустила Authelia, выглядит как законный пользователь.
  • разграничения по владельцу нет, поэтому цена ошибки в настройке — все записи и все расшифровки разом, а не одна учётная запись. Сузит это record-ownership.