документы: сведены расхождения, найденные сверкой канона
- один факт — один дом: рецепт локального входа, правило чтения X-Forwarded-For, уровень строки журнала и опись опор изъятия сведены к своим домам, копии заменены ссылками - форма [auth.test_headers] выровнена по образцу конфига в семи местах; сценарии intake и archive перестали ссылаться на сессию, которой сервис не выдаёт - поправлены протухшие факты: ключ объекта строит ULID, а не UUID; сверку адреса пира зовут трое, а не двое; обзор capability access знает о задаче 2026-08-23
This commit is contained in:
@@ -81,12 +81,10 @@
|
||||
«Предохранитель отладки включает только подстановку заголовков»; снимать их
|
||||
поодиночке нельзя: барьер держится всеми разом.
|
||||
|
||||
Держится изъятие **умолчанием, а не машиной**: предохранитель по умолчанию
|
||||
выключен, а заполненная имитация без него роняет старт. Боевой перечень
|
||||
доверенных адресов включению предохранителя не мешает — сервис, поднятый в бою с
|
||||
включённым предохранителем и заполненной имитацией, назовёт своим именем всякого,
|
||||
чей запрос пришёл через обратный прокси, то есть всякого, кто пришёл обычным
|
||||
путём.
|
||||
Держится изъятие умолчанием предохранителя «выключено» и отказом старта при
|
||||
заполненной имитации без него. Что остаётся между боевой выкладкой и открытым
|
||||
входом целиком, включая опору вне репозитория, перечисляет модель угроз —
|
||||
`docs/security.md`, «Периметр».
|
||||
|
||||
#### Scenario: Названный провайдером получает доступ
|
||||
|
||||
@@ -275,14 +273,15 @@ MUST отвечать отказом `401`, когда пришедший не
|
||||
|
||||
**Изъятие одно — отладочный запуск.** При включённом предохранителе
|
||||
`[server] debug` заголовок входа ставит не прокси, а сам сервис значением из
|
||||
секции `[auth] test_headers`; узнавание при этом остаётся тем же и подставленного
|
||||
секции `[auth.test_headers]`; узнавание при этом остаётся тем же и подставленного
|
||||
заголовка от пришедшего не отличает. Условия, при которых источник этот законен,
|
||||
и проверки старта, которыми он держится, стоят требованиями «Отладочный запуск
|
||||
называет пришедшего настройками», «Настройка, открывающая вход всем, роняет
|
||||
старт», «Отладочный запуск виден в журнале» и «Предохранитель отладки включает
|
||||
только подстановку заголовков». Держится изъятие умолчанием предохранителя
|
||||
«выключено» и отказом старта при заполненной имитации без него; боевой перечень
|
||||
доверенных адресов включению предохранителя не мешает.
|
||||
и проверки старта, которыми он держится, перечислены требованием «Кого пускать,
|
||||
решает провайдер».
|
||||
|
||||
Держится изъятие умолчанием предохранителя «выключено» и отказом старта при
|
||||
заполненной имитации без него. Что остаётся между боевой выкладкой и открытым
|
||||
входом целиком, включая опору вне репозитория, перечисляет модель угроз —
|
||||
`docs/security.md`, «Периметр».
|
||||
|
||||
Заголовку сервис MUST верить только тогда, когда запрос пришёл с адреса из
|
||||
объявленного перечня доверенных, и адрес этот MUST браться у самого соединения,
|
||||
@@ -591,7 +590,7 @@ MUST не выдавать вовсе — ни куки, ни токена се
|
||||
### Requirement: Отладочный запуск называет пришедшего настройками
|
||||
|
||||
Сервис SHALL подставлять запросу заголовки входа значениями из секции
|
||||
`[auth] test_headers`, когда включён предохранитель `[server] debug`, и MUST
|
||||
`[auth.test_headers]`, когда включён предохранитель `[server] debug`, и MUST
|
||||
делать это так, чтобы узнавание не отличало подставленный заголовок от
|
||||
поставленного обратным прокси. Ветка кода, которой узнаётся пришедший, обязана
|
||||
быть той же, что работает в бою: отладке подлежит боевой путь, а не его
|
||||
@@ -685,7 +684,7 @@ MUST не выдавать вовсе — ни куки, ни токена се
|
||||
|
||||
Умолчания названы нормой, а не образцом конфига. Отсутствие ключа `[server]
|
||||
debug` MUST читаться как выключенный предохранитель, а отсутствие секции
|
||||
`[auth] test_headers` — как пустая секция: конфиг сегодняшнего дня, не тронутый
|
||||
`[auth.test_headers]` — как пустая секция: конфиг сегодняшнего дня, не тронутый
|
||||
ни на байт, обязан вести себя ровно как вёл. Ошибка разбора значения MUST
|
||||
кончаться отказом старта, а не прочтением «включено».
|
||||
|
||||
|
||||
Reference in New Issue
Block a user