Przejdź do głównej zawartości

Szyfrowanie bazy danych

Wrażliwe wartości są szyfrowane przed zapisem.

Metoda

AES-256-GCM przez Node.js crypto; klucz 32 bajty jako 64 znaki hex:

ENCRYPTION_KEY=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
openssl rand -hex 32

Przechowywanie klucza

  1. ENCRYPTION_KEY.
  2. .encryption_key w DATA_DIR.
  3. Tylko nowy magazyn: wygenerowany i zapisany do DATA_DIR/.encryption_key przed startem.

Oba źródła muszą się zgadzać. Istniejące dane bez klucza zawodzą bezpiecznie; Libre nie tworzy zamiennika.

Zasady

Kopia klucza z bazą; nie rotuj bez migracji; utrata uniemożliwia odzysk; zmiana bez ponownego szyfrowania czyni dane nieczytelne.

Zakres

Dotyczy ścieżek używających usługi, np. poświadczeń. Nie jest szyfrowaniem dysku, stron SQLite ani end-to-end; używaj dysku i HTTPS.

Dane Work

Nie szyfruje całego zadania. Pliki i zależności są zwykłe w wolumenach; rozmowy, wyniki, wyjście i metadata w SQLite nie są automatycznie szyfrowane.

Chroń Docker data root i DATA_DIR; kopiuj bazę, ENCRYPTION_KEY i wolumeny razem. Zdalny model może dostać kontekst i pliki; szyfrowanie storage nie zmienia sieci.

Docker i Kubernetes

ENCRYPTION_KEY=replace-with-64-hex-characters
DATA_DIR=/data

Trwały storage, w Kubernetes Secret i PersistentVolume.

Problemy

openssl rand -hex 32

Przy odszyfrowaniu sprawdź ten sam ENCRYPTION_KEY i wolumen DATA_DIR. Zachowaj DATA_DIR/.encryption_key; oba źródła muszą być zgodne.

Powiązane