From be29895446e25b73848517dd1ee19ab974797905 Mon Sep 17 00:00:00 2001 From: DevEnv nis2-agile Date: Sat, 13 Jun 2026 08:51:17 +0200 Subject: [PATCH] [FORMAZIONE] Banca esercizi/quiz (punto 8): 32 domande + 9 esercizi sandbox, 10 moduli Ancorata a tassonomia + mappe-logiche, risposte fondate su FONTI CERTE (Allegati 3/4, IS-4 solo essenziali, ciclo 24h/72h/1mese, SoA 111 controlli, soglia rilevanza asset 40, ecc.). Formato per motore quiz (esame soglia 80%). Esercizi pratici eseguibili nella sandbox org 996002. Co-Authored-By: Claude Opus 4.8 --- docs/formazione/BANCA_ESERCIZI_NIS2.json | 299 +++++++++++++++++++++++ 1 file changed, 299 insertions(+) create mode 100644 docs/formazione/BANCA_ESERCIZI_NIS2.json diff --git a/docs/formazione/BANCA_ESERCIZI_NIS2.json b/docs/formazione/BANCA_ESERCIZI_NIS2.json new file mode 100644 index 0000000..c98d564 --- /dev/null +++ b/docs/formazione/BANCA_ESERCIZI_NIS2.json @@ -0,0 +1,299 @@ +{ + "bank_id": "formazione:nis2-agile:esercizi", + "course_id": "formazione:nis2-agile", + "version": "1.0", + "language": "it", + "exam": { "passing_score": 80, "shuffle": true, "questions_per_attempt": 25 }, + "answer_scale": { "single_choice": 1, "multi_choice": 1, "practical_sandbox": 1 }, + "_note": "Risposte normative ancorate alle fonti certe (application/config/nis2_sources.php). Esercizi pratici eseguibili nella sandbox org 996002.", + "modules": [ + { + "module_id": "M1", + "questions": [ + { "id": "M1-Q1", "type": "single_choice", "topic": "soggetti", + "text": "Nel regime NIS2, qual è la differenza principale tra soggetti 'essenziali' e 'importanti'?", + "options": ["Solo gli essenziali devono adottare misure di sicurezza", "Cambiano l'intensità della vigilanza e il regime sanzionatorio/obblighi, non l'esistenza degli obblighi di base", "Gli importanti non devono notificare gli incidenti", "È una distinzione solo dimensionale senza effetti pratici"], + "correct": 1, + "rationale": "Entrambe le categorie sono soggette agli obblighi (Art.21 misure, Art.23 notifiche); differiscono per intensità di vigilanza, sanzioni e alcuni obblighi specifici.", + "source": "Dir. (UE) 2022/2555 + D.Lgs. 138/2024" }, + { "id": "M1-Q2", "type": "single_choice", "topic": "allegati-incidenti", + "text": "Nella tassonomia incidenti della Determina ACN 164179/2025, a quali soggetti si riferiscono l'Allegato 3 e l'Allegato 4?", + "options": ["Allegato 3 = essenziali, Allegato 4 = importanti", "Allegato 3 = importanti, Allegato 4 = essenziali", "Entrambi solo agli essenziali", "Sono allegati sulle misure, non sugli incidenti"], + "correct": 1, + "rationale": "Errore ricorrente di inversione: Allegato 3 = soggetti IMPORTANTI, Allegato 4 = soggetti ESSENZIALI.", + "source": "Determina ACN 164179/2025, Allegati 3 e 4" }, + { "id": "M1-Q3", "type": "single_choice", "topic": "normativa-italiana", + "text": "Qual è il decreto italiano che recepisce la direttiva NIS2?", + "options": ["D.Lgs. 231/2001", "D.Lgs. 138/2024", "Regolamento (UE) 2024/1689", "D.Lgs. 101/2018"], + "correct": 1, + "rationale": "Il D.Lgs. 138/2024 recepisce la Dir. (UE) 2022/2555 (NIS2) in Italia.", + "source": "D.Lgs. 138/2024" }, + { "id": "M1-Q4", "type": "single_choice", "topic": "onboarding", + "text": "Durante l'onboarding, come può essere precompilata l'anagrafica aziendale?", + "options": ["Solo manualmente", "Da visura camerale (estrazione AI) o fetch CertiSource, oltre all'inserimento manuale", "Solo via API esterna a pagamento", "Non è prevista precompilazione"], + "correct": 1, + "rationale": "Il wizard supporta visura (estrazione AI), fetch dati azienda e inserimento manuale.", + "source": "mappa:18_onboarding" }, + { "id": "M1-Q5", "type": "multi_choice", "topic": "ruoli", + "text": "Quali tra questi sono ruoli previsti nella piattaforma? (seleziona tutti)", + "options": ["org_admin", "compliance_manager", "auditor", "employee", "consultant", "super_admin"], + "correct": [0,1,2,3,4,5], + "rationale": "Tutti elencati sono ruoli reali del modello multi-tenant.", + "source": "CLAUDE.md / BaseController" } + ], + "exercises": [ + { "id": "M1-E1", "type": "practical_sandbox", "view": "settings", + "text": "In Impostazioni, individua la classificazione NIS2 dell'organizzazione sandbox e indica se è soggetto essenziale o importante.", + "success_criteria": "L'utente legge correttamente entity_type dalla scheda organizzazione." } + ] + }, + { + "module_id": "M2", + "questions": [ + { "id": "M2-Q1", "type": "single_choice", "topic": "dashboard-score", + "text": "Cosa rappresenta il gauge principale della dashboard?", + "options": ["La percentuale di utenti attivi", "L'avanzamento di implementazione delle misure Art.21 NIS2 (compliance score 0-100)", "Il numero di incidenti chiusi", "Il fatturato dell'azienda"], + "correct": 1, + "rationale": "Il compliance score (0-100) misura l'avanzamento implementazione misure Art.21; deriva dall'ultimo assessment completato.", + "source": "mappa:01_dashboard" }, + { "id": "M2-Q2", "type": "single_choice", "topic": "dashboard-deadline", + "text": "La sezione 'Scadenze imminenti' della dashboard a cosa serve?", + "options": ["A mostrare le fatture", "Ad aggregare le scadenze di compliance (assessment, incidenti, formazione, ecc.) ordinate, overdue per prime", "A pianificare le ferie", "Solo alle scadenze fiscali"], + "correct": 1, + "rationale": "Aggrega scadenze da più sorgenti, mostrando per prime quelle scadute.", + "source": "mappa:01_dashboard" }, + { "id": "M2-Q3", "type": "single_choice", "topic": "governance", + "text": "Chi può invitare nuovi membri nell'organizzazione?", + "options": ["Qualsiasi employee", "I ruoli org_admin (e super_admin); la gestione membri è in Impostazioni", "Solo il consulente esterno", "Nessuno, sono creati automaticamente"], + "correct": 1, + "rationale": "La gestione membri/inviti è riservata ai ruoli amministrativi dell'organizzazione.", + "source": "mappa:16_settings" } + ], + "exercises": [ + { "id": "M2-E1", "type": "practical_sandbox", "view": "dashboard", + "text": "Leggi il compliance score della dashboard sandbox e individua la categoria Art.21 con punteggio più basso nella heatmap.", + "success_criteria": "Individua score complessivo e categoria peggiore." } + ] + }, + { + "module_id": "M3", + "questions": [ + { "id": "M3-Q1", "type": "single_choice", "topic": "assessment", + "text": "Su quante domande e categorie è strutturato l'assessment NIS2 di base?", + "options": ["20 domande, 3 categorie", "80 domande su 10 categorie delle misure Art.21", "100 domande senza categorie", "1 domanda per controllo ISO"], + "correct": 1, + "rationale": "L'assessment ha 80 domande su 10 categorie corrispondenti alle misure dell'Art.21.", + "source": "mappa:02_assessment / nis2_questionnaire.json" }, + { "id": "M3-Q2", "type": "single_choice", "topic": "assessment-scoring", + "text": "Come viene calcolato il punteggio complessivo dell'assessment?", + "options": ["Conteggio semplice delle risposte 'sì'", "Media pesata dei punteggi per risposta (implemented/partial/not_implemented/not_applicable) normalizzata 0-100", "Numero di domande totali", "Sempre 100 se completato"], + "correct": 1, + "rationale": "Lo score è la media pesata dei valori di risposta, normalizzata su 0-100.", + "source": "AssessmentController::calculateScores" }, + { "id": "M3-Q3", "type": "single_choice", "topic": "acn-gap", + "text": "La Gap Analysis ACN di 2° livello (Det. 164179/2025) copre quanti requisiti per i soggetti importanti e per gli essenziali?", + "options": ["10 e 20", "37 misure/87 requisiti (importanti) e 43 misure/116 requisiti (essenziali)", "100 per entrambi", "Solo per gli essenziali"], + "correct": 1, + "rationale": "Importanti: 37 misure / 87 requisiti; essenziali: 43 misure / 116 requisiti.", + "source": "Determina ACN 164179/2025 / acn_measures.json" } + ], + "exercises": [ + { "id": "M3-E1", "type": "practical_sandbox", "view": "assessment", + "text": "Apri l'assessment completato della sandbox e individua una categoria con maturità parziale; indica una raccomandazione AI associata.", + "success_criteria": "Legge categoria + raccomandazione dal report." } + ] + }, + { + "module_id": "M4", + "questions": [ + { "id": "M4-Q1", "type": "single_choice", "topic": "matrice-rischio", + "text": "La matrice di rischio della piattaforma usa quale scala?", + "options": ["3x3", "5x5 con likelihood e impact secondo scala ISO 27005", "10x10", "Binaria sì/no"], + "correct": 1, + "rationale": "Matrice 5x5; likelihood e impact seguono la scala ISO 27005; lo score inerente = likelihood × impact.", + "source": "mappa:04_risks" }, + { "id": "M4-Q2", "type": "single_choice", "topic": "trattamento", + "text": "Cosa rappresenta un 'trattamento' del rischio?", + "options": ["La cancellazione del rischio", "Il piano di mitigazione con responsabile, scadenza e stato (planned/in_progress/completed)", "Un report PDF", "Il punteggio di likelihood"], + "correct": 1, + "rationale": "Il trattamento è il piano di mitigazione associato al rischio, con owner, due date e stato.", + "source": "mappa:04_risks / risk_treatments" }, + { "id": "M4-Q3", "type": "single_choice", "topic": "risk-level", + "text": "Come è classificato come 'critico' un rischio in base allo score inerente?", + "options": ["score >= 4", "score >= 16 (criticità decrescente: >=16 critico, >=9 alto, >=4 medio, altrimenti basso)", "Qualsiasi score", "Solo se manuale"], + "correct": 1, + "rationale": "Soglie: >=16 critico, >=9 alto, >=4 medio, altrimenti basso (calcolato da inherent_risk_score).", + "source": "MEMORY / risks logic" } + ], + "exercises": [ + { "id": "M4-E1", "type": "practical_sandbox", "view": "risks", + "text": "Nella sandbox, crea un nuovo rischio con likelihood e impact tali da ottenere uno score inerente >= 12, poi aggiungi un trattamento con responsabile e scadenza.", + "success_criteria": "Rischio creato con score>=12 + 1 trattamento con owner e due_date." } + ] + }, + { + "module_id": "M5", + "questions": [ + { "id": "M5-Q1", "type": "single_choice", "topic": "art23-tempi", + "text": "Quali sono le scadenze del ciclo di notifica Art.23 per un incidente significativo?", + "options": ["12h / 48h / 7 giorni", "Preallarme 24h, notifica completa 72h, relazione finale entro 1 mese dalla notifica 72h", "24h / 72h / 30 giorni dal rilevamento", "Solo notifica entro 72h"], + "correct": 1, + "rationale": "Preallarme 24h, notifica 72h, relazione finale entro 1 MESE dalla notifica 72h (NON '30 giorni dal rilevamento').", + "source": "Art.23 Dir. 2022/2555 / mappa:05_incidents" }, + { "id": "M5-Q2", "type": "single_choice", "topic": "significativita", + "text": "Quale di questi NON è tra i criteri di significatività di un incidente proposti nello strumento?", + "options": ["Utenti coinvolti >= 500", "Durata > 4 ore", "Impatto economico > 100.000 €", "Il colore del logo aziendale"], + "correct": 3, + "rationale": "I 5 criteri: utenti>=500, durata>4h, impatto transfrontaliero, attacco cyber/data breach, perdita>100k€.", + "source": "mappa:05_incidents (decision tree Art.23)" }, + { "id": "M5-Q3", "type": "single_choice", "topic": "tassonomia-IS", + "text": "Riguardo alla tassonomia IS-1..IS-4, quale affermazione è corretta?", + "options": ["IS-4 (incidenti ricorrenti) si applica anche ai soggetti importanti", "IS-4 NON si applica ai soggetti importanti (solo essenziali)", "Esiste solo IS-1", "Le sigle indicano la gravità da 1 a 4"], + "correct": 1, + "rationale": "IS-4 (ricorrenti) non si applica agli importanti; i tipi validi per gli importanti sono IS-1..IS-3.", + "source": "Determina ACN 164179/2025 / IncidentController" }, + { "id": "M5-Q4", "type": "single_choice", "topic": "pir", + "text": "Cosa sono le metriche TTD/TTC/TTR nel post-incident?", + "options": ["Tasse trimestrali", "Time-to-Detect / Time-to-Contain / Time-to-Recover, usate nella Post-Incident Review", "Codici di errore HTTP", "Tre tipi di backup"], + "correct": 1, + "rationale": "TTD/TTC/TTR misurano rilevazione, contenimento e ripristino; usate nel PIR (5-whys).", + "source": "mappa:05_incidents / incident_pir" } + ], + "exercises": [ + { "id": "M5-E1", "type": "practical_sandbox", "view": "incidents", + "text": "Registra nella sandbox un incidente, marcalo come significativo verificando i criteri, e simula l'invio del preallarme 24h.", + "success_criteria": "Incidente significativo creato + preallarme registrato; scadenze 24h/72h/1mese popolate." } + ] + }, + { + "module_id": "M6", + "questions": [ + { "id": "M6-Q1", "type": "single_choice", "topic": "policy-ai", + "text": "Cosa è importante ricordare su una policy generata con l'AI?", + "options": ["È approvata automaticamente", "È una bozza che richiede revisione e approvazione umana (banner di avviso)", "Non può essere modificata", "Sostituisce l'assessment"], + "correct": 1, + "rationale": "Le bozze AI mostrano un banner di avvertenza e devono passare il flusso di revisione/approvazione.", + "source": "mappa:06_policies" }, + { "id": "M6-Q2", "type": "single_choice", "topic": "isms-wizard", + "text": "Il wizard del Modello Organizzativo SGSI (ISO 27001) è strutturato in quanti step?", + "options": ["3", "6 step", "10", "Non è un wizard"], + "correct": 1, + "rationale": "Il wizard SGSI ha 6 step; pre-popola parte dei dati dalle informazioni NIS2.", + "source": "mappa:11_isms" }, + { "id": "M6-Q3", "type": "single_choice", "topic": "soa", + "text": "Quanti controlli compongono la SoA e come sono composti?", + "options": ["93 solo ISO 27001", "111 controlli: 93 di ISO/IEC 27001:2022 + 7 CLD.* (27017 cloud) + 11 PII.* (27018)", "100 generici", "Solo i controlli cloud"], + "correct": 1, + "rationale": "SoA = 111 controlli: 93 (27001:2022) + 7 CLD.* (27017) + 11 PII.* (codifica interna ispirata a 27018).", + "source": "mappa:11_isms / migrazione 038" } + ], + "exercises": [ + { "id": "M6-E1", "type": "practical_sandbox", "view": "isms", + "text": "Nella SoA della sandbox, marca un controllo come non applicabile fornendo una giustificazione, e verifica l'aggiornamento della readiness.", + "success_criteria": "Controllo SoA aggiornato con giustificazione + readiness ricalcolata." } + ] + }, + { + "module_id": "M7", + "questions": [ + { "id": "M7-Q1", "type": "single_choice", "topic": "fornitori-assessment", + "text": "L'assessment di sicurezza fornitori si basa su:", + "options": ["Una sola domanda sì/no", "10 domande pesate con esito 0/50/100 e media pesata; soglia di conformità a 70", "Il fatturato del fornitore", "Nessuna valutazione"], + "correct": 1, + "rationale": "10 domande pesate (sì=100/parziale=50/no=0), media pesata; conforme se >= 70.", + "source": "mappa:07_supply-chain / SupplyChainController" }, + { "id": "M7-Q2", "type": "single_choice", "topic": "asset-relevance", + "text": "Lo scoring di rilevanza NIS2 di un asset (GV.OC-04):", + "options": ["È casuale", "Valuta 6 criteri producendo un punteggio 0-100; sopra la soglia 40 l'asset è 'rilevante NIS2'", "Dipende solo dal prezzo", "Esiste solo per il software"], + "correct": 1, + "rationale": "6 criteri → 0-100; soglia 40 = rilevante; classi critico/alto/medio per fasce 80/60/40.", + "source": "mappa:08_assets / AssetScoringService" }, + { "id": "M7-Q3", "type": "single_choice", "topic": "asset-classi", + "text": "Un asset con relevance_score 92 a quale classe appartiene?", + "options": ["basso", "critico", "trascurabile", "non rilevante"], + "correct": 1, + "rationale": "Fasce: >=80 critico, >=60 alto, >=40 medio; 92 → critico.", + "source": "mappa:08_assets" } + ], + "exercises": [ + { "id": "M7-E1", "type": "practical_sandbox", "view": "assets", + "text": "Crea un asset nella sandbox e compila i 6 criteri di rilevanza in modo da ottenere classe 'critico'; verifica il flag 'Rilevante NIS2'.", + "success_criteria": "Asset con relevance_score >= 80 e is_nis2_relevant = 1." } + ] + }, + { + "module_id": "M8", + "questions": [ + { "id": "M8-Q1", "type": "single_choice", "topic": "formazione-art20", + "text": "La formazione del personale nella piattaforma è collegata a quale obbligo NIS2?", + "options": ["Nessuno", "All'obbligo di formazione/consapevolezza degli organi di gestione e del personale (Art.20)", "Solo a ISO 9001", "Alla fatturazione elettronica"], + "correct": 1, + "rationale": "Il modulo Formazione supporta l'obbligo Art.20 (consapevolezza/formazione).", + "source": "mappa:09_training" }, + { "id": "M8-Q2", "type": "single_choice", "topic": "whistleblowing", + "text": "Una segnalazione whistleblowing nella piattaforma:", + "options": ["Richiede sempre login", "Può essere anonima e tracciabile via token; la gestione è riservata a org_admin/compliance_manager", "È pubblica", "Viene inviata via email a tutti"], + "correct": 1, + "rationale": "Submit senza auth (supporta anonimato) + track via token; lista/gestione gate-ate ai ruoli amministrativi.", + "source": "mappa:13_whistleblowing" }, + { "id": "M8-Q3", "type": "single_choice", "topic": "kb-scope", + "text": "La Knowledge Base AI ha visibilità multi-livello. Quali sono gli scope?", + "options": ["Solo pubblico", "SYSTEM (vendor, tutti), FIRM (studio di consulenza), ORG (singola organizzazione)", "Solo ORG", "Privato per utente"], + "correct": 1, + "rationale": "Tre livelli: SYSTEM, FIRM, ORG, con regole di visibilità in VectorService::buildAuthzFilter.", + "source": "mappa:14_kb / KB multi-livello" } + ], + "exercises": [ + { "id": "M8-E1", "type": "practical_sandbox", "view": "training", + "text": "Assegna un corso obbligatorio a un membro della sandbox e porta un'assegnazione allo stato 'completato'.", + "success_criteria": "1 assegnazione in stato completed con quiz_score." } + ] + }, + { + "module_id": "M9", + "questions": [ + { "id": "M9-Q1", "type": "single_choice", "topic": "report-cda", + "text": "Il report esecutivo è destinato principalmente a:", + "options": ["I clienti finali", "Gli organi di gestione/CdA (supporto all'obbligo di supervisione Art.20)", "I fornitori", "Il pubblico"], + "correct": 1, + "rationale": "Report esecutivo per il CdA, a supporto della responsabilità degli organi di gestione (Art.20).", + "source": "mappa:10_reports" }, + { "id": "M9-Q2", "type": "single_choice", "topic": "audit-chain", + "text": "Cosa garantisce l'audit log con hash-chain?", + "options": ["La velocità del sistema", "L'integrità e non-manomissibilità della sequenza di eventi (ogni record concatenato al precedente via SHA-256)", "Il backup automatico", "La traduzione"], + "correct": 1, + "rationale": "Hash-chain SHA-256: ogni entry include prev_hash → integrità verificabile, rileva manomissioni.", + "source": "mappa:10_reports / AuditService" }, + { "id": "M9-Q3", "type": "single_choice", "topic": "aria-fonti-certe", + "text": "Qual è un principio chiave dell'assistente AI ARIA quando cita norme?", + "options": ["Può inventare riferimenti se utili", "Deve citare solo fonti certe del registro; è vietato inventare riferimenti normativi", "Non cita mai le fonti", "Cita solo Wikipedia"], + "correct": 1, + "rationale": "Principio 'fonti certe': ogni affermazione normativa cita nis2_sources.php; riferimenti inventati vietati.", + "source": "AIService::authoritativeSourcesBlock / nis2_sources.php" } + ], + "exercises": [ + { "id": "M9-E1", "type": "practical_sandbox", "view": "reports", + "text": "Nella sandbox, apri il tab Audit Log e individua un evento, poi consulta il tab ISO 27001 per il mapping di un controllo.", + "success_criteria": "Legge un evento audit + un mapping ISO." } + ] + }, + { + "module_id": "M10", + "questions": [ + { "id": "M10-Q1", "type": "single_choice", "topic": "consulente", + "text": "Nella vista consulente (Le Mie Aziende), cosa permette il pulsante 'Gestisci' su una azienda?", + "options": ["Eliminarla", "Selezionare l'organizzazione come attiva e passare alla sua dashboard", "Inviare una fattura", "Cambiare la lingua"], + "correct": 1, + "rationale": "'Gestisci' imposta l'org attiva (switch) e porta alla dashboard del cliente.", + "source": "mappa:17_companies" }, + { "id": "M10-Q2", "type": "single_choice", "topic": "admin", + "text": "Nell'area amministrazione piattaforma, l'azione 'impersonate' è disponibile per:", + "options": ["Qualsiasi utente verso chiunque", "Il super_admin verso utenti non-super_admin attivi (per supporto)", "Gli employee", "Nessuno"], + "correct": 1, + "rationale": "Impersonate riservato al super_admin verso utenti non-super_admin attivi.", + "source": "mappa:22_admin-users" } + ], + "exercises": [] + } + ] +}