Несекретные настройки из OpenBao: OPENBAO__APP__<ИМЯ> (контур не передаёт обычные env) #44

Closed
opened 2026-10-07 17:12:33 +03:00 by aep · 0 comments
Owner

Проблема

Платформа РАИСА передаёт в под только секреты OpenBao (OPENBAO__*); обычные переменные окружения задать нельзя (ответ разработчика переноса, 07.10.2026). Для arm-core в контуре отличаются от значений по умолчанию:

Настройка Нужно в контуре По умолчанию
NATS_ENABLED true false — без него ядро не обменивается с парсером и шлюзом
DEBUG true false — нужен для dev-заглушки аутентификации
AUTH_DEV_ISSUER true false
FORWARDED_ALLOW_IPS адреса прокси платформы 127.0.0.1 — иначе в аудите IP прокси (некритично)

AUTH_DEV_SECRET и прочие секреты — как обычно, в OpenBao. Контур временно без платформенной аутентификации: доступ любому, вход через заглушку по email.

Решение (владелец, 07.10.2026, вариант 1 из трёх)

Любая настройка верхнего уровня может прийти как OPENBAO__APP__<ИМЯ> (например OPENBAO__APP__NATS_ENABLED=true). Отвергнуты: смена значений по умолчанию на контурные (dev-эмитент включался бы по умолчанию — ломает защиту Среза 0) и контурный конфиг-файл в репозитории (затирается rsync --delete при переносе, контурная конфигурация в коде).

Что сделать

  1. Свой источник настроек в src/core/config.py (settings_customise_sources): переменные OPENBAO__APP__* → поля Settings верхнего уровня. Приоритет: обычный env → OPENBAO__APP__* → .env → значение по умолчанию. Вложенные группы (OPENBAO__DATABASE__* и т.п.) не трогать; APP не становится полем модели OpenBAOSettings (проверить, что лишний ключ не ломает её валидацию).
  2. Неизвестное имя под OPENBAO__APP__ — ошибка конфигурации при старте (опечатка не должна молча игнорироваться).
  3. Тесты: значение из OPENBAO__APP__ применяется; обычный env перекрывает его; .env им перекрывается; типы (bool, list для CORS_ORIGINS) разбираются так же, как из env; неизвестное имя → ошибка.
  4. api/.env.example и README (таблица переменных): правило OPENBAO__APP__<ИМЯ> для контура.
  5. Код источника одинаковый в трёх сервисах — те же задачи в arm-scan-gateway и arm-tabular-parser; гайд переноса — arm-ka-docs.

Когда

После завершения агента Среза 3b (#36). Связано: #43 (зависимости под контур).

Bounded-задача.

## Проблема Платформа РАИСА передаёт в под **только секреты OpenBao** (`OPENBAO__*`); обычные переменные окружения задать нельзя (ответ разработчика переноса, 07.10.2026). Для arm-core в контуре отличаются от значений по умолчанию: | Настройка | Нужно в контуре | По умолчанию | |---|---|---| | `NATS_ENABLED` | `true` | `false` — без него ядро не обменивается с парсером и шлюзом | | `DEBUG` | `true` | `false` — нужен для dev-заглушки аутентификации | | `AUTH_DEV_ISSUER` | `true` | `false` | | `FORWARDED_ALLOW_IPS` | адреса прокси платформы | `127.0.0.1` — иначе в аудите IP прокси (некритично) | `AUTH_DEV_SECRET` и прочие секреты — как обычно, в OpenBao. Контур временно без платформенной аутентификации: доступ любому, вход через заглушку по email. ## Решение (владелец, 07.10.2026, вариант 1 из трёх) Любая настройка верхнего уровня может прийти как `OPENBAO__APP__<ИМЯ>` (например `OPENBAO__APP__NATS_ENABLED=true`). Отвергнуты: смена значений по умолчанию на контурные (dev-эмитент включался бы по умолчанию — ломает защиту Среза 0) и контурный конфиг-файл в репозитории (затирается `rsync --delete` при переносе, контурная конфигурация в коде). ## Что сделать 1. Свой источник настроек в `src/core/config.py` (`settings_customise_sources`): переменные `OPENBAO__APP__*` → поля `Settings` верхнего уровня. Приоритет: обычный env → `OPENBAO__APP__*` → `.env` → значение по умолчанию. Вложенные группы (`OPENBAO__DATABASE__*` и т.п.) не трогать; `APP` не становится полем модели `OpenBAOSettings` (проверить, что лишний ключ не ломает её валидацию). 2. Неизвестное имя под `OPENBAO__APP__` — ошибка конфигурации при старте (опечатка не должна молча игнорироваться). 3. Тесты: значение из `OPENBAO__APP__` применяется; обычный env перекрывает его; `.env` им перекрывается; типы (bool, list для `CORS_ORIGINS`) разбираются так же, как из env; неизвестное имя → ошибка. 4. `api/.env.example` и README (таблица переменных): правило `OPENBAO__APP__<ИМЯ>` для контура. 5. Код источника одинаковый в трёх сервисах — те же задачи в arm-scan-gateway и arm-tabular-parser; гайд переноса — arm-ka-docs. ## Когда После завершения агента Среза 3b (#36). Связано: #43 (зависимости под контур). Bounded-задача.
aep closed this issue 2026-10-07 17:42:13 +03:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-core#44
No description provided.