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