Přeskočit na hlavní obsah

Šifrování databáze

Libre WebUI obsahuje šifrovací službu na úrovni aplikace, která chrání citlivé hodnoty před zápisem do úložiště.

Metoda šifrování​

Backend používá AES-256-GCM prostřednictvím Node.js crypto. Šifrovací klíč musí mít 32 bajtů a být zapsán jako hexadecimální řetězec o 64 znacích:

ENCRYPTION_KEY=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

Vytvoření klíče:

openssl rand -hex 32

Uložení klíče​

Libre WebUI načítá klíč v tomto pořadí:

  1. ENCRYPTION_KEY z prostředí.
  2. Trvale uložený soubor .encryption_key ve vybraném DATA_DIR.
  3. Pouze u nového úložiště nově vytvořený klíč, který se trvale zapíše do DATA_DIR/.encryption_key před spuštěním databáze.

Pokud klíč poskytuje prostředí i trvalý soubor, musí se shodovat, jinak se spuštění přeruší. Existující šifrovaný stav bez původního klíče je také bezpečně odmítnut; Libre nikdy nevytváří náhradní klíč pro existující úložiště.

Důležitá pravidla pro klíče​

  • Zálohujte ENCRYPTION_KEY společně s databází.
  • Klíč neměňte bez migračního plánu pro šifrované hodnoty.
  • Ztráta klíče znamená, že šifrované hodnoty nelze obnovit.
  • Změna klíče bez opětovného zašifrování způsobí nečitelnost existujících hodnot.

Co je chráněno​

Šifrování používají cesty kódu se šifrovací službou nebo pomocnými funkcemi šifrovaného úložiště. Je určené pro citlivé aplikační hodnoty, například přihlašovací údaje a soukromá uživatelská data.

Nejde o šifrování celého disku, stránek SQLite ani koncové šifrování mezi uživatelem a prohlížečem. Pro tyto vrstvy používejte šifrování disku a HTTPS.

Data Work​

Šifrování na úrovni aplikace nešifruje celý úkol Work. Zdrojové soubory a závislosti jsou běžné soubory v pojmenovaných svazcích Docker omezených na úkol. Konverzace Work, výsledky nástrojů, výstup příkazů a metadata úkolu jsou uloženy v SQLite a automaticky se nešifrují jen proto, že některé cesty přihlašovacích údajů používají šifrovací službu.

Kořen dat Docker a DATA_DIR chraňte řízením přístupu a šifrováním disku. Databázi, ENCRYPTION_KEY a spravované svazky Work zálohujte společně. Odeslání úkolu Work vzdálenému modelu může poskytovateli odhalit kontext konverzace a výstup souboru či příkazu; šifrování úložiště tuto síťovou hranici nemění.

Docker a Kubernetes​

Pro produkci výslovně nastavte stabilní klíč:

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

Připojte DATA_DIR k trvalému úložišti. V Kubernetes uložte klíč do Secret a data připojte k PersistentVolume.

Řešení potíží​

Neplatná délka klíče

Klíč musí mít přesně 64 hexadecimálních znaků. Nový vytvoříte pomocí:

openssl rand -hex 32

Po novém nasazení nelze data dešifrovat

Ověřte, že se používá stejný ENCRYPTION_KEY a je připojen stejný svazek DATA_DIR.

Vývojové prostředí vytvořilo nový klíč

Soubor DATA_DIR/.encryption_key uchovávejte s databází. Stejnou hodnotu můžete nastavit přes ENCRYPTION_KEY; pokud existují oba zdroje, musí se shodovat.

Související dokumentace​