Gestione segreti, uso di Redis e checklist da verificare prima di andare in produzione.
- SECRET_KEY: almeno 32 caratteri, valore casuale in produzione. In prod non usare mai il default.
- JWT_SECRET_KEY (opzionale): se non impostata viene usata
SECRET_KEY. In produzione è consigliata una chiave dedicata (min 32 caratteri) per la firma JWT. - DATA_ENCRYPTION_SECRET (opzionale): se non impostata viene usata
SECRET_KEY. In produzione è consigliata una chiave dedicata (min 32 caratteri) per la cifratura dei dati sensibili (es. email/telefoni in DB).
In produzione l'avvio fallisce (security checker) se SECRET_KEY è debole o se Redis è richiesto (USE_REDIS=true) ma non raggiungibile.
- Quando è obbligatorio: in produzione con
USE_REDIS=true(blacklist token, rate limiting, idempotenza, quote SMS/WhatsApp). - Variabili:
REDIS_URL, eventualmenteREDIS_PASSWORD(se incluso in URL).USE_REDISabilita l'uso di Redis; in prod deve esseretruee Redis deve essere raggiungibile all'avvio. - Se non c’è Redis: in dev/test è possibile usare il fallback in-memory (DummyRedis); in prod l'avvio viene bloccato dal security checker.
Vedi architettura-e-operazioni.md per il flusso completo.
-
.env.*e file con segreti non committati (in.gitignore). -
SECRET_KEY(e, se usate,JWT_SECRET_KEY,DATA_ENCRYPTION_SECRET) almeno 32 caratteri, non di default. - Database: connessione con SSL; credenziali forti e dedicate per l’ambiente.
-
USE_REDIS=truee Redis raggiungibile;REDIS_URLcorretta. - Credenziali Twilio (e altri servizi) in variabili d’ambiente o secrets manager, mai in codice.
-
CORS_ORIGINSlimitato ai domini fidati. - Eseguito
alembic upgrade headprima di avviare API e scheduler. - Verifica manuale o in CI:
python -m app.core.security_checkerconENV=production(e variabili prod/secrets).
Per un elenco esteso e pratiche consigliate vedi security_checklist.md.
In pipeline di deploy o in un job dedicato:
python -m app.core.security_checkercon ENV=production e le variabili necessarie (o secret inject). Il checker in produzione fallisce con errore se SECRET_KEY debole o Redis non raggiungibile.
- runbook-deploy.md – Ordine di avvio e variabili essenziali
- security_checklist.md – Checklist dettagliata e gestione credenziali
- architettura-e-operazioni.md – Panoramica e Redis