# 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=""]` (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` |