Hop til hovedindhold

Databasekryptering

Libre WebUI har en krypteringstjeneste på programniveau til følsomme værdier, før de skrives til lageret.

Krypteringsmetode

Backend bruger AES-256-GCM gennem Node.js crypto. Krypteringsnøglen skal være 32 byte og angives som en hexadecimal streng på 64 tegn:

ENCRYPTION_KEY=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

Opret en nøgle:

openssl rand -hex 32

Nøglelagring

Libre WebUI indlæser nøglen i denne rækkefølge:

  1. ENCRYPTION_KEY fra miljøet.
  2. En vedvarende .encryption_key-fil under den valgte DATA_DIR.
  3. Kun for et nyt lager: en ny nøgle, der skrives vedvarende til DATA_DIR/.encryption_key, før databasen starter.

Hvis både miljøet og den vedvarende fil angiver en nøgle, skal de matche, ellers afbrydes starten. Eksisterende krypteret tilstand uden den oprindelige nøgle afvises også sikkert; Libre opretter aldrig en erstatningsnøgle til et eksisterende lager.

Vigtige nøgleregler

  • Sikkerhedskopiér ENCRYPTION_KEY sammen med databasen.
  • Rotér ikke nøglen uden en migreringsplan for krypterede værdier.
  • Hvis nøglen mistes, kan krypterede værdier ikke gendannes.
  • Hvis nøglen ændres uden at kryptere data igen, bliver eksisterende værdier ulæselige.

Hvad der beskyttes

Kryptering anvendes af kodeveje, som bruger krypteringstjenesten eller hjælpefunktioner til krypteret lagring. Den er beregnet til følsomme programværdier som legitimationsoplysninger og private brugerdata, som hjælpefunktionerne håndterer.

Det er ikke fulddiskkryptering, SQLite-sidekryptering eller end-to-end-kryptering mellem bruger og browser. Brug diskkryptering og HTTPS til disse lag.

Work-data

Kryptering på programniveau krypterer ikke en hel Work-opgave. Work-kildefiler og projektafhængigheder er almindelige filer i navngivne Docker-volumener, som afgrænses pr. opgave. Work-samtaler, værktøjsresultater, kommandooutput og opgavemetadata gemmes i SQLite og krypteres ikke automatisk, blot fordi nogle legitimationsstier bruger krypteringstjenesten.

Beskyt Dockers datarod og DATA_DIR med adgangskontrol og diskkryptering efter behov. Sikkerhedskopiér databasen, ENCRYPTION_KEY og administrerede Work-volumener sammen. En Work-opgave til en fjernmodel kan også afsløre samtalekontekst og fil- eller kommandooutput for udbyderen; lagerkryptering ændrer ikke netværksgrænsen.

Docker og Kubernetes

Angiv udtrykkeligt en stabil nøgle til produktion:

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

Montér DATA_DIR på vedvarende lager. I Kubernetes gemmes nøglen i en Secret, og data monteres på en PersistentVolume.

Fejlfinding

Ugyldig nøglelængde

Nøglen skal bestå af præcis 64 hexadecimale tegn. Opret en ny med:

openssl rand -hex 32

Data kan ikke dekrypteres efter en ny udrulning

Kontrollér, at samme ENCRYPTION_KEY bruges, og at samme DATA_DIR-volumen er monteret.

Udviklingsmiljøet oprettede en ny nøgle

Behold DATA_DIR/.encryption_key sammen med databasen. Du kan i stedet angive samme værdi gennem ENCRYPTION_KEY; hvis begge kilder findes, skal de matche.

Relateret dokumentation