Перейти к основному содержимому

Шифрование базы данных

Чувствительные значения шифруются перед сохранением.

Метод

AES-256-GCM через Node.js crypto; ключ 32 байта как 64 hex-символа:

ENCRYPTION_KEY=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
openssl rand -hex 32

Хранение ключа

  1. ENCRYPTION_KEY.
  2. .encryption_key в DATA_DIR.
  3. Только новое хранилище: ключ записывается в 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; источники должны совпадать.

Связанные документы