Ich bin auf der Suche nach einer Best Practice für End-to-End-Authentifizierung für interne Web-Anwendungen auf der Datenbank-Ebene.Datenbankauthentifizierung für Intranet-Anwendungen
Das häufigste Szenario, das ich gesehen habe, ist die Verwendung eines einzelnen SQL-Kontos mit den Berechtigungen, die auf die Anforderungen der Anwendung festgelegt sind. Dieses Konto wird von allen Anwendungsaufrufen verwendet. Wenn dann Personen über Abfragetools Zugriff auf die Datenbank benötigen oder eine separate Gruppe mit dem Abfragezugriff erstellt wird, erhalten die Benutzer Zugriff auf diese Gruppe.
Das andere Szenario, das ich gesehen habe, ist die vollständige Windows-Authentifizierung Ende-zu-Ende verwenden. Daher werden die Benutzer selbst zu Gruppen hinzugefügt, die über alle Berechtigungen verfügen, sodass der Benutzer außerhalb der Parameter der Anwendung aktualisieren und ändern kann. Dies beinhaltet normalerweise, dass Benutzer an die entsprechenden gespeicherten Prozeduren gesichert werden, damit sie die Tabellen nicht direkt aktualisieren.
Das erste Szenario scheint relativ einfach zu warten, gibt aber Anlass zu Bedenken, wenn die Sicherheitslücke in der Anwendung besteht und die gesamte Datenbank kompromittiert wird.
Das zweite Szenario scheint sicherer zu sein, hat aber das gegenteilige Problem, zu viel Geschäftslogik in gespeicherten Prozeduren auf der Datenbank zu haben. Dies scheint die Verwendung einiger wirklich cooler Technologien wie Nhibernate und LINQ zu begrenzen. In der heutigen Zeit, in der Menschen Daten auf so viele unterschiedliche Arten verwenden können, sehen wir z.B. Mash-Ups usw. ist dies der beste Ansatz.