From 93b21eeb432551dae29874495c296953b8d1355c Mon Sep 17 00:00:00 2001 From: DevEnv nis2-agile Date: Tue, 16 Jun 2026 23:37:40 +0200 Subject: [PATCH] =?UTF-8?q?[DOCS]=20OUTGOING=E2=86=92AgileHub/VIGILE:=20ri?= =?UTF-8?q?chiesta=20enforce=20TLS=20REQUIRE=20SSL=20su=20nis2=5Fuser=20(p?= =?UTF-8?q?re-equip=20PHP-CA=20fatto,=20de-rischiato)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- ...ILEHUB_2026_06_16_tls_enforce_nis2_user.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 docs/OUTGOING_TO_AGILEHUB_2026_06_16_tls_enforce_nis2_user.md diff --git a/docs/OUTGOING_TO_AGILEHUB_2026_06_16_tls_enforce_nis2_user.md b/docs/OUTGOING_TO_AGILEHUB_2026_06_16_tls_enforce_nis2_user.md new file mode 100644 index 0000000..b5ff4dd --- /dev/null +++ b/docs/OUTGOING_TO_AGILEHUB_2026_06_16_tls_enforce_nis2_user.md @@ -0,0 +1,32 @@ +# NIS2 → AgileHub/VIGILE — Richiesta: enforce TLS `REQUIRE SSL` su `nis2_user` + +> **Da**: NIS2 (product-side) · **A**: VIGILE / AgileHub (infra DB/TLS) · **Data**: 2026-06-16 +> **Tema**: migrazione TLS-in-transito DB per-utente (std `ANALISI_TLS_DB_STRUTTURALE_E_CENSIMENTO_2026_06_10`). +> **Tipo**: richiesta di coordinamento (azione DB di vostra competenza). **Asincrona** — nessuna urgenza bloccante. + +## TL;DR +La **parte di competenza del prodotto è COMPLETA**: l'app NIS2 si connette al DB **già in TLS 1.3** con CA file (pre-equip PHP-CA fatto). Manca solo l'**enforce server-side** su `nis2_user`, che CLAUDE.md indica come azione **coordinata con VIGILE**. Richiediamo di eseguirlo nella vostra finestra. + +## Azione richiesta (lato DB `nis2-db`) +```sql +ALTER USER 'nis2_user'@'%' REQUIRE SSL; +FLUSH PRIVILEGES; +``` +- Rollback immediato se necessario: `ALTER USER 'nis2_user'@'%' REQUIRE NONE;` + +## Perché è SICURO (de-rischiato lato prodotto) +Verificato il 2026-06-16 dal worker reale: +- L'app si connette con **`cipher=TLS_AES_256_GCM_SHA384`** (TLS 1.3) — sia host php-fpm (prod) sia container. +- PDO configurato con **`PDO::MYSQL_ATTR_SSL_CA`** (`application/config/db-ca.pem`) + `MYSQL_ATTR_SSL_VERIFY_SERVER_CERT=false` (CA host self-signed → canale cifrato, no verifica hostname). Guard anti-outage: il TLS si applica solo a connessioni TCP (`DB_HOST=172.21.0.4`), non a socket. +- `SHOW GRANTS FOR CURRENT_USER()` su `nis2_user@%` → **NON** presenta ancora `REQUIRE SSL` (solo TLS client-side). Quindi l'enforce è l'unico passo mancante e **non impatta l'app** (già conforme). + +## ⚠️ Da verificare lato vostro PRIMA dell'enforce +`nis2_user` è `@'%'` (qualsiasi host). Prima di `REQUIRE SSL` accertarsi che **NON esistano altri consumer** che si connettono come `nis2_user` **senza** TLS (cron/backup/tool esterni): andrebbero in errore. Lato prodotto risultano TLS sia il front (host php-fpm) sia i CLI nel container `nis2-app` (stessa `database.php`). Se ci sono altri client a vostra conoscenza, equipaggiarli col CA prima. + +## Contesto / riferimenti +- CLAUDE.md (testata): *"QUESTO PRODOTTO — stato/azione: DA FARE (pre-equip PHP-CA): nis2_user. Coordinare con VIGILE per enforce; il CA file è obbligatorio (non basta un flag)."* → **pre-equip ora FATTO**. +- Topologia DB: container `nis2-db` via TCP+TLS, `DB_HOST=172.21.0.4` (cutover 2026-06-11). 19 utenti già migrati con REQUIRE SSL; `nis2_user` è tra i residui. +- Canale: i MS AgileHub (4213/4211) non sono raggiungibili dal devenv NIS2 (000) → uso il canale doc `OUTGOING_TO_AGILEHUB` (come da pattern bidirezionale esistente). + +## Conferma di ritorno gradita +Una riga in un `INCOMING_FROM_AGILEHUB_*` (o al boot del prossimo prompt NIS2) quando l'enforce è applicato, così aggiorniamo lo stato in CLAUDE.md / memoria da "DA FARE" a "DONE".