Úložiště a nájemci
Oddělení dat jednotlivých workspaců, souborové a objektové úložiště, cache a kontrola malwaru.
Jeden workspace, jeden soubor, jeden prefix
Každý workspace je vlastní SQLite databáze pod DATA_DIR a vlastní prefix klíčů v úložišti blobů. Oddělení je fyzické, ne klauzule WHERE: neexistuje sdílená tabulka, kterou by dotaz překročil. Řídicí databáze drží organizace, členství, tokeny, zabalené klíče workspaců a auditní stopu — nikdy obsah workspace.
Servisní nebo agentní token se razí pro jeden workspace a při předložení jinému je odmítnutý. Osobní token a OAuth oprávnění AI klienta naopak jednají za svou osobu: každý požadavek se přepíše na rozsah workspace, kterému je určený, ověří proti aktuálnímu členství té osoby v něm a stropuje na roli člena, takže token nikdy nenese víc, než by neslo členství dané osoby.
Server drží fond otevřených handlerů nájemců (VITRINKA_TENANT_POOL_MAX, výchozí 64); workspace se otevírá při prvním použití a jeho klíč se v tu chvíli rozbalí.
Backendy pro bloby
BLOB_BACKEND | Kde bloby leží | Poznámky |
|---|---|---|
fs (výchozí) | DATA_DIR/blobs | Jeden svazek drží všechno; zálohujte ho spolu s databázemi. |
s3 | Bucket pojmenovaný S3_BUCKET na S3_ENDPOINT | Všech pět proměnných S3_* je povinných a ověřují se při startu; bucket se založí, pokud chybí. |
V obou případech se každý objekt zapisuje zapečetěný klíčem workspace (Šifrování). U S3 je průchozí cache pod DATA_DIR/blobcache (BLOB_CACHE_MAX_GB, výchozí 20, 0 vypíná) předehřátá při startu a mazaná od nejstaršího; její položky jsou stejný šifrovaný text, jaký drží bucket.
Limity velikosti
MAX_SET_MB (výchozí 200) stropuje tělo požadavku i rozbalenou velikost publikované sady. Dekódování obrázků a dokumentů je hlídané limitem, takže dekompresní bomba je odmítnutá, ne rozbalená.
Kontrola malwaru
S nastaveným CLAMD_ADDR se každý zápis blobu před uložením kontroluje pomocí clamd. Pokud skener neodpoví, zápis se odmítne. CLAMD_MAX_MB (výchozí 100) omezuje velikost kontrolovaného souboru; větší soubory se odmítají. Bez CLAMD_ADDR se kontrola neprovádí.
Hostovaná služba má sidecar clamd napevno v compose. Vlastní instalace, která chce stejný postoj, provozuje vlastního démona ve stejné síti — adresa je jediná konfigurace.