SQL Server and GDPR
SQL Server and GDPR
#SqlSat675 – 18/11/2017
Organizzatori
GetLatestVersion.
it
#SqlSat675 – 18/11/2017
Gianluca Hotz | @glhotz
Fondatore e Mentor SolidQ
20 anni con SQL Server (dalla 4.21 nel 1996)
Modellazione basi di dati, dimensionamento e amministrazione, sviluppo,
ottimizzazione
Interessi
Modello relazionale, architettura DBMS, alta disponibilità e Disaster Recovery
#SqlSat675 – 18/11/2017
Security Layering
Data Encryption
• Transport Layer Security (in transit)
Data Encryption • Transparent Data Encryption (at rest)
• Cell-Level Encryption (at rest)
• Always Encrypted (at rest and in transit)
Data Access
Data Access
Access Control • Dynamic Data Masking
• Row-Level Security
Proactive monitoring
• Auditing
• Threat Detection*
#SqlSat675 – 18/11/2017
Scoperta e Controllo Accessi
Assessment
Trovare a classificare informazioni in ambito
Catalogo metadati (es. sys.columns, moduli SQL)
Ricerche Full-Text in campi liberi
#SqlSat675 – 18/11/2017
Azure Database Firewall
Accesso per servizi Azure
Indirizzi IP Specifici
Range di indirizzi IP
No 0.0.0.0-255.255.255.255
Interfaccia SSMS
Comandi T-SQL
PowerShell, REST API
#SqlSat675 – 18/11/2017
Autenticazione
Due livelli: Server login e Database User
Best Practice
Autenticazione integrata
Database Containment (autenticazione a livello database)
#SqlSat675 – 18/11/2017
Autorizzazioni
Permessi granulari
GRANT cosa può fare ON su che oggetto TO chi
Ereditarietà gerarchia di oggetti
Assegnazione (GRANT), negazione (DENY), revocare (REVOKE)
Row Level Security
Dati a riposo
File database (dati e log transazioni)
File di trace/audit
#SqlSat675 – 18/11/2017
Crittografia comunicazioni
On-premise
Installazione Certificato (server e client)
Possibile forzare utilizzo (server e client)
Autenticazione sempre crittografata (nel caso «self-signed»)
#SqlSat675 – 18/11/2017
Always Encrypted Keys
Column Encryption Key (CEK)
Usate per crittografare i dati
Conservate solo in forma crittografata sul server
Legate a specifiche colonne
Casuale
Nessuna operazione permessa
Indicizzazione non permessa
Più robusta
#SqlSat675 – 18/11/2017
Configurazione Client Always Encrypted
Stringa di connessione
Column Encryption Setting=Enabled
Esecuzione di comandi
SqlCommand.ColumnEncryptionSetting*
Disabled, Enabled, ResultSetOnly, UseConnectionSetting
#SqlSat675 – 18/11/2017
Flusso corrispondenze esatte AE
I dati sensibili crittografati con le relative
chiavi crittografiche non sono mai
disponibili in chiaro sul server!
ADO .NET
Result Set Result Set
Name Name
Wayne Jefferson 0x19ca706fbd9a
dbo.Customers
Name SSN Country
trust boundary 0x19ca706fbd9a 0x7ff654ae6d USA
ciphertext
#SqlSat675 – 18/11/2017
DEMO
Protezione
Row-Level Security
Panoramica Row Level Security
Restringe l’accesso a un sottoinsieme di righe
«Security Policy»
Applica i predicati di sicurezza alle tabelle
#SqlSat675 – 18/11/2017
Row-Level Security
Due
Tre
Uno
Gestore
L’utente
La «Security
delle
(es. Policy»
l’infermiera)
policy riscrive
crea seleziona
untrasparentemente
predicato
dallaintabella
T-SQLladei
per
query
pazienti
filtrare
applicando
i solo
dati in
quelli
ilbase
predicato.
che
all’identificativo
può vedere. utente e crea
«security policy» che vincola tale predicato alla tabella dei pazienti.
Nurse Database Policy Manager
Security
Filter
Predicate:
Policy
INNER
JOIN…
#SqlSat675 – 18/11/2017
DEMO
Protezione
Dynamic Data Masking
Dynamic Data Masking
Mascheramento
Table.CreditCardNo
4465-6571-7868-5796
4468-7746-3848-1978
Real-time 4484-5434-6858-6550
Mascheratura parziale
Basato su regole/permessi
A livello di colonna
Permesso di «unmask»
10.1.1.50
10.1.0.10 10.1.0.20
SQL01 SQL02
Shared Storage
SAN01
#SqlSat675 – 18/11/2017
Indisponibilità nodo con AlwaysOn FCI
Router
ADMINWKS
Primary Site
10.1.1.50
10.1.0.10 10.1.0.20
CRASH
SQL01 SQL02
Shared Storage
SAN01
#SqlSat675 – 18/11/2017
AlwaysOn Availability Groups
Router
ADMINWKS
Primary Site
10.1.1.50
10.1.1.200
Disk Share Node
SQL01 SQL02
DAS DAS
Primary Secondary
Replica Replica
AGDB01 AGDB01
AGDB02 AGDB02
#SqlSat675 – 18/11/2017
Indisponibilità nodo con AlwaysOn AG
Router
ADMINWKS
Primary Site
10.1.1.50
10.1.1.200
Disk Share Node
CRASH
SQL01 SQL02
DAS DAS
Primary Secondary
Replica Replica
AGDB01 AGDB01
AGDB02 AGDB02
#SqlSat675 – 18/11/2017
Azure SQL Database
Logicamente singolo
database
DB
P S
Ack Read
value write
P
S
Ack P Write S
Write Ack
S S
«Point-in-time»
granularità fino a un punto in base a «retention»
Richiede modello di recovery FULL e backup log
«Backup set»
Ridondati localmente
Ridondati geograficamente (regione geo-politica affine)
Long Term Backup Retention (in anteprima)
Settimanali mantenuti per 10 anni
#SqlSat675 – 18/11/2017
Report e Revisione
Cosa tracciare
Accessi
SQL Server Trace (Profiler, deprecato)
SQL Server Audit
Target
File
Windows Log
Allarmi
In tempo reale
Raccomandazioni cosa investigare/come mitigare/rimediare
#SqlSat675 – 18/11/2017
Policy Based Management
Infrastruttura per
Definizione «policy»
Controllo conformità installazione con «policy»
#SqlSat675 – 18/11/2017
Modifiche Database Temporali
* Versioni vecchie
Update */ Delete *
Insert / Bulk Insert
#SqlSat675 – 18/11/2017
Interrogazioni Database Temporali
* Include versioni
storiche
#SqlSat675 – 18/11/2017
Risorse GDPR
Regolamento ufficiale
http://data.consilium.europa.eu/doc/document/ST-9565-2015-INIT/en/pdf
Guide to enhancing privacy and addressing GDPR requirements with the Microsoft SQL
platform
https://aka.ms/gdprsqlwhitepaper
Corso MVA
https://mva.microsoft.com/en-US/training-courses/16076
GitHub Samples
https://github.com/Microsoft/azure-sql-security-sample
https://github.com/Microsoft/sql-server-samples
#SqlSat675 – 18/11/2017
Risorse Security specifiche
Transparent Data Encryption
https://blogs.msdn.microsoft.com/sqlsecurity/2016/10/05/feature-spotlight
-transparent-data-encryption-tde
Always Encrypted
https://msdn.microsoft.com/en-us/library/mt163865.aspx
https://channel9.msdn.com/events/DataDriven/SQLServer2016/AlwaysEncry
pted
https://channel9.msdn.com/events/Ignite/2016/BRK3151
#SqlSat675 – 18/11/2017
Risorse Business Continuity
SQL Server 2014 From 0 to HA with Cluster & AlwaysOn
https://www.youtube.com/watch?v=YbF17toCd5Y
#SqlSat675 – 18/11/2017
#SqlSat675
#SqlSat675 – 18/11/2017