Files
nis2-agile/docs/mappa-logica/11_isms.md
T
DevEnv nis2-agileandClaude Opus 4.8 4dfab2a391 [FORMAZIONE] Avatar di prodotto — mappa-logica COMPLETA (22 viste) + SELETTORI_DEMO + tassonomia corso + fix kb.js
Deliverable formazione-first (DESIGN_AVATAR_FORMAZIONE / product-demo-complete):
- docs/mappa-logica/01..22_*.md: tutte le viste app V2 mappate (formato canonico standard §2),
  selettori VERIFICATI sul DOM reale, endpoint verificati su api.js/script, gate ruolo dai controller
- docs/mappa-logica/SELETTORI_DEMO.md: registry canonico (22 viste, 131 visualizzazione + 89 azioni)
  + worklist consolidata 132 id stabili da aggiungere (modifiche chirurgiche future)
- docs/formazione/TASSONOMIA_CORSO_NIS2.{md,json}: 10 moduli / 28 lezioni / ~7h45, prerequisiti+durate,
  esame con soglia 80%, sandbox 'prova tu' org 996002
- fix kb.js: ingest scope=ORG ora invia organization_id (prima 422 KB_ORG_REQUIRED) — bug trovato da A2

Prodotto con 4 trittici di agenti (A1 esecutore -> A2 revisore -> A3 controllore avversariale):
A2: ~14 correzioni (cross-ref, gate ruolo, comportamenti); A3 PASS: 38 selettori campionati 0 rotti,
18 endpoint reali, 0 violazioni normative (Allegati 3/4, IS-4, '1 mese', PII.* interna), 9 claim verificati.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 18:50:19 +02:00

8.7 KiB
Raw Blame History

MAPPA-LOGICA · Modello Organizzativo SGSI (ISO 27001)

⟦ INIZIO · U-ISMS · Videata "Modello Organizzativo SGSI (ISO 27001)" ⟧ File: public/isms.html · URL: /isms.html · Scopo: costruzione guidata del Sistema di Gestione della Sicurezza delle Informazioni secondo ISO/IEC 27001:2022 (clausole 4-10) con Statement of Applicability pre-popolato dalla Gap Analysis NIS2 ed estensioni cloud ISO 27017/27018 · Profili: lettura (modello, SoA, ruoli, documenti, readiness, export) per tutti i membri dell'organizzazione; scrittura (salvataggio step, ri-derivazione SoA, aggiunta/cancellazione ruoli, creazione/generazione AI documenti) riservata a org_admin e compliance_manager (super_admin bypassa); l'aggiornamento del singolo controllo SoA (stato/applicabilità/motivazione) è consentito anche ad auditor — gate backend requireOrgRole in IsmsModelController. Disclaimer in pagina: strumento di supporto e pre-audit, non costituisce certificazione ISO 27001.

• U-ISMS.1 — Header pagina + Esporta SGSI Mostra: titolo "Modello Organizzativo SGSI (ISO 27001)"; indicatore di salvataggio live ("Salvato"/"Salvataggio…"/"Salvataggio in sospeso"); bottone "Esporta SGSI". Azioni: click "Esporta SGSI" → ismsExportView() apre una finestra stampabile con: nome organizzazione, data generazione, disclaimer, Ambito, Metodologia di risk assessment, tabella Statement of Applicability (Controllo / Titolo / Applicabile / Stato / %). Dati da: GET /api/isms/export (via api.ismsExport()). Confine: #isms-savehint (riga 58); bottone export senza id, dentro .content-header-actions (riga 59).

• U-ISMS.2 — Intro + disclaimer normativo Mostra: box introduttivo "Costruisci il tuo Sistema di Gestione della Sicurezza delle Informazioni" (procedura guidata ISO/IEC 27001:2022, SoA pre-popolato dalla Gap Analysis NIS2, estensioni cloud 27017/27018); disclaimer ambra: gli obblighi normativi derivano da NIS2 / D.Lgs. 138/2024 / Determinazioni ACN, ISO 27001/27017/27018 sono best practice. Azioni: nessuna (solo informativo). Dati da: statico (HTML). Confine: .isms-intro (riga 67) e .isms-disclaimer (riga 71) — classi, nessun id.

