Шифрование базы данных
Чувствительные значения шифруются перед сохранением.
Метод
AES-256-GCM через Node.js crypto; ключ 32 байта как 64 hex-символа:
ENCRYPTION_KEY=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
openssl rand -hex 32
Хранение ключа
ENCRYPTION_KEY..encryption_keyвDATA_DIR.- Только новое хранилище: ключ записывается в
DATA_DIR/.encryption_keyдо запуска базы.
Источники должны совпадать. Существующие данные без исходного ключа безопасно отказывают; Libre не создаёт замену.
Правила
Резервируйте ключ вместе с базой; не ротируйте без миграции; утрата исключает восстановление; смена без повторного шифрования делает данные нечитаемыми.
Область защиты
Пути, использующие сервис шифрования, например учётные данные. Это не шифрование диска, страниц SQLite или end-to-end; используйте диск и HTTPS.
Данные Work
Задача целиком не шифруется. Файлы и зависимости обычные в томах; разговоры, результаты, вывод и метаданные в SQLite не шифруются автоматически.
Защищайте Docker data root и DATA_DIR; резервируйте базу, ENCRYPTION_KEY и тома вместе. Удалённый поставщик может получить контекст и файлы; шифрование хранения не меняет сеть.
Docker и Kubernetes
ENCRYPTION_KEY=replace-with-64-hex-characters
DATA_DIR=/data
Постоянное хранилище, в Kubernetes Secret и PersistentVolume.
Устранение неполадок
openssl rand -hex 32
Проверьте тот же ENCRYPTION_KEY и том DATA_DIR. Сохраняйте DATA_DIR/.encryption_key; источники должны совпадать.