BEISPIEL
Verschlüsseln von Datenbanken
Alle bisher vorgestellten Verfahren haben einen wesentlichen Nachteil: Man kann zwar innerhalb der
Datenbank verschiedene Sicherheitsstufen einführen, die physische Datei bleibt jedoch vollkommen unge-
schützt. Ist ein ungebetener Gast an Informationen interessiert, kann er sich mit einem simplen Dateieditor
tiefe Einblicke verschaffen
1
.
Abbildung 9.27 Ausschnitt aus einer unverschlüsselten Access-Datenbank
Wer sich an dieser Schwachstelle stört, der kann die Datenbank verschlüsseln. Bevor Sie damit aber be-
ginnen, sollten Sie bedenken, dass jede Verschlüsselung zu Performance-Einbußen führt, denn bevor die
Daten gelesen oder geschrieben werden können, muss die Engine erst eine entsprechende Konvertierung
vornehmen.
Für alle, die eine geschützte Datenbank weitergeben wollen, ergibt sich ein zusätzliches Problem: Verschlüs-
selte Datenbanken lassen sich nicht mit den konventionellen Packprogrammen (ZIP, ARJ etc.) komprimie-
ren. Ursache ist die Verwürfelung der Daten, die das Erkennen redundanter Informationen ausschließt.
Verschlüsseln mit Hilfe der DAO
Dass Sie eine Datenbank über die Multifunktionsleiste (Datenbanktools/Datenbanktools/Datenbank ver-
/entschlüsseln) sichern können, dürfte bekannt sein. Eine weitere Möglichkeit bietet sich mit der Compact-
Database-Methode des DBEngine-Objekts an.
Verschlüsseln einer Access-Datenbank:
DBEngine.CompactDatabase "C:\Telefon.accdb","C:\Geheim.accdb","",dbEncrypt
Der letzte Parameter weist die Engine an, die Datenbank
Telefon.accdb
zu verschlüsseln und unter dem
Namen
Geheim.accdb
auf einem anderen Laufwerk zu speichern.
1
Die Struktur ist zwar nicht ganz so einfach wie der Aufbau von dBase-Dateien, es lassen sich jedoch genügend Einzelheiten erkennen.
549
Zugriffsschutz in Access-Datenbanken
BEISPIEL
HINWEIS
BEISPIEL
HINWEIS
Kapitel 9: Fortgeschrittene Datenbankprogrammierung
Einige Besonderheiten sind allerdings zu beachten:
Sie müssen die Datenbank exklusiv öffnen können, d.h., kein anderer Nutzer hat die Datenbank ge-
öffnet.
Quell- und Zieldatenbank dürfen nicht identisch sein, die verschlüsselte Datei kann immer nur unter
einem anderen Dateinamen gespeichert werden. Löschen Sie gegebenenfalls anschließend die alte Datei
mit Kill und benennen Sie die neue Datei mit Name um.
Aus o. g. Gründen muss auf der Festplatte genügend Platz für zwei Dateien sein. Auf gepackten Lauf-
werken benötigt die neue Datenbank mehr Platz als die alte!
Ist die Datenbank mit einem Kennwort geschützt, müssen Sie dieses als fünften Parameter an die Methode
übergeben.
Verschlüsseln einer geschützten Access-Datenbank:
DBEngine.CompactDatabase "c:\db1.mdb","c:\verschlüsselt.mdb","", dbEncrypt, ";pwd=geheim"
Zum Entschlüsseln einer Datenbank verwenden Sie die Konstante dbDecrypt.
Verschlüsseln mit Hilfe der ADO/JRO
An dieser Stelle werden Sie vielleicht überrascht sein, mit JRO schon wieder eine neue Abkürzung kennen
zu lernen. Hierbei handelt es sich um die Jet and Replication Objects. Wie der Name schon andeutet, bieten
diese Objekte geeignete Methoden, um unter anderem Access-Datenbanken zu verschlüsseln. Hauptein-
satzgebiet ist allerdings die Replikation von Datenbanken, wir kommen in einem der folgenden Abschnitte
darauf zurück.
Verschlüsseln der Datenbank
Test.mdb
:
Dim je As New JRO.JetEngine
If Dir("c:\Back_test.mdb") <> "" Then Kill "c:\Back_test.mdb"
je.CompactDatabase "Data Source=c:\test.mdb;", _
"Data Source=c:\back_test.mdb;Jet OLEDB:Encrypt Database=True"
If Dir("c:\Back_test.mdb") <> "" Then
Kill "c:\test.mdb"
Name "c:\back_test.mdb" As "c:\test.mdb"
End If
Nach dem Löschen der eventuell noch vorhandenen Backup-Datei wird mit Hilfe der Methode
Compact-
Database
die Datenbank verschlüsselt. Nachfolgend kann dann die neue Datei umbenannt werden.
Im Übrigen gelten auch hier die Hinweise zum Gebrauch der DAO.
550

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.