• U-ISMS.3 — Barra step del wizard (6 step) Mostra: 6 card-step cliccabili numerate: 1 Contesto, 2 Leadership, 3 Risk, 4 SoA, 5 Documenti, 6 Monitoraggio. Step attivo evidenziato (classe active), step completati con bordo verde (classe done, calcolata da markDone() in base allo stato del modello). Azioni: click su uno step → goStep(i) mostra il pannello corrispondente e carica i dati lazy (step 2 ruoli, step 4 SoA, step 5 documenti, step 6 readiness). Dati da: GET /api/isms/model (via api.ismsGetModel(), al caricamento pagina) per pre-compilare e marcare gli step done. Confine: #isms-steps (riga 73); singoli step generati via JS con id #step-0 … #step-5 (isms.js riga 39).

• U-ISMS.4 — Step 1: Contesto e Ambito (cl. 4) Mostra: textarea "Ambito del SGSI (scope statement)", "Contesto interno", "Contesto esterno", "Parti interessate (una per riga)", "Confini del SGSI", "Esclusioni motivate"; 3 checkbox estensioni cloud: "Usiamo servizi cloud pubblici → ISO 27017", "Siamo fornitori di servizi cloud → ISO 27017 (lato provider)", "Trattiamo dati personali (PII) in cloud pubblico → ISO 27018". I flag cloud attivano i controlli condizionali nel SoA. Azioni: bottone "Salva e continua" → saveStep1() → salva e passa allo step 2; invalida la cache SoA (i flag cloud cambiano il perimetro dei controlli applicabili). Dati da: POST /api/isms/model (campi: scope_statement, context_internal, context_external, interested_parties[], boundaries, exclusions, uses_public_cloud, is_cloud_provider, processes_pii_in_cloud). Confine: #panel-0 (riga 76); campi #f-scope (79), #f-ctx-int (80), #f-ctx-ext (81), #f-parties (82), #f-boundaries (83), #f-exclusions (84), #f-uses-cloud (87), #f-cloud-provider (88), #f-pii-cloud (89).

• U-ISMS.5 — Step 2: Leadership, ruoli e responsabilità (cl. 5) Mostra: lista dei ruoli SGSI definiti con matrice RACI (badge RACI + nome ruolo + responsabilità); form di inserimento: campo "Ruolo (es. CISO)", campo "Responsabilità", select RACI (R/A/C/I). Azioni: "Aggiungi ruolo" → addRole() → POST; "×" su un ruolo → delRole(id) → DELETE; "Continua" → step 3. Dati da: GET /api/isms/roles (lista); POST /api/isms/roles (role_name, responsibility, raci); DELETE /api/isms/roles/{id}. Confine: #panel-1 (riga 96); #roles-list (100), #r-name (102), #r-resp (103), #r-raci (104).

• U-ISMS.6 — Step 3: Risk, metodologia e obiettivi (cl. 6) Mostra: textarea "Metodologia di risk assessment" (es. ISO 27005 / NIST SP 800-30, scala 5×5 del modulo Rischi) e "Obiettivi del SGSI (uno per riga)"; nota: il registro dei rischi vive nel modulo Rischi (link a risks.html), questo step ne dichiara la metodologia. Azioni: "Salva e continua" → saveStep3() → salva e passa allo step 4 (SoA). Dati da: POST /api/isms/model (campi: risk_methodology, isms_objectives[]). Confine: #panel-2 (riga 112); #f-method (115), #f-objectives (116).

