Commit Graph
4 Commits
Author SHA1 Message Date
ddadminandClaude Opus 5 abc94ba406 feat(clickhouse): справочники вынесены в зону dic, словарь читает подложку
Зачем: место словаря в dds было унаследовано от первого объекта, а не решено.
Справочник читают несколько слоёв, а производит его в хранилище ни один —
прописка внутри одного из потребителей приписывала DDS владение, которого у
него нет.

Что: заведена база dic вне цепочки STG → ODS → DDS → DM, dds.products переехал
в dic.products. Под словарём появилась подложка dic.products_file на движке
File — намеренное усложнение ради урока: в бою источник словаря приезжает
процессом, а не лежит файлом у сервера. Источник объявлен формой query и
приводит цену из целых копеек каталога в Decimal(18, 2), как у денег бэкенда.
Обновление — окном LIFETIME(MIN 60 MAX 90) вместо ручной перезагрузки, ценой
заявленной неатомарности между нодами. У словаря свой беспарольный
пользователь dict с единственным правом на чтение dic. Суффикс _file добавлен
в конвенцию имён ADR 0006. Решение, отвергнутые варианты и условия пересмотра
— ADR 0012.

Проверка: make clean && make up на собранном заново стенде — зелено, make smoke
20 проверок и 0 ошибок, make lint чисто. Словарь LOADED со 180 строками, цена
Decimal(18, 2) и точна на копейках: 188990 → 1889.90. Пользователь bi читает
словарь dictGet-ом со второй ноды, analyst — подложку соединением, база dds
пуста. Минимальное право на движок замерено тремя пользователями: достаточно
GRANT FILE ON *.*, хотя отказ называет TABLE ENGINE ON File.

Closes #105

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 11:37:26 +03:00
ddadmin d0f15bea02 fix(clickhouse): устранены замечания ревью модели доступа
- Зачем:
  - документация и конфигурация доступа должны говорить только подтверждённое.
- Что:
  - ADR приведён к результату межшардового замера.
  - объяснены служебный грант и учебный компромисс remote().
  - удалены избыточные профили, README связан с ADR.
- Проверка:
  - make config-test, make lint, make smoke, make check-clickhouse, make check-services.
2026-08-13 11:31:01 +03:00
ddadmin 790f7c1bb7 feat(clickhouse): добавлены роли и межнодовый секрет
- Зачем:
  - менти должен увидеть разделение доступа без состояния в томах.
- Что:
  - пользователи и роли объявлены файлом с паролями из окружения.
  - межшардовые запросы передают пользователя через общий секрет.
  - четыре допущения реализации подтверждены в ADR живыми замерами.
- Проверка:
  - make config-test, make smoke, make check-clickhouse, make check-services.
2026-08-13 10:04:58 +03:00
ddadminandClaude Opus 5 a3d852cad9 docs(adr): решена модель доступа к ClickHouse
- Зачем:
  - до появления ETL и витрин надо выбрать границу боевого реализма в
    доступе: один беспарольный default учит нулю, а полноценная защита
    стоит эксплуатации, которой стенду не потянуть (#66).
- Что:
  - принято четыре пользователя и три роли, объявленные файлами настройки,
    без состояния в томах и без SQL-хранилища доступа.
  - межнодовое доверие переведено на общий секрет кластера: учётные данные
    по репликам подменяют права спросившего правами общей учётки.
  - записаны отвергнутые варианты, отложенные меры защиты и четыре
    проверки, которые закрывает тикет реализации.
  - устройство модели отдано разделу README «Состав и доступ»: отдельный
    справочник по доступу своего содержания сверх ADR сегодня не имеет.
  - оговорено, что роль шире прав на слои — образ требует отдельных
    разрешений на ON CLUSTER и на чтение системных таблиц (холодное
    ревью #78).
- Проверка:
  - реализации в этом коммите нет, менять нечему: make config-test.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 23:53:18 +03:00