DB2 Encryption

Werbung
DB2 Encryption
Möglichkeiten der Verschlüsselung von Daten
mit DB2 Bordmitteln inklusive der
Datenbankverbindung
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Agenda
•
•
•
•
•
Vorstellung
Motivation / Warum Verschlüsselung
Bevor man anfängt…..
Möglichkeiten der Implementierung
Beispiele der Verschlüsselung mit DB2 10.5
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Mein erster Vortrag auf einer Course……
seit 10
Jahren
COURSE !!
GSE DB2 LUW 17.12.-18.12.2015 - Regensburg
Ferdinand Prahst – efpe d@ta
Warum komme ich auf die COURSE
• fachfremd
• Fachdiskussion innerhalb und außerhalb der
IT
– „alte Hasen und ihr Erfahrungsschatz“
– Vortrag über Whisky an der Bar
• Eigene Vorträge als Beitrag zum
Wissenstransfer
– Thema meiner Diplomarbeit
– „CICS-Papst“ Ebert als Vorbild
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Vorstellung
•
•
•
•
Ferdinand Prahst
39 Jahre
seit 2000 selbständig im Bereich DB2 LUW
NEU : seit Oktober 2015 Papa von Zwillingen
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Motivation / Warum Verschlüsselung ?
Beweggründe
• Gesetze
– sensitive Daten (Geheimhaltung)
– personenbezogene Daten
(Gesundheitswesen)
• Projekt / Fachabteilung
• Zugriffsbeschränkung für DBAs (Compliance)
– Einfacher mit „no data access“
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Bevor man anfängt
•
•
•
•
Mit Augenmaß / KISS !!!!
Nicht „alles oder nichts“
Genaue Anforderung
Viel Lärm um nichts
3 Bereiche der Verschlüsselung
• ruhende Daten
Encryption Expert (kostenpfl.)
• aktive daten
• Verbindungen
– db2set DB2COMM=SSL
– TrustedContext -> Benutzer erbt Berechtigung wenn er aus
der richtigen Umgebung kommt
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Verschlüsselung innerhalb der DB /
Verschlüsseln von Spalten (1/2)
Tabelle anlegen oder bereits angelegt
Column Level Encryption
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Verschlüsselung innerhalb der DB /
Verschlüsseln von Spalten (2/2)
Row-Column (Cell) or Set-Column Level Encryption
“The ENCRYPT/DECRYPT SQL functions are legacy. I
do not recommend them for any serious encryption
implementation. They use outdated cryptography,
they do not provide good key management, and I
don’t think their performance is great.”
“Ask the Experts” panel at the IDUG 2014 Technical
Conference in Arizona.
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
DB2 native encryption / Highlights
• ab DB2 10.5 FP5
• Bereits ab Workgroup Server Edt. (WSE)
• Transparent für Anwendungen
– Keinerlei Anpassungen nötig
• Für Backups und Online Datenbank
• basiert auf Public Key Cryptography Standard #12 (PKCS#12)
• Verschlüsselung standardmäßig mit AES 256
– andere aber möglich (3DES oder AES)
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Was wird verschlüsselt?
• Alle Tabellenbereiche
• Alle Arten von Daten (LOB, XML, etc.)
• Load Copy und Load Files
• Transaktionslogs
• .bin Dumpfiles
• Daten werden auch in Memory verschlüsselt gehalten, wenn
sie gerade nicht verwendet werden
Unverschlüsselt:
• Daten die regulär gelesen werden
• Exports
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Was braucht man zur Verschlüsselung
GSKit: IBM Global Security Kit
• wird mit DB installiert (sqllib/gskit)
• Libraries werden verwendet
• Command Line: gsk8capicmd_64
Keystore
• Speicherung für Verschlüsselungs Master Keys
• kann auch Zertifikate für SSL Verbindungen enthalten
• Verschlüsseltes File
• Nicht Bestandteil des Backups – Separierung wichtig
• USER ist für Sicherung verantwortlich !!!
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Zwei Ebenen der Verschlüsselung
1. Schicht:
• DEK: Data Encryption Key
• Mit diesem Schlüssel werden die Daten verschlüsselt
• Wird mit in der Datenbank bzw. im Backup gespeichert
2. Schicht:
• Der DEK wird wiederum verschlüsselt mit dem Master Key (MK)
• Nennt man auch Envelope Encryption
• Der MK wird außerhalb der Datenbank gespeichert - im PKCS12
Keystore
• Nur der/die DB2 Instance Owner sollten read/write Zugang zu diesem
Keystore haben
• Grund: wird der Schlüssel gewechselt, muss nur der DEK aber nicht
alle Daten – neu verschlüsselt werden
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Erste Schritte
Keystore anlegen
./sqllib/gskit/bin/gsk8capicmd_64 –keydb –create -db keystore.p12 -pw
StrengGeheim23! –strong -type pkcs12 –stash
MasterKey anlegen
./sqllib/gskit/bin/gsk8capicmd_64 -secretkey -add -db keystore.p12 stashed -label mylabel -file mysecretfile
Instance anpassen
• db2 update dbm cfg using keystore_type pkcs12 keystore_location
/home/db2inst2/keystore.p12
Stashfile ersetzt Passwort, ohne stashfile muss beim DB2START das
Passwort mitgegeben werden
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
DB verschlüsseln / entschlüsseln
Beim Anlegen
db2 create db dbenc encrypt (master key automatisch generiert)
db2 create db dbenc encrypt cipher aes key length 128 master key label mklabel
Bei einer bestehenden DB ( nicht inplace, Backup/Restore notwendig)
db2 restore db sample from /db2inst1/backup taken at 20160603181051
into encrdb encrypt
Entschlüsseln
db2 restore db dbenc from /diskb/backup/ taken at … no encrypt
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Masterkey tauschen
•
db2 connect to dbencr
• db2 "call admin_rotate_master_key('MKL_encrDB_0616')"
Value of output parameters
-------------------------Parameter Name : LABEL
Parameter Value : 'MKL_encrDB_0616
Return Status = 0
Das übergebene Label muss im aktuellen keystore exisitieren !
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Erste Erfahrungen
•
•
•
•
CPU geringfügig höher belastet, HW-Unterstützung prüfen !
Datenbankgröße kaum verändert
Backup etwas größer
Beim BACKUP einer verschlüsselten DB zieht die COMPRESS Option
nicht mehr, enn also z.B. libdb2encr.so gesetzt ist, kann Backup nicht
komprimiert werden
45. COURSE-Tagung 5.-7. Juni 2016 im
Schlosshotel Bad Wilhelmshöhe in Kassel
Ferdinand Prahst – efpe d@ta
Herunterladen