Wenn .accdb offener ist als gedacht
Access ist schnell aufgesetzt.
Aber bei der Sicherheit wird oft geschlampt.
„Ist ja nur intern.“
„Steht ja im Netzlaufwerk.“
„Wird schon keiner…“
Doch. Wird jemand.
Und spätestens dann wird’s teuer.
Was Access kann – und was nicht
Sicherheitsaspekt | MDB (alt) | ACCDB (neu) |
---|---|---|
Dateipasswort | schwach, knackbar | AES 128-Bit |
Benutzerkonten | nicht vorhanden | nicht vorhanden |
Verschlüsselung | Jet XOR | AES |
Code-Schutz | mäßig (ACCDE) | besser (ACCDE) |
Zeilen-/Feldschutz | nicht möglich | nicht möglich |
ACCDB kann verschlüsseln –
aber nur die ganze Datei.
Und das auch nur beim Schließen.
Datenbank verschlüsseln: So geht’s
Manuell
- Access öffnen
- Datei → Informationen → Datenbank verschlüsseln mit Kennwort
- Passwort vergeben (Komplexität beachten)
- Schließen → Verschlüsselung wird angewendet
Automatisch per VBA
Application.SetOption "Auto Compact", True
Application.SetOption "Encrypt with Password", True
Das Passwort musst Du manuell setzen – per Dialog oder beim Speichern.
Backend-Datei verschlüsseln und trennen
Frontend und Backend müssen getrennt sein.
Nur das Backend enthält die Daten.
Und nur das Backend wird verschlüsselt.
Frontend als .accde
,
Backend als .accdb
mit AES-Passwort.
Wenn jemand das Frontend kopiert, hat er – nichts.
VBA: Zugriff auf verschlüsselte Datei prüfen
Dim db As DAO.Database
On Error GoTo Fehler
Set db = DBEngine.OpenDatabase("C:\daten\daten.accdb", False, False, ";PWD=MeinPasswort")
MsgBox "Zugriff erfolgreich"
db.Close
Exit Sub
Fehler:
MsgBox "Fehler beim Öffnen: " & Err.Description
Nur mit Passwort möglich.
Sonst Fehlermeldung.
Sicherheit erhöhen durch ACCDE
Wenn Du VBA-Code schützen willst:
Frontend als .accde
kompilieren.
Das verhindert:
- Ansicht des VBA-Editors
- Änderungen am Code
- Export des Codes
Kompilieren: Datei → Speichern unter → ACCDE
Tipp: Original-ACCDB niemals verteilen.
Nicht mal an Kollegen.
Zusätzlicher Schutz: Daten bei Bedarf verschlüsseln
Du willst Felder verschlüsseln?
Access kann das nicht direkt.
Aber per VBA und selbstgebauter AES-Funktion – oder extern.
Einfacher (nicht perfekt, aber besser als Klartext):
Function EinfachVerschluesseln(ByVal Text As String) As String
Dim Ergebnis As String
Dim i As Integer
For i = 1 To Len(Text)
Ergebnis = Ergebnis & Chr(Asc(Mid(Text, i, 1)) Xor 42)
Next i
EinfachVerschluesseln = Ergebnis
End Function
Und zum Entschlüsseln:
Function EinfachEntschluesseln(ByVal Code As String) As String
EinfachEntschluesseln = EinfachVerschluesseln(Code) 'XOR ist symmetrisch
End Function
Kein echter Schutz.
Aber besser als Klartext in der Spalte.
Richtiger Schutz: SQL Server mit Always Encrypted
Wenn Du ernsthafte Feldverschlüsselung brauchst: SQL Server.
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = 'AZURE_KEY_VAULT',
KEY_PATH = 'https://meinTresor.vault.azure.net/keys/keyname'
);
Und dann z. B.:
CREATE TABLE Kunden (
KundenID INT PRIMARY KEY,
Name NVARCHAR(100) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (
COLUMN_ENCRYPTION_KEY = MyCEK,
ENCRYPTION_TYPE = DETERMINISTIC,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256')
);
Access kann das nur per ODBC –
aber damit kannst Du Daten sicher ablegen.
Tabelle: Sicherheitsoptionen im Überblick
Maßnahme | Access möglich | Empfohlen |
---|---|---|
AES-Datenbankverschlüsselung | ✅ | Ja (immer) |
Dateizugriff nur lesend | ✅ (NTFS) | Ja |
Passwort auf Backend | ✅ | Ja |
Frontend als ACCDE | ✅ | Ja |
VBA-Code verschlüsseln | ⚠️ ACCDE only | Ja |
Feld-Verschlüsselung | ❌ (nur per Trick) | SQL Server besser |
Benutzerrechte je Zeile | ❌ | Nur mit SQL + App |
Mein Setup für sichere Access-Anwendungen
Bereich | Maßnahme |
---|---|
Frontend | ACCDE mit Versionsprüfung |
Backend | ACCDB verschlüsselt mit komplexem Passwort |
Datenübertragung | ODBC + verschlüsselte Verbindung |
Userdaten | nicht in Klartext speichern |
Exportfunktion | nur nach Benutzerrolle freischalten |
Backup | Versioniert und verschlüsselt |
Access ist kein Tresor. Aber Du kannst es zumindest abschließen.
Wenn Deine Daten nicht egal sind – dann speicher sie auch nicht so.
Besser verschlüsselt.
Besser getrennt.
Besser als nichts.
No responses yet