Access ist praktisch. Schnell. Flexibel.
Aber: Sicherheit war nie seine StÀrke.
FrĂŒher gab’s Benutzergruppen. Heute gibt’s Split-Datenbanken und VBA.
Ich zeig Dir, wie Du in modernen Access-Projekten Benutzerberechtigungen selbst verwalten kannst – robust genug fĂŒr KMU, ohne SharePoint oder Azure AD.
Grundprinzip: Trennung von Backend und Frontend
Wenn Du’s noch nicht tust: Trenn Daten (Backend, .accdb) und Anwendung (Frontend, .accde).
Nur das Frontend liegt beim Benutzer. Das Backend liegt auf dem Server – ohne Schreibrechte auf die Datei.
Frontend = logisch, Benutzersteuerung möglich
Backend = roh, nur Daten, keine Logik
Strategien zur Benutzersteuerung
Du brauchst:
- Benutzeridentifikation
- Rollenzuweisung
- Zugriffssteuerung in Formularen, Buttons, Berichten
Keine Raketentechnik – aber konsequent umgesetzt spart es Ărger.
Benutzer automatisch erkennen (Windows-Anmeldung)
Public Function AktuellerBenutzername() As String
AktuellerBenutzername = Environ("USERNAME")
End Function
Alternative ĂŒber WScript:
Public Function GetWindowsBenutzer() As String
Dim objNet As Object
Set objNet = CreateObject("WScript.Network")
GetWindowsBenutzer = objNet.UserName
End Function
Ich empfehle: Speichern in einer Tabelle tblBenutzer, mit Feldern:
- Benutzername
- Rolle
- Aktiv (Ja/Nein)
- Letzter Login (fĂŒr Logging)
Login-Check beim Start
Public Sub PrĂŒfeBenutzer()
Dim strUser As String
strUser = AktuellerBenutzername
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblBenutzer WHERE Benutzername='" & strUser & "' AND Aktiv=True")
If rs.EOF Then
MsgBox "Zugriff verweigert.", vbCritical
Application.Quit
End If
TempVars("Rolle") = rs!Rolle
TempVars("Benutzername") = strUser
rs.Edit
rs!LetzterLogin = Now
rs.Update
rs.Close
End Sub
Aufruf z. B. in AutoExec-Makro oder Startformular.
Zugriff steuern im Formular
Beispiel: Button nur fĂŒr Admins sichtbar
Private Sub Form_Load()
Me.btnAdminbereich.Visible = (TempVars!Rolle = "Admin")
End Sub
Oder dynamisch fĂŒr mehrere Rollen:
Me.btnExport.Visible = (TempVars!Rolle = "Admin" Or TempVars!Rolle = "Leitung")
DatensÀtze einschrÀnken
Private Sub Form_Open(Cancel As Integer)
If TempVars!Rolle <> "Admin" Then
Me.Filter = "ErstelltVon='" & TempVars!Benutzername & "'"
Me.FilterOn = True
End If
End Sub
So sehen normale Benutzer nur ihre eigenen Daten.
Admin-OberflÀche zum Verwalten der Benutzer
Gib Dir ein Formular zur Pflege von tblBenutzer.
Und vergiss nicht:
- Beim Löschen lieber deaktivieren (
Aktiv=False) - Logs mitfĂŒhren: Wer hat was wann gemacht? (tblLogs)
Bonus: Access-Frontend mit Passwortschutz
Nicht narrensicher, aber nĂŒtzlich in Kombination:
Public Function PasswortCheck() As Boolean
Dim Eingabe As String
Eingabe = InputBox("Bitte Passwort eingeben:")
PasswortCheck = (Eingabe = "MeinSicheresPasswort")
End Function
Oder per Benutzerpasswort aus Tabelle prĂŒfen.
Nicht militĂ€rsicher – aber besser als gar nichts.
Fazit
Access ist kein Hochsicherheits-System.
Aber Du kannst mit Bordmitteln:
- Benutzer erkennen
- Rollen zuweisen
- Zugriff einschrÀnken
- OberflÀchen dynamisch anpassen
Wichtig:
Nicht ĂŒbertreiben – aber konsequent durchziehen.
Dann reicht’s fĂŒr 95 % aller KMU-Anwendungen.