mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-05 09:14:58 +03:00
Ключ выводился из SECRET_KEY, а ошибка расшифровки глоталась молча. Значит смена ключа подписи — обычное действие после утечки — делала нечитаемыми секреты TOTP сотрудников, токены интеграций, пароль SMTP и ключи S3, и в логе об этом не было ни строки: секреты просто становились пустыми. Теперь ключ живёт своим файлом в томе секретов: его кладёт туда первый старт стека, выводя из secret_key ровно тем же способом, каким это делал сам продукт. Значение от этого не меняется, поэтому работающая установка ничего не теряет — но ключ больше не привязан к SECRET_KEY, и подпись можно ротировать. Человек ключ по-прежнему не вводит: файла с переменными у продукта нет. Молчание убрано: не расшифровавшееся значение пишет предупреждение в лог, а неверный ключ в настройке падает ImproperlyConfigured сразу, а не отдаёт пустой секрет при первой расшифровке. Проверено на живом томе: shell-вывод ключа совпадает с питоновским байт в байт (сверено в образе pgvector/pgvector:pg16); после запуска скрипта сгенерированный ключ равен действующему выводимому; приложение читает его из файла и расшифровывает все пять сохранённых секретов интеграций. Четыре теста. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>