Datenbank

AZURE

Um auf eine Azure-Datenbank zugreifen zu können muss in der dwKernel.ini nur der Connection-String angepasst werden und die von Azure bereitgestellte *.pem-Datei auf dem lokalen Rechner vorhanden sein. Beispiel für einen Connection String:

Connection = "DRIVER={MySQL ODBC 5.3 Ansi Driver}; SERVER=127.0.0.1; DATABASE=speedy7_cad; User=youruser; Password=yourpassword; rsakey=c:\azure.pem; OPTION=4212875; Port=3306;" 

Falls das Dateisystem auch in der Cloud laufen soll kann dies über einen ownCloud-Server und ownCloud-Client realisiert werden. Es kann zum Beispiel in Azure ein ownCloud-Server erstellt werden. Dieser wird dann als Filesystem genutzt. Der ownCloud-Client kann dann ein Server in der Firma oder ein einzelner Rechner sein von diesem Speedy dann die Daten abgreift.

Die Datenverbindung zu einer Azure-Datenbank wird durch eine SSL-Verbindung verschlüsselt.

MySQL

SSL-Verbindung

Um eine SSL-Verbindung zu unserer Datenbank herstellen zu können müssen Einstellungen auf dem Server und dem Client gemacht werden.

Sie benötigen Server seitig:

Client seitig:

  • MySql ODBC 5.3

Hilfe: https://serverfault.com/questions/783861/enabling-ssl-in-mysql-when-using-windows-as-a-server-and-client

Server Einstellungen

Um SSL auf dem MySql Server zu aktivieren und die erforderlichen Zertifikate zu erstellen müssen einige Schritte durchgeführt werden.

Als erstes sollte der MySql Server Installiert werden oder Installiert sein. Wenn dies der Fall ist können können sie einen neuen User anlegen oder einem bestehenden User den SSL Mode setzen. Dies wird auf der Kommandozeile mit der mysql.exe vorgenommen. Nutzen sie dafür einen User der Root Rechte hat.

Neu:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'yourssluser'@'%' IDENTIFIED BY 'yoursslpassword' REQUIRE SSL;

Bestehend:

mysql> UPDATE mysql.user SET ssl_type = 'ANY' WHERE user = 'someUser';


Danach:

mysql> FLUSH PRIVILEGES;

Legen sie als nächstes ein Verzeichnis an in dem die Zertifikate abgelegt werden: mkdir C:\mysqlCerts
Nun wird die Systemavariable OPENSSL_CONF gesetzt: set OPENSSL_CONF=c:\OpenSSL-Win64\bin\openssl.cfg

Als nächsten Schritt werden die ganzen Client und Server-Zertifikate erzeugt! Auf der Kommandozeile den OpenSSl Pfad auswählen.
1. CA-Zertifikate:

openssl genrsa 2048 > "C:\mysqlCerts\ca-key.pem"

danach:

openssl req -new -x509 -nodes -days 3600 -key C:\mysqlCerts\ca-key.pem > C:\mysqlCerts\ca-cert.pem

2. Server-Zertifikate:

openssl req -newkey rsa:2048 -days 3600 -nodes -keyout C:\mysqlCerts\server-key.pem > C:\mysqlCerts\server-req.pem

danach:

openssl x509 -req -in C:\mysqlCerts\server-req.pem -days 3600 -CA C:\mysqlCerts\ca-cert.pem -CAkey C:\mysqlCerts\ca-key.pem -set_serial 01 > C:\mysqlCerts\server-cert.pem

danach:

openssl rsa -in C:\mysqlCerts\server-key.pem -out C:\mysqlCerts\server-key-ppless.pem

3. Client-Zertifikate:

openssl req -newkey rsa:2048 -days 3600 -nodes -keyout C:\mysqlCerts\client-key.pem > C:\mysqlCerts\client-req.pem

danach:

openssl x509 -req -in C:\mysqlCerts\client-req.pem -days 3600 -CA C:\mysqlCerts\ca-cert.pem -CAkey C:\mysqlCerts\ca-key.pem -set_serial 01 > c:\mysqlCerts\client-cert.pem

danach:

openssl rsa -in C:\mysqlCerts\client-key.pem -out C:\mysqlCerts\client-key.pem

4. Zertifikate in my.ini des Servers eintragen(c:\ProgramData\MySQL\MySQL Server 5.7\):

ssl-ca     = C:\mysqlCerts\ca-cert.pem \\
ssl-cert   = C:\mysqlCerts\\server-cert.pem \\
ssl-key    = C:\mysqlCerts\\server-key-ppless.pem

Als nächstes sollte der Server neu gestartet werden.

Um zu kontrollieren ob der Server nun eine SSL Verbindung zulässt nutzen sie wieder die mysql.exe und geben folgenden befehl ein:

mysql> show global variables like '%ssl%';

Wenn alles korrekt ist sollte diese Ausgabe erscheinen:

Variable_name Value
have_openssl YES
have_ssl YES
ssl_ca C:\mysqlCerts\ca-cert.pem
ssl_capath
ssl_cert C:\mysqlCerts\server-cert.pem
ssl_cipher
ssl_crl
ssl_crlpath
ssl_key C:\mysqlCerts\server-key-ppem.pem

