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

SicherheitsaspektMDB (alt)ACCDB (neu)
Dateipasswortschwach, knackbarAES 128-Bit
Benutzerkontennicht vorhandennicht vorhanden
VerschlüsselungJet XORAES
Code-Schutzmäßig (ACCDE)besser (ACCDE)
Zeilen-/Feldschutznicht möglichnicht 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ßnahmeAccess möglichEmpfohlen
AES-DatenbankverschlüsselungJa (immer)
Dateizugriff nur lesend✅ (NTFS)Ja
Passwort auf BackendJa
Frontend als ACCDEJa
VBA-Code verschlüsseln⚠️ ACCDE onlyJa
Feld-Verschlüsselung❌ (nur per Trick)SQL Server besser
Benutzerrechte je ZeileNur mit SQL + App

Mein Setup für sichere Access-Anwendungen

BereichMaßnahme
FrontendACCDE mit Versionsprüfung
BackendACCDB verschlüsselt mit komplexem Passwort
DatenübertragungODBC + verschlüsselte Verbindung
Userdatennicht in Klartext speichern
Exportfunktionnur nach Benutzerrolle freischalten
BackupVersioniert 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.

Categories:

Tags:

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert