none
LocalDB Sicherheit RRS feed

  • Frage

  • Hallo,

    ich experimentiere zu Zeit mit der LocalDB\v11.0. Ich habe eine kleine Anwendung geschrieben welche so eine DB beinhaltet.

    Nach dem Veröffentlichen und der Installation auf einem anderen Rechner ist die Datenbank über das Management Studio (Windows-Authentifizierung) erreichbar und auch änderbar. Das ist so nicht gewollt.

    Es soll eine Server-Authentifizierung vollzogen werden, um den Zugriff einzuschränken. Was muss ich einstellen damit nur die Server-Authentifizierung funktioniert. Geht das überhaupt? Ich möchte mit Visual Studio 2013 zugreifen und die Connection im Quelltext definieren, aufbauen und schließe.

    Gruß Ronny

    Dienstag, 16. September 2014 08:16

Antworten

  • Hallo Elmar,

    nach weiteren Recherchen habe ich herausgefunden, dass ich die Windows-Authentifizierung bei LocalDB nicht ausschalten kann.

    Dein Tipp:

    Umgehen kann man das mit Einschränkung mit benannten freigegebenen Instanzen, die  auch SQL Authentifikation erlauben. Nur müssen auch die erst mal angelegt werden... siehe SqlLocalDB-Hilfsprogramm (Beispiel zur Anlage und Verbindung via Standard-Authentifizierung am Ende)

    sieht vor einen User mit Passwort anzulegen was aber noch lange nicht die Windows-Authentifizierung ausschaltet.

    Mein bestreben war es, in einer Anwendung so eine LocalDB anzulegen und alle Konfigurations- sowie Lizenzdaten zu hinterlegen. Der User braucht also keinen Zugriff.

    Soweit ich jetzt recherchiert habe könnte es mit MySQL oder MariaDB funktionieren, weil dort generell die Windows-Authentifizierung nicht ohne weiteres funktioniert. Viele andere eingebettete DB-Systeme funktionieren auf Dateiberechtigungsebene was wieder nichts nützt da der User ja meistens "Herr" über seinen Rechner ist.

    Gruß Ronny

    • Als Antwort markiert hans ronny Mittwoch, 17. September 2014 07:52
    Mittwoch, 17. September 2014 07:52

