Ecco un elenco di attività da implementare per garantire la sicurezza dei dati personali nella tua applicazione, basato sul Codice di Condotta Assosoftware:
1. Progettazione e sviluppo sicuro (Privacy by Design e by Default)
- Valutazione dei rischi: Analizzare i rischi associati ai trattamenti dei dati personali.
- Misure di protezione: Implementare funzionalità che garantiscano la protezione dei dati personali fin dalla progettazione del software.
- Documentazione delle misure adottate: Comunicare chiaramente ai clienti le caratteristiche di sicurezza dell’applicazione.
2. Sicurezza dei dati e protezione contro minacce
- Crittografia: Proteggere i dati sensibili con tecniche di crittografia in transito e a riposo.
- Autenticazione e autorizzazione: Implementare autenticazione a più fattori (MFA) e ruoli con accesso limitato.
- Monitoraggio e logging: Registrare gli accessi e le operazioni sensibili per prevenire accessi non autorizzati.
3. Accordo sul trattamento dei dati personali
- Stipula di un accordo con i clienti: Definire contrattualmente le responsabilità di trattamento dei dati personali.
- Trasparenza sulle misure di sicurezza: Fornire ai clienti documentazione chiara sulle garanzie offerte.
4. Gestione degli incidenti di sicurezza
- Definizione di una procedura documentata per la gestione degli incidenti (es. Data Breach).
- Notifica tempestiva al cliente entro 48 ore in caso di violazione dei dati.
- Piano di mitigazione: Adottare misure immediate per contenere eventuali danni.
5. Analisi dei rischi e valutazione d’impatto
- Cooperazione con i clienti per fornire informazioni sulle caratteristiche di sicurezza del software.
- Adozione di standard internazionali (es. ISO) per garantire un livello adeguato di protezione.
6. Gestione degli accessi e formazione del personale
- Limitazione degli accessi ai dati solo agli utenti strettamente autorizzati.
- Obbligo di riservatezza per gli operatori che accedono ai dati.
- Formazione periodica sulla sicurezza per tutto il personale coinvolto.
7. Conservazione e cancellazione dei dati
- Definizione dei tempi di conservazione basati sulle necessità operative e normative.
- Cancellazione sicura dei dati dopo il periodo di conservazione contrattuale.
8. Conformità e verifiche
- Possibilità per i clienti di effettuare audit di sicurezza sui processi di trattamento dei dati.
- Adozione di certificazioni e best practice di settore per dimostrare la conformità
Ecco un elenco delle funzionalità fondamentali da implementare in un'applicazione ASP.NET MVC Core con Identity (su SQL Server) per rispettare le direttive del Codice di condotta per le imprese di sviluppo di software gestionale, strutturate per Controller.
AccountController (Gestione Accessi e Sicurezza)
Questo controller gestisce l'autenticazione e l'autorizzazione, fondamentali per garantire che l'accesso ai dati sia strettamente controllato e limitato al personale autorizzato ****.
- Login / Logout:
- Requisiti fondamentali: Implementare meccanismi di autenticazione robusti. Il sistema deve tracciare in modo sicuro gli accessi e le disconnessioni, in particolare per il personale che svolge funzioni di amministratore di sistema, garantendo il rispetto dei provvedimenti del Garante sugli amministratori di sistema ****.
- ManageRoles / AssignClaims:
- Requisiti fondamentali: Sviluppare un sistema basato sui ruoli (Role-Based Access Control) o sulle attestazioni (Claims) in ASP.NET Core Identity. Il software deve garantire che ogni utente autorizzato abbia accesso esclusivo ai soli dati necessari per l'espletamento delle proprie specifiche mansioni lavorative (principio di minimizzazione e limitazione dell'accesso) ****.
- AccessLogs:
- Requisiti fondamentali: Generare log inalterabili degli accessi, in particolare per tracciare chi visualizza o modifica i dati personali, supportando le verifiche di sicurezza richieste dal cliente ****.
DataSubjectRightsController (Esercizio dei Diritti degli Interessati)
Il Codice di condotta richiede espressamente che il software metta a disposizione del cliente le funzionalità tecniche per rispondere alle richieste degli interessati (Capo III del GDPR) ****.
- ExportData:
- Requisiti fondamentali: Sviluppare una funzione che consenta l'estrapolazione e l'esportazione dei dati personali di uno specifico interessato. Il sistema deve generare file in un formato strutturato, di uso comune e leggibile da dispositivo automatico (es. JSON o CSV) per garantire il diritto alla portabilità ****.
- RectifyData:
- Requisiti fondamentali: Predisporre interfacce che consentano al titolare del trattamento (il cliente) di cercare, individuare rapidamente e rettificare o aggiornare i dati personali inesatti presenti nel database SQL Server ****.
- DeleteData (Diritto all'oblio):
- Requisiti fondamentali: Implementare una funzione di cancellazione sicura e definitiva (hard delete) oppure di anonimizzazione irreversibile dei dati di un utente all'interno del database, al fine di soddisfare il diritto alla cancellazione ****.
- RestrictProcessing:
- Requisiti fondamentali: Introdurre un flag o uno stato a livello di database (es. IsProcessingRestricted) che, se attivato, inibisca temporaneamente qualsiasi ulteriore elaborazione, modifica o visualizzazione non autorizzata dei dati di un determinato interessato, limitandone di fatto il trattamento ****.
SecurityAndIncidentController (Gestione Sicurezza e Data Breach)
Per supportare gli obblighi di notifica e la mitigazione dei rischi previsti per i Titolari e i Responsabili del trattamento ****.
- ReportSecurityIncident:
- Requisiti fondamentali: Creare un'interfaccia di log o un modulo per registrare tempestivamente qualsiasi anomalia o potenziale violazione dei dati personali (Data Breach). Il sistema deve permettere di estrarre i dettagli tecnici dell'incidente per consentire alla Software House di comunicare l'evento al cliente senza ingiustificato ritardo, e possibilmente entro 48 ore ****.
- PrivacyByDesignSettings:
- Requisiti fondamentali: Un pannello di controllo che permetta al cliente di attivare o disattivare moduli specifici di raccolta dati, impostare policy di crittografia per campi sensibili o configurare regole di pseudonimizzazione, per dimostrare l'applicazione dei principi di privacy by design e by default ****.
DataRetentionController (Conservazione e Restituzione Dati)
Il software deve gestire accuratamente il ciclo di vita dei dati per non conservarli oltre il tempo necessario ****.
- ScheduleDataPurge:
- Requisiti fondamentali: Implementare un job in background o un'azione attivabile manualmente che individui i dati per i quali è scaduto il periodo di conservazione contrattualmente pattuito, procedendo alla loro cancellazione automatica o segnalandoli per la rimozione ****.
- TenantTerminationExport:
- Requisiti fondamentali: Nel caso in cui il contratto con il cliente termini, questa funzione deve raccogliere l'intero set di dati appartenente al cliente, renderlo disponibile per il download per un periodo massimo di 30 giorni successivi alla cessazione, e successivamente avviare le routine di cancellazione definitiva da tutti i sistemi della Software House ****.