Skip to content

Configurazione

Tutta la configurazione è gestita tramite variabili d'ambiente definite in .env. Copia .env.example in .env e adatta i valori al tuo ambiente.

Database

VariabileDefaultDescrizione
DATABASE_URLpostgresql+asyncpg://nis2:nis2secret@postgres:5432/nis2Stringa di connessione asincrona al database (usata da FastAPI)
DATABASE_URL_SYNCpostgresql://nis2:nis2secret@postgres:5432/nis2Stringa di connessione sincrona (usata dalle migrazioni Alembic)
POSTGRES_USERnis2Utente PostgreSQL
POSTGRES_PASSWORDnis2secretPassword PostgreSQL
POSTGRES_DBnis2Nome del database PostgreSQL

Redis

VariabileDefaultDescrizione
REDIS_URLredis://redis:6379/0Connessione Redis per caching e sessioni

Autenticazione (JWT)

VariabileDefaultDescrizione
JWT_SECRET(cambiare in produzione)Chiave segreta per firmare i token JWT. Generare con openssl rand -hex 32
JWT_ALGORITHMHS256Algoritmo di firma JWT
ACCESS_TOKEN_EXPIRE_MINUTES30Durata del token di accesso in minuti
REFRESH_TOKEN_EXPIRE_DAYS7Durata del token di aggiornamento in giorni

Ripristino Password (B05)

Il flusso per dimenticare/ripristinare la password richiede un URL pubblico da inserire nel link via email e un relay SMTP (o la dev outbox) per la consegna. In make dev e nella suite e2e, lasciare SMTP_HOST vuoto attiva la dev outbox in memoria — l'email viene loggata a livello INFO e catturata per GET /api/v1/auth/debug/last-email (montata solo quando ENVIRONMENT != "production"). La produzione con SMTP_HOST vuoto si rifiuta di consegnare l'email: la rotta converte l'errore RuntimeError in un errore 5xx piuttosto che ignorare silenziosamente l'invio.

VariabileDefaultDescrizione
PUBLIC_URLhttp://localhost:8077URL di base a cui punta il link di ripristino. L'utente clicca su ${PUBLIC_URL}/reset-password?token=…
RESET_TOKEN_TTL_MINUTES30Durata del token di ripristino. I token sono monouso; una volta consumati (quando used_at non è null) vengono rifiutati anche se non sono ancora scaduti
SMTP_HOST`` (dev outbox)Hostname del relay SMTP. Lasciare vuoto in dev / e2e — l'email viene catturata in-process
SMTP_PORT587Porta del relay SMTP
SMTP_USER``Username di autenticazione SMTP (omettere se il relay non richiede l'auth)
SMTP_PASSWORD``Password di autenticazione SMTP
SMTP_FROMnoreply@nis2.localHeader From: sulle email in uscita
SMTP_STARTTLStrueInvia STARTTLS dopo l'EHLO (caso comune per le porte 25 / 587)
SMTP_SSLfalseAvvolge l'intera connessione in TLS (stile porta 465). Mutualmente esclusivo con SMTP_STARTTLS

Report

I report generati (PDF / HTML / Markdown / JSON / CSV / JUnit XML) vengono salvati in /tmp/nis2-reports/ sul worker Celery, e sono condivisi con il container API tramite il volume Docker denominato reports-data. Un task Celery beat giornaliero (cleanup-old-reports) pulisce questa directory dai file più vecchi del TTL impostato — senza questo meccanismo, il disco si riempirebbe in modo incontrollato man mano che gli utenti generano report.

VariabileDefaultDescrizione
REPORT_TTL_DAYS30Giorni di conservazione per i file di report prima che il task di pulizia giornaliera li elimini. Un tempo sufficiente per permettere a un team di compliance di scaricare il report della settimana precedente dopo le ferie, ma abbastanza breve da evitare che un'installazione con centinaia di scansioni al giorno riempia il disco in poche settimane. Il task di pulizia viene eseguito indipendentemente da questo valore, che si limita a stabilire l'età limite dei file da cancellare.

Celery

VariabileDefaultDescrizione
CELERY_BROKER_URLredis://redis:6379/1Message broker per Celery
CELERY_RESULT_BACKENDredis://redis:6379/2Backend per i risultati di Celery

Frontend (Next.js)

VariabileDefaultDescrizione
NEXTAUTH_URLhttp://localhost:8077URL di base per NextAuth
NEXTAUTH_SECRET(cambiare in produzione)Segreto per la crittografia di NextAuth
API_URLhttp://localhost:8000URL dell'API interna (lato server)
NEXT_PUBLIC_API_URLhttp://localhost:8000URL pubblico dell'API (lato client)

Produzione (Caddy)

VariabileDefaultDescrizione
DOMAINnis2.tuodominio.comDominio per la configurazione automatica di HTTPS con Caddy. Da impostare nei deployment in produzione

Default dello Scanner

Il comportamento dello scanner viene configurato per ogni scansione tramite l'API al momento della creazione della scansione o della pianificazione. Le impostazioni a livello di organizzazione stabiliscono i default ereditati dalle nuove scansioni. I principali parametri nell'endpoint di creazione della scansione includono:

  • Timeout: 10 secondi per controllo (scan_timeout)
  • Concorrenza: 20 task paralleli (concurrency)
  • Host massimi: 0 (illimitato) -- limite configurabile per i target di ogni scansione (max_hosts)
  • Funzionalità: Le singole categorie di controlli (dns_checks, web_checks, port_scan, whois_checks) possono essere attivate/disattivate per ogni scansione. Le impostazioni dell'organizzazione salvano i default che ogni nuova scansione andrà ad ereditare.

Impostazioni dell'Organizzazione

Le impostazioni a livello organizzativo sono gestite dalla dashboard nella sezione Impostazioni:

  • Nome dell'organizzazione e metadati
  • Configurazione di default delle scansioni (funzionalità, concorrenza, timeout)
  • Gestione dei membri del team (inviti, assegnazione ruoli)
  • Gestione chiavi API
  • Preferenze per i canali di notifica