open-webui/backend/open_webui
ethan-l-geotab 8cf75e5c18 feat: encrypt user valve values at rest using Fernet
User valves (per-user API keys/config for tools and functions) were
stored as plaintext JSON in the database. This adds Fernet symmetric
encryption at the model layer so valve data is encrypted at rest.

- Uses WEBUI_SECRET_KEY for encryption (no extra env var needed)
- Add valve_encryption.py with encrypt/decrypt helpers using Fernet
- Wire encrypt/decrypt in tools and functions model get/update methods
- Add migration 019 to encrypt existing plaintext valve data
- Backward compatible: decrypt_user_valves handles legacy plaintext dicts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 10:30:29 -04:00
..
data refac: mv backend files to /open_webui dir 2024-09-04 16:54:48 +02:00
internal feat: encrypt user valve values at rest using Fernet 2026-04-14 10:30:29 -04:00
migrations refac 2026-04-01 18:26:46 -05:00
models feat: encrypt user valve values at rest using Fernet 2026-04-14 10:30:29 -04:00
retrieval refac 2026-04-13 15:03:22 -05:00
routers refac 2026-04-13 14:33:23 -05:00
socket fix: invalidate stale Socket.IO sessions on role change and user deletion (#23642) 2026-04-12 16:19:38 -05:00
static refac 2026-03-23 23:39:52 -05:00
storage refac 2026-04-12 19:08:30 -05:00
test refac 2026-03-17 17:58:01 -05:00
tools chore: format 2026-04-12 22:11:10 -05:00
utils feat: encrypt user valve values at rest using Fernet 2026-04-14 10:30:29 -04:00
__init__.py refac (#22987) 2026-03-24 15:41:26 -05:00
alembic.ini fix: Alembic CLI commands from failing 2025-08-15 04:17:47 -04:00
config.py refac 2026-04-13 13:44:44 -05:00
constants.py refac 2026-04-13 14:08:58 -05:00
env.py chore: format 2026-04-12 18:12:59 -05:00
functions.py refac: async db 2026-04-12 14:22:11 -05:00
main.py refac 2026-04-13 14:29:27 -05:00
tasks.py refac 2026-03-17 17:58:01 -05:00