prepare($s);$st->execute($a);} function one(PDO $p,string $s,array $a=[]){$st=$p->prepare($s);$st->execute($a);return $st->fetch(PDO::FETCH_ASSOC);} $NOW='2026-06-20 15:00:00'; $TODAY='2026-06-20'; $NEXT='2027-06-20'; $ORGID=996003; $RSGSI=326; $ITSEC=330; $PRES=103; $m=one($pdo,"SELECT id FROM isms_models WHERE organization_id=?",[$ORGID]); $modelId=(int)$m['id']; /* ---- 1) Documenti agili: inserisci + PUBBLICA + snapshot ---- */ $dir=__DIR__.'/_docs_agile'; $files=glob($dir.'/*.html'); sort($files); $ins=0;$skip=0; foreach($files as $f){ $raw=file_get_contents($f); $nl=strpos($raw,"\n"); $meta=substr($raw,0,$nl); $body=ltrim(substr($raw,$nl+1)); if(!preg_match('/^/',$meta,$mm)){ echo " ! META KO ".basename($f)."\n"; continue; } [$_,$dt,$title,$ver]=$mm; $title=trim($title); $exd=one($pdo,"SELECT id FROM isms_documents WHERE isms_model_id=? AND title=?",[$modelId,$title]); if($exd){ echo " = $title\n"; $skip++; continue; } ex($pdo,"INSERT INTO isms_documents (isms_model_id,organization_id,doc_type,title,status,ai_generated,body_html,version, approved_by,approved_at,reviewed_by,reviewed_at,published_by,published_at,effective_date,next_review_date,created_by,created_at,updated_at) VALUES (?,?,?,?, 'published',1,?, ?, ?,?,?,?,?,?,?,?, ?,?,?)", [$modelId,$ORGID,$dt,$title,$body,$ver, $RSGSI,$NOW,$RSGSI,$NOW,$PRES,$NOW,$TODAY,$NEXT, $RSGSI,$NOW,$NOW]); $did=(int)$pdo->lastInsertId(); ex($pdo,"INSERT INTO isms_document_versions (document_id,isms_model_id,organization_id,version,status,body_html,change_note,created_by,created_at) VALUES (?,?,?,?, 'published', ?, ?, ?, ?)", [$did,$modelId,$ORGID,$ver,$body,'Pubblicazione versione '.$ver.' (modello agile work-from-anywhere)',$PRES,$NOW]); echo " + [$dt] $title\n"; $ins++; } echo "DOCUMENTI agili: +$ins pubblicati (skip $skip)\n"; /* ---- 2) Scope/contesto SGSI: modello agile work-from-anywhere ---- */ $scope="Il SGSI di Nuova Agile Technology srl adotta un approccio AGILE/LEAN coerente con la natura dell'azienda: piccola software house " ."cloud-native con modello di lavoro \"work-from-anywhere\". Ambito: sviluppo, erogazione e manutenzione dei prodotti in licenza " ."(installati presso i clienti) e dei servizi SaaS in cloud, inclusi gli account, i dati dei clienti, i dispositivi aziendali " ."(un portatile e uno smartphone dedicati per collaboratore) e i servizi cloud (Aruba, Hetzner, piattaforme AI). NESSUNA sede fissa " ."ne perimetro fisico aziendale: il lavoro si svolge da qualsiasi luogo. La sicurezza fisica dei data center e gran parte " ."dell'infrastruttura sono ereditate dai fornitori cloud (modello di responsabilita condivisa). Documentazione minima, viva e " ."risk-based; evidenze raccolte in modo automatizzato dalla piattaforma (controlli periodici, audit interni)."; $ctxInt="Micro/piccola impresa (9 dipendenti + 2 collaboratori esterni a P.IVA + Presidente) interamente cloud, senza uffici fissi. " ."Dispositivi aziendali dedicati e cifrati con separazione netta tra strumenti privati e di lavoro; account e posta aziendali " ."sotto controllo della societa. Team tecnico interno; DPO esterno. Approccio SGSI agile: scope stretto, secure-by-default " ."(MFA, cifratura, SSO), documentazione concisa, miglioramento iterativo. Eccezione controllata: key escrow cifrato per le chiavi " ."di accesso ai cloud (recupero a doppia autorizzazione, mai in chiaro sui dispositivi)."; ex($pdo,"UPDATE isms_models SET scope_statement=?, context_internal=?, updated_at=? WHERE id=?",[$scope,$ctxInt,$NOW,$modelId]); echo "SCOPE/contesto SGSI aggiornato (modello agile)\n"; /* ---- 3) Rischi del work-from-anywhere ---- */ $risks=[ ['R-011','Lavoro su reti non fidate (Wi-Fi pubblici, reti domestiche)','Il lavoro da qualsiasi luogo avviene su reti non controllate dall\'azienda: rischio di intercettazione, MITM, accesso non autorizzato. Mitigazione: TLS ovunque, accesso ai servizi solo via canali cifrati/SSO con MFA, niente esposizione di servizi su reti locali.','cyber',3,3,'21.2.d'], ['R-012','Furto o smarrimento del dispositivo fuori sede','I dispositivi aziendali sono usati ovunque (casa, coworking, viaggi): rischio di furto/smarrimento con possibile esposizione di dati. Mitigazione: cifratura integrale del disco, MDM con blocco e cancellazione remota, blocco schermo automatico, niente dati sensibili in chiaro locale.','physical',3,3,'21.2.j'], ['R-013','Perdita di accesso ai servizi cloud per smarrimento delle chiavi','Forte dipendenza dalle chiavi/credenziali di accesso ai cloud: lo smarrimento dell\'unico dispositivo potrebbe causare il blocco dell\'accesso ai servizi. Mitigazione: key escrow CONTROLLATO (copie cifrate in gestore segreti, recupero a doppia autorizzazione, mai in chiaro sul portatile).','operational',2,4,'21.2.c'], ['R-014','Commistione tra strumenti privati e di lavoro / shadow IT','Uso di account o strumenti personali per attivita lavorative, o dati aziendali su dispositivi non gestiti. Mitigazione: dispositivi e account esclusivamente aziendali, separazione netta privato/lavoro, posta/servizi sotto controllo societario, policy d\'uso accettabile.','compliance',2,3,'21.2.i'], ]; $ri=0; foreach($risks as [$rc,$t,$d,$cat,$L,$I,$art]){ if(one($pdo,"SELECT id FROM risks WHERE organization_id=? AND risk_code=?",[$ORGID,$rc])){ continue; } ex($pdo,"INSERT INTO risks (organization_id,risk_code,title,description,category,likelihood,impact,inherent_risk_score,treatment,status,owner_user_id,review_date,nis2_article,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?, 'mitigate','treating', ?, ?, ?, ?, ?)", [$ORGID,$rc,$t,$d,$cat,$L,$I,$L*$I,$ITSEC,'2026-12-20',$art,$NOW,$NOW]); echo " risk + $rc (".($L*$I).")\n"; $ri++; } echo "RISCHI work-from-anywhere: +$ri\n"; echo "\nFASE 7 (modello agile) OK\n";