• U-ISMS.7 — Step 4: Statement of Applicability (SoA) Mostra: controlli ISO raggruppati per standard (gruppi collassabili 27001/27017/27018) e per tema (Organizzativi, Persone, Fisici, Tecnologici, Privacy PII); per ogni controllo: codice (es. badge soa-code), titolo IT/EN, badge verde "da NIS2" se pre-popolato dalla Gap Analysis (con tooltip della risposta sorgente), checkbox "Applicabile", 4 stati di attuazione (Da iniziare / In corso / Attuato / Verificato), textarea "Motivazione (inclusione/esclusione)". Riga statistiche: "Applicabili: N · impl. media: X%". Azioni: bottone "Ri-deriva dal NIS2" → deriveSoa() ricalcola il pre-popolamento; click su uno stato → autosave con debounce 600ms (% implementazione: not_started=0, in_progress=50, implemented/verified=100); toggle Applicabile → autosave + ricarica dell'intera SoA dopo 400ms (setSoaApplicable invalida la cache e richiama loadSoa(), i gruppi tornano collassati tranne il primo); modifica motivazione → autosave. Dati da: GET /api/isms/soa (gruppi+controlli+stats); POST /api/isms/soa/derive (ri-derivazione da NIS2); PUT /api/isms/soa (payload per controllo: control_code, applicable | implementation_status+implementation_pct | justification_inclusion/justification_exclusion). Confine: #panel-3 (riga 123); #soa-stats (129), #soa-groups (131); singoli controlli renderizzati via JS come .soa-ctrl[data-code="<control_code>"] (isms.js riga 187).

• U-ISMS.8 — Step 5: Documented Information (cl. 7-8) + generazione AI Mostra: select "Tipo di documento" con 6 tipi: Policy SGSI, Dichiarazione di Applicabilità, Politica controllo accessi, Procedura gestione incidenti, Procedura continuità operativa, Politica sicurezza fornitori; hint di generazione ("Generazione bozza in corso…" / "Bozza creata (revisione obbligatoria)."); lista documenti esistenti con titolo, badge "AI" se generato dall'AI, tipo documento, badge stato (approved=verde, altrimenti warning). Azioni: "Genera bozza con AI" → aiGenDoc() → POST con doc_type; "Continua" → step 6. Dati da: GET /api/isms/documents (lista); POST /api/isms/documents/ai-generate ({doc_type}). Confine: #panel-4 (riga 137); #d-type (142), #btn-aigen (150), #aigen-hint (152), #docs-list (153).

• U-ISMS.9 — Step 6: Monitoraggio e Miglioramento (cl. 9-10) + readiness Mostra: nota che audit interni e non conformità si gestiscono nei moduli esistenti (Audit & Report, NCR/CAPA); percentuale grande di "Completamento del SGSI" (es. "62%"); checklist per clausola (badge clausola + etichetta + ✓ verde se completata, — grigio se no). Azioni: nessuna azione diretta (lettura); la checklist si aggiorna al variare del modello. Dati da: GET /api/isms/readiness (overall_pct + checklist[{clause, label, done}]). Confine: #panel-5 (riga 159); #readiness-pct (165), #readiness-checklist (167).

⟦ FINE · U-ISMS ⟧

ID STABILI MANCANTI (da aggiungere)

Elemento Riga Id proposto
Bottone "Esporta SGSI" nell'header 59 nis2-isms-btn-export
Bottone "Salva e continua" Step 1 91 nis2-isms-btn-save-step1
Bottone "Aggiungi ruolo" Step 2 105 nis2-isms-btn-add-role
Bottone "Continua" Step 2 107 nis2-isms-btn-next-step2
Bottone "Salva e continua" Step 3 118 nis2-isms-btn-save-step3
Bottone "Ri-deriva dal NIS2" Step 4 128 nis2-isms-btn-derive-soa
Bottone "Continua" Step 4 132 nis2-isms-btn-next-step4
Bottone "Continua" Step 5 154 nis2-isms-btn-next-step5
Box intro 67 nis2-isms-intro
Box disclaimer 71 nis2-isms-disclaimer