2017-02-24 3 views
0

Wir richten ein neues Anwendungsframework ein und wir fragen uns, welche Best Practices für die Einrichtung der Datenbanksicherheit für unsere Benutzer gelten. In unserem alten Framework gab es einen Benutzeranmeldeprozess und sobald der Benutzer angemeldet war, kontrollierte das Framework, welche Formulare und Menüoptionen einem Benutzer erlaubt waren. Alle Benutzer haben mit demselben Benutzerkonto auf die Datenbank zugegriffen.Best Practices für die Anwendungssicherheit mit MSSQL

Der Nachteil dieses Ansatzes besteht darin, dass Sie SYSTEM_USER nicht verwenden können, um herauszufinden, wer eine bestimmte Datenbankanforderung erstellt.

Das neue Framework hat immer noch ein Anmeldeformular und es wird gesteuert, auf welche Menüoptionen eine Person zugreifen kann. Sollten wir jedes Mal, wenn ein neuer Benutzer unserer Anwendung hinzugefügt wird, ein Datenbankbenutzerkonto einrichten? Würde dies Lizenzprobleme verursachen, da Sie das Verbindungs-Pooling nicht nutzen können?

Antwort

0

Es wird keine Lizenzprobleme verursachen, aber es wird eine große Anzahl von Verbindungen generieren, die zu Leistungsproblemen führen können.

Eine bessere Lösung wäre es, Ihren gespeicherten Prozeduren einen Parameter hinzuzufügen, um die Benutzer-ID des aktuellen Benutzers zu übergeben, damit er protokolliert werden kann.

Wenn die Übergabe des Parameters nicht erwünscht ist, können Sie den aktuellen Benutzer in CONTEXT_INFO() versetzen, oder wenn Sie SQL 2016, SESSION_CONTEXT() verwenden, und von dort protokollieren. https://www.mssqltips.com/sqlservertip/4094/phase-out-contextinfo-in-sql-server-2016-with-sessioncontext/

+0

Danke Phil für Ihre Antwort. Genau der Rat, nach dem ich gesucht habe –