PDA

Vollständige Version anzeigen : Wirkungsvoller Sicherheitstipp Frontend/Backend


WeinGeist
09.10.2010, 22:39
Hallo zusammen, mal wieder einen kleinen Beitrag von mir. Zwar kein direkter Code-Beitrag, aber ich denke er passt trotzdem hierher:

Da mich das Thema Sicherheit in Verbindung mit Access immer etwas beschäftigt bzw. Kopfschmerzen bereitet, habe ich mir vor einiger Zeit wieder ein paar Gedanken gemacht, wie man die Backend etwas besser gegen simples Copy/Paste, Exporte und dergleichen schützen könnte, ohne gleich sämtliche Tabellenangaben zu verschlüsseln und imme zu decrypten und crypten. Ist irgendwie mit der Zeit auch lästig, vor allem zum rechnen. Und Performant isses grad auch nicht. Exporte werden auch nicht verhindert usw.

Als recht wirkungsvoll, einfach und ohne wirkliche User-Abstriche hat sich folgende Methode herausgestellt:
1. Erstellen eines speziellen "Users" im AD oder auf der lokalen Maschine welcher Berechtigung auf Frontend, Backend + evtl. MDW (eigentlich unnötig) hat.
2. Allen anderen Usern die Berechtigung nehmen.
3. Den Start der MDB via Runas und dem vorher definierten User+Passwort.

Bevor gehustet wird, mit folgendem Programm kann man die ganzen Angaben wie Name, Key, AccessPfad, DB-Pfad, Anmeldeart etc. verschlüsselt in einer Datei ablegen.
--> RunAsSCP (http://www.robotronic.de/runasspc.html)

Dabei kann man das Anmeldeverfahren und einige andere Dinge direkt einstellen.

Die DB startet man anschliessend via einer Verknüpfung auf die runasscpc.exe (welche auch umbenannt werden kann) und dem Dateifile. --> Parameterübergabe, zbsp. so: Pfad\MeinProgrammname.exe /cryptfile:"Start.spc" /quiet


Ein paar weitere Vorzüge:
- Kein direkter Zugriff auf die Dateien als normaler User möglich
- Keine Startparameter-Veränderung möglich
- Export von Dateien kann man recht wirkungsvoll verhindern, wenn man nur Schreibrechte auf die benötigten Verzeichnisse gibt und die restlichen wie PDF-Ausdrucke etc. mit einer ähnlichen oder Hardcodeten-Variante erledigt.
- Direktes Kopieren der Backend wird mehr oder weniger verunmöglicht.
- Sämtliche Drucker einbindbar, ohne dass der User in seiner normalen Umgebung einen Wald von Druckern hat. --> ermöglicht zbsp. verschiedene Presets um auf andere Arbeitsplätze zu drucken.
- Eigenes, sauberes Profil in MS-Office welches man schön für Automatisierungen zurecht biegen/einstellen kann und der User für den restlichen Kram alles so einstellen kann wie er will.
- Kein herumsauen im Profil des Users, auch Krücken für Word-Automatisierungen mit Standard-Drucker wechseln und solche Spässe ist so eigentlich auch recht gut vertretbar.
- Und als Schmankerl wens stört (mir isses latte): Verschleierung das es ne Access DB ist, weil Start via EXE :grins:

Zu beachten gibts:
- Die Exe muss lokal sein, das CryptFile kann irgendwo liegen.
- Festplattenlaufwerkfreigaben müssen zbsp. in der Startroutine der DB im Hintergrund zbsp. via "Shell Net Use f: \\Server\LW_Backend" oder so gesetzt werden, das geschieht nicht automatisch, auch nicht wenn der User auf der Mühle bereits ein Profil hat und diese Freigabe eigentlich als Persistent hätte oder via GPO bekommt.
- Netzwerkdrucker müssen wie die Verzeichniss auch jedes mal verbunden werden. Kann via VB heraus aber auch sehr einfacht gemacht werden. --> Siehe Anhang
- Direktes Mailing ist etwas erschwert, weil es nicht auf über das eigene Outlook-Profil geht. Kann man aber alles auch mit verschiedensten Methoden lösen.
- Die Berechtigung auf Verzeichnisse auf welche normale User Lese/Schreibrechte haben sollten dem definierten User möglichst genommen werden.

So bekommt man eine ziemlich sichere quasi-Sandbox-Umgebung für die Access-anwendung, kann nach belieben automatisieren ohne den User zu stören und ohne selbst gestört zu werden. ;)

Für Bedenken, Anregungen etc. bin ich natürlich Dankbar. Ein 100% Schutz ist es natürlich nicht, aber für jeden normalen und auch solche mit etwas erweiterten Kenntnissen dürfte die Latte in Verbindung mit den üblichen Tricks schon ziemlich hoch sein. Ich selber schlafe in Verbindung mit dem Hier und AD-Authentifizierung/Berechtigungen in der Software (http://www.ms-office-forum.net/forum/showthread.php?t=237358) mittlerweile schon sehr gut, trotz Access. Auch die UserProbleme weil sie irgendwas geändert haben und dann irgendwas wieder nicht tut etc. sind verschwunden. :)


Anhang:
- Netzwerkdrucker verbinden:
Public Function ConnectNetworkPrinter(ByVal sPrinterName As String, Optional ByVal sConnectUser As String, Optional ByVal sConnectPasswort As String) As Long
Dim WshNetwork As Object

On Error GoTo ErrorHandler

Set WshNetwork = CreateObject("WScript.Network")

'Screen.MousePointer = 11

If Len(sConnectUser) > 0 Then
WshNetwork.MapNetworkDrive "", sPrinterName, False, sConnectUser, sConnectPasswort 'Für nicht domänencomputer
End If

ConnectNetworkPrinter = WshNetwork.AddWindowsPrinterConnection(sPrinterName)

ExitMethod:
Set WshNetwork = Nothing
'Screen.MousePointer = 0
On Error GoTo 0
Exit Function
ErrorHandler:
ConnectNetworkPrinter = Err.Number
Resume ExitMethod
End Function