diff --git a/IMPLEMENTATION_LOG.md b/IMPLEMENTATION_LOG.md index f105f73..083b5ee 100644 --- a/IMPLEMENTATION_LOG.md +++ b/IMPLEMENTATION_LOG.md @@ -474,19 +474,19 @@ - Зачем: укоротить окно атаки при краже access-токена; токены в БД только в виде хэша. - Что изменено: дефолт JWT_ACCESS_EXPIRES 30d→15m (env сохранён); миграция 0082 (refresh_token_hash + parent/replaced_by хэши в user_sessions, reset_password_token_hash в users; очистка сессий = глобальный разлогин); выпуск/поиск/отзыв только по sha256-хэшу (server/utils/jwt.ts hashToken, users.storage.ts, auth.service.ts — rotateFamilySession, grace-ротация для гонки вкладок); resetPasswordTokenHash в исключениях SafeUser. Фронт не тронут — refresh реактивный по 401. - Как проверялось: 12 новых тестов (118/118); деплой на прод — сессии очищены миграцией (ожидаемо). -- Проверка на проде: re-login работает, refresh-ротация (access 15 мин) — см. ниже в этой записи после подтверждения. +- Проверка на проде: сессии очищены (user_sessions=0 после миграции), health 200, re-login/refresh — подтверждается пользователем в браузере (первый вход после деплоя). - Влияние на поиск/UX: нет; пользователи перелогинились один раз. - Подводные камни: bot_sessions не хэшированы (отдельная audience-модель, отложено); legacy plain-колонки удалить отдельной миграцией после стабилизации. ## [0.3] Не-root deploy-пользователь -- Статус: ✅ done +- Статус: ✅ done (деплой от deploy подтверждён; PermitRootLogin prohibit-password применён, root-ключ как fallback проверен — ROOT_KEY_OK) - Зачем: убрать постоянный root-SSH из CI. - Что изменено: - Сервер: пользователь `deploy` (uid 1000, группа docker), SSH-ключ `github-actions-deploy` (сгенерирован локально, публичный — в authorized_keys deploy, приватный — в секрет SSH_KEY через GitHub API, локальная копия `.ssh/deploy_ci` вне репо). - `/opt/crm` переписан на deploy:deploy; бэкап compose доступен на чтение. - `.github/workflows/deploy.yml`: `username: deploy`, хост — секрет `DEPLOY_HOST` (вместо хардкода). - - PermitRootLogin — будет выставлен в prohibit-password после подтверждения, что деплой от deploy работает (ниже). + - PermitRootLogin=prohibit-password (бэкап sshd_config.bak-20260908); root-ключ остаётся fallback. - Как проверялось: SSH от deploy + docker ps — OK; su deploy git status в /opt/crm — OK; деплой от deploy — после пуша этого коммита. - Влияние на поиск/UX: нет. - Подводные камни: на сервере остался UU-конфликт в index (последствие stash pop), чистится в 0.14; root-SSH пока остаётся как fallback до подтверждения. @@ -503,7 +503,7 @@ ## [0.14] Дрейф конфигурации: прод-compose в приватном инфра-репозитории -- Статус: ⏳ деплой (код запушен, первый деплой новой схемы — проверка) +- Статус: ✅ done (деплои `0fb3b54` и `a5ab294` успешны: без stash, git status на сервере чистый, Traefik/HTTPS работают, compose напрямую из инфра-репо через -f) - Зачем: прод работает ровно на коде из Git; убрать git stash и бэкап compose вне репо (аудит С5, решение пользователя — отдельный приватный репо). - Что сделано: - Создан приватный репо `iisultanov/iistwin-infra` (через GitHub API): `docker-compose.prod.yml` (бывший .bak.serverfix с лимитами 0.4), `README.md` (план перехода), `.env.template` (32 ключа без значений).