Alle Antworten

  • Mit "Server-Authentifizierung" ist sicherlich SQL Server Authentifizierung gemeint.

    Diese allein ist nicht möglich.
    Effektiv hat mindestens ein Administrator des jeweiligen Windows-Servers ohnehin die Möglichkeit, sich anzumelden.
    Alle anderen Logins kannst Du aber verhindern.

    Hier findest Du mehr Informationen zu den Authentifizierungs-Modi: Auswählen eines Authentifizierungsmodus


    Andreas Wolter (Blog | Twitter)
    MCM - Microsoft Certified Master SQL Server 2008
    MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
    www.andreas-wolter.com | www.SarpedonQualityLab.com

    Dienstag, 16. September 2014 08:45
  • Ich meine eine LocalDB\v11.0, der Beitrag aus deinem Link ist aber zu allgemein, da er beide Authentifizierungen zulässt. Meine LocalDB soll nur für die Anwendung zur Verfügung stehen. Der Benutzer darf darauf keinen Zugriff bekommen was aber nicht möglich ist.

    LocalDB läuft nicht auf Servern sondern auf Clients und dort ist der Besitzer der Anwendung auch Admin der LocalDB da sie ja unter seinem Konto läuft.

    Gruß Ronny

    Dienstag, 16. September 2014 10:06
  • Hallo Ronny,

    mal vernachlässigt, dass man einem Nutze den Zugriff auf seine Daten verweigerst... und ein Zugriff auf lokale Daten immer auch anderen Wegen möglich ist.

    Das kann prinzipbedingt nicht funktionieren. LocalDB\v11.0 ist quasi die Fortsetzung der SQL Server Express Benutzerinstanzen. Dabei wird eine SQL Server Instanz unter dem Konto des Benutzers gestartet. Der wird dadurch quasi der Administrator für diese Instanz, siehe

    SQL Server 2014 Express LocalDB (Hinweis am Ende)

    Auch solche (Schmalspur-)Administratoren haben brauchen mal vollständigen Zugriff auf die Daten und sei es nur zur Sicherung / Wiederherstellung.

    Umgehen kann man das mit Einschränkung mit benannten freigegebenen Instanzen, die  auch SQL Authentifikation erlauben. Nur müssen auch die erst mal angelegt werden... siehe SqlLocalDB-Hilfsprogramm (Beispiel zur Anlage und Verbindung via Standard-Authentifizierung am Ende)

    Willst Du es sicher (für Dich) so musst Du einen richtigen SQL Server auf einem abgesicherten Rechner hosten...

    Gruß Elmar

    Dienstag, 16. September 2014 13:42
  • Hallo Elmar,

    nach weiteren Recherchen habe ich herausgefunden, dass ich die Windows-Authentifizierung bei LocalDB nicht ausschalten kann.

    Dein Tipp:

    Umgehen kann man das mit Einschränkung mit benannten freigegebenen Instanzen, die  auch SQL Authentifikation erlauben. Nur müssen auch die erst mal angelegt werden... siehe SqlLocalDB-Hilfsprogramm (Beispiel zur Anlage und Verbindung via Standard-Authentifizierung am Ende)

    sieht vor einen User mit Passwort anzulegen was aber noch lange nicht die Windows-Authentifizierung ausschaltet.

    Mein bestreben war es, in einer Anwendung so eine LocalDB anzulegen und alle Konfigurations- sowie Lizenzdaten zu hinterlegen. Der User braucht also keinen Zugriff.

    Soweit ich jetzt recherchiert habe könnte es mit MySQL oder MariaDB funktionieren, weil dort generell die Windows-Authentifizierung nicht ohne weiteres funktioniert. Viele andere eingebettete DB-Systeme funktionieren auf Dateiberechtigungsebene was wieder nichts nützt da der User ja meistens "Herr" über seinen Rechner ist.

    Gruß Ronny

    • Als Antwort markiert hans ronny Mittwoch, 17. September 2014 07:52
    Mittwoch, 17. September 2014 07:52
  • Hallo Ronny,

    die Windows Authentifizierung kann man beim SQL Server niemals ausschalten. Das geht gar nicht, weil der SQL Server Prozess Zugriffsrechte im Dateisystem, Netzwerk und anderswo benötigt. Und die können nur über Windows Konten vergeben bzw. erlangt werden.

    Man kann die Standard-Authentifizierung nur zusätzlich konfigurieren, siehe Ändern des Serverauthentifizierungsmodus

    Legt man ein Standard-Konto an und entfernt alle Windows-Konten für die Anmeldung, so ist eine Anmeldung darüber nicht mehr möglich.

    Im Falle einer LocalDb muss man zumindest die Anlage über ein Windows Konto machen und entsprechende Rechte für den Zugriff auf die datenbank-Dateien einrichten sonst kann es naturgemäß nicht funktionieren.

    Das gilt im übrigen genauso für alle andere Programme. Auch ein MySql muss im Dateisystem eingerichtet werden. Ohne das kann es auf die Datenbankdateien (uam.) gar nicht zugreifen.

    Der Besitzer des Rechners ist somit am Ende immer der Herr über seinen Rechner (ausgenommen man sperrt ihn ganz aus).

    Im übrigen kann man Konfiguration- und Lizenzdaten über Verschlüsselung sichern - was vermutlich sogar (etwas) sicherer ist.  Denn wenn Dein Programm intern eine Anmeldung speichert, so kann man die rausfinden und sich Zugang auf die "gesicherten" Daten verschaffen.

    Gruß Elmar

    Mittwoch, 17. September 2014 10:07
  • Hallo,
     
    bei der "normalen" SQL oder SQL Express Installation gibt es die Möglichkeit, Applikationsrollen zu verwenden.
    Damit sollte Dein Szenario möglich sein. Wir setzen diese jedenfalls erfolgreich ein.
    Ob das mit der Local DB auch funktioniert entzieht sich meiner Kenntnis.
     
    HTH
    Grüße
    Jörg Schneider
     

    Jörg Schneider
    Donnerstag, 25. September 2014 07:06
  • Hallo Jörg,

    Szenario:

    Deine Anwendung verwendet eine SQL Express die auf einem Client installiert wird.

    Jetzt nimmt sich der Besitzer (ist ja Admin) des Clients (Privat-PC) ein Management-Studio und verbindet sich per Windows-Authentifizierung mit deiner Datenbank, dann ist er dort Admin da der SQL-Server ja lokal läuft.

    LocalDB ist da noch einfacher zu knacken, da diese unter dem jeweiligen User läuft.

    Gruß Ronny

    Donnerstag, 25. September 2014 14:02
  • Hallo Ronny,

    grundsätzlich stimmt das, dass MySQL nicht zugänglich ist per Windows Anmeldung. Du vergibst dort ein sicheres root Passwort oder/und legst einen Benutzer an. Der Dienst läuft dann unter dem lokalen System Konto. MySQL kann auch in Visual Studio eingebunden werden im Server Explorer -> allerdings nicht mit der Express Version von VS !

    Ob es jetzt sinnvoll ist für Anwendungs / Konfigurations / Lizenz Daten eine MySQL Datenbank zu installieren weiß ich nicht... (Installation ist zwar recht einfach aber muss eventuell ins Setup eingebunden werden... und MySQL braucht auch gewisse Ressourcen)

    Aber du hast dann ein weiteres Sicherheitsproblem denn du musst den Zugang zu MySQL (User, Passwort) ja auch in deiner Anwendung (sollte man nicht tun, gleich gar nicht in .NET) oder besser in einer verschlüsselten Datei lokal speichern...

    Fazit: dann kannst du auch gleich eine verschlüsselte Datei benutzen außer du hast zig tausende Anwendungsdaten die du sicher speichern musst. 

    Gruß


    Jens Gerber

    Donnerstag, 25. September 2014 22:15