Damit ist der Server SSL fähig!

Client Einstellungen

Auf dem Client muss nun die .ini-Datei geändert werden und ein ODBC 3.0 Treiber installiert sein. In der .ini-Datei muss der Connection String abgeändert werden.

Ein Beispiel:

Connection = "DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER=127.0.0.1; DATABASE=speedy7cad; User=youruser; Password=yourpassword; SSLCA=c:\mysqlCerts\ca-cert.pem; SSLKEY=c:\mysqlCerts\client-key.pem; SSLCERT=c:\mysqlCerts\client-cert.pem; SSLCAPATH=c:\mysqlCerts; OPTION=4212875; Port=3306;"

Diesen Connection-String sollten sie noch an ihre Umgebung anpassen. Die SSL Zertifikate müssen sie von ihrem Server auf den Client Rechner Kopieren und den Pfad anpassen.

Bei SSL Verbindung mit dem Direkttreiber „MYSQL“ muss ebenfalls eine zweite Connection zur Lizenzdatenbank per Connection String und einem ODBC Treiber eingerichtet werden.

Data at Rest/ Verschlüsselung MariaDB Daten

Um die Datenbank lokal zu Verschlüsseln bietet die MariaDB den sogenannten Data at Rest Mechanismus an. Dieser wird folgendermaßen konfiguriert.

Datenbank Export

Als erstes muss ein Datenbankexport der Speedy Datenbank erfolgen. Dieser kann über die HeidiSql auf dem Server vollzogen werden. Export in eine .sql Datei vornehmen.
Einstellungen:

  • Datenbank: erzeugen
  • Tabellen: erzeugen
  • Daten: löschen und einfügen
  • Ausgabe: Einzekne .sql Datei

OpenSSL Installieren

Für die Verschlüsselung wird OpenSSL genutzt. Dazu muss OpenSSL auf dem Server installiert sein. Dies kann unter OpenSSL heruntergeladen werden.

Zufällige Schlüssel erstellen

Die Datenbank nutzt zufällige Schlüssel um die Datenbank zu verschlüsseln. Diese werden mit OpenSSL generiert.

  1. Schlüsseldatei generieren: c:\Program Files\MariaDB 10.3\keyfile.txt
  2. keyfile.txt in Editor öffnen. !!!Datei muss in ANSI kodiert sein!!!
  3. Kommandozeile öffnen
  4. Zu OpenSSL navigieren: cd c:\OpenSSL-Win32\bin\
  5. Schlüssel generieren: openssl rand -hex 32
  6. Schlüssel in Textdatei einfügen.
  7. Wie in den 2 Schritten zuvor 5 Schlüssel generieren und in Textdatei einfügen
  8. Schlüssel nach Folgendem Muster durchnummerieren: <encryption_key_id1>;<hex-encoded_encryption_key1>
    Beispiel: 1;9b1c8defdedf2ea152b7dbcb00002652ec2649894d1e4544c1c1597be2c81049
  9. Neue Datei generieren: c:\Program Files\MariaDB 10.3\keyfile.key
  10. keyfile.key in Editor öffnen. !!!Datei muss in ANSI kodiert sein!!!
  11. Schlüssel generieren: openssl rand -hex 128
  12. Schlüssel in keyfile.key einfügen
  13. Beide Dateien speichern!
  14. ENC-Datei erzeugen: openssl enc -aes-256-cbc -md sha1 -pass file:c:\Program Files\MariaDB 10.3\keyfile.key -in c:\Program Files\MariaDB 10.3\keyfile.txt -out c:\Program Files\MariaDB 10.3\keyfile.enc

Bei Problemen mit OpenSSL am besten die Dateien in ein Temp Verzeichnis kopieren und die Arbeit da machen da OpenSSL Probleme mit Leerzeichen in Pfaden hat. Danach dann die Dateien wieder in das MariaDB Verzeichnis kopieren

Datenbank konfigurieren

Um die Datenbank nun zu verschlüsseln muss die my.ini Datei bearbeitet werden. Diese Datei findet man unter: c:\Program Files\MariaDB 10.3\data\my.ini. Dort wird nun zu der bestehenden Konfiguration folgende Werte eingetragen:

[mysqld]
plugin_load_add=file_key_management
file_key_management_filename=C:/Program Files/MariaDB 10.3/keyfile.enc
file_key_management_filekey=FILE:C:/Program Files/MariaDB 10.3/keyfile.key
file_key_management_encryption_algorithm=aes_cbc
encrypt_binlog=1
encrypt-tmp-disk-tables=1
encrypt-tmp-files=1
innodb_encrypt_tables=FORCE
innodb_encrypt_log=ON
innodb_encryption_threads=4
innodb_encryption_rotate_key_age=0


Danach die Datenbank neu Starten!

Datenbank einspielen

Datenbank die wir vorher gesichert haben neu einspielen. Um zu Kontrollieren ob die Datenbank nun verschlüsselt ist kann mit folgenden Select-Statement angezeigt werden welche Tabellen verschlüsselt sind.

SELECT * FROM information_schema.innodb_tablespaces_encryption

Erweiterte Anleitung