Frage

Ich bin auf der Suche nach einer best practice für End-to-End-Authentifizierung für interne Web-Anwendungen für die Datenbank-layer.

Das häufigste Szenario, das ich gesehen habe, ist die Verwendung einer einzigen SQL-Konto mit den Berechtigungen festgelegt, was für die Anwendung erforderlich sind.Dieses Konto wird durch alle Anwendung aufruft.Dann, wenn Menschen benötigen Zugang über die Datenbank via Abfrage-tools oder-wie eine separate Gruppe erstellt, die die Abfrage der Zugriff und die Menschen haben Zugang zu dieser Gruppe.

Das andere Szenario, das ich gesehen habe, ist zu verwenden, führen Sie die Windows-Authentifizierung, Ende-zu-Ende.So, dass die Benutzer sich zu Gruppen Hinzugefügt werden, die alle Berechtigungen, die festlegen, sodass der Benutzer ist in der Lage zu aktualisieren und zu ändern, die außerhalb der Parameter der Anwendung.Dies ist in der Regel mit Menschen zu sichern unten, um die entsprechenden gespeicherten Prozeduren, so dass Sie nicht die Aktualisierung der Tabellen direkt.

Das erste Szenario scheint relativ leicht zu pflegen, aber Anlass zur Besorgnis, wenn es eine Sicherheitslücke in der Anwendung dann die gesamte Datenbank kompromittiert ist.

Das zweite Szenario scheint mehr sicher, aber hat das Gegenteil Sorge, dass zu viel Geschäftslogik in gespeicherten Prozeduren in der Datenbank.Dies scheint zu begrenzen, die Verwendung, die einige wirklich Coole Technologien wie Nhibernate und LINQ.Aber in diesem Tag und Alter, wo die Menschen über Daten, die in so viele verschiedene Möglichkeiten, die wir nicht vorhersehen z.B.mash-ups usw. ist dies der beste Ansatz.

War es hilfreich?

Lösung

Dale - genau Das ist es.Wenn Sie wollen, um den Zugriff auf die zugrunde liegenden Daten speichern, um diese Benutzer dann tun Sie es, über services.Und in meiner Erfahrung, ist es die erfahrene computer-Anwender kommen aus der Uni/Hochschule, die Schäden, die Dinge am meisten.Wie das Sprichwort sagt, Sie wissen gerade genug, um gefährlich sein.

Wenn Sie wollen zu automatisieren, gehört zu Ihrem job, und Sie können Sie anzuzeigen Sie haben die erforderlichen Kenntnisse, dann gehen Sie vor, gewähren Ihren domain-Konto der Zugriff auf das backend.So alles, was Sie tun, über Ihre kleinen VBA-Automatisierung ist gebunden zu Ihrem Konto haben und Sie genau wissen, wer zu gehen, Sie anzuschauen, wenn Sie die Daten wird abgespritzt.

Meine grundlegende Punkt ist, dass die Datenbank der sprichwörtliche Heilige Gral der Anwendung.Sie möchten als paar Finger in einer besonderen Torte wie möglich.

Als Berater, wenn ich höre, dass jemand erlaubt normalen Benutzern in der Datenbank, meine Augen Leuchten, weil ich weiß, dass es geht, um am Ende ein großer Gehaltsscheck für mich, wenn ich gerufen werde, um es zu beheben.

Andere Tipps

Persönlich, ich will nicht normal end-Benutzer in der Datenbank.Für eine intranet-Anwendung (vor allem eine, die sich auf eine Domäne) ich würde ein einzelnes Konto für die Anwendung Zugriff auf die Datenbank, die nur diejenigen Rechte, die erforderlich sind für die Funktion der Anwendung.

Zugriff auf die Anwendung gesteuert werden, der über die domain-Konto (schalten Sie den anonymen Zugriff in IIS, etc.).

WENN ein Benutzer benötigt, und rechtfertigen können, den direkten Zugriff auf die Datenbank haben, dann sind Ihre domain-Konto wäre der Zugang zu der Datenbank, und Sie können sich in der DBMS mit den entsprechenden Werkzeugen.

Ich habe schon verantwortlich für die Entwicklung mehrere interne web-Anwendungen, die über das vergangene Jahr.

Unsere Lösung war die Verwendung der Windows-Authentifizierung (Active Directory oder LDAP).

Unser Ziel war lediglich damit eine einfache Anmeldung mit einer bestehenden Unternehmens-ID/Passwort.Wir wollten auch sicherstellen, dass der bestehende Abteilung wäre immer noch verantwortlich für die überprüfung und Verwaltung der Zugriffsberechtigungen.

Ich kann zwar nicht Antwort das argument über Nhibernate LINQ, es sei denn, Sie haben eine bestimmte killer-feature, die diese Dinge umsetzen kann, Active Directory oder LDAP, sind einfach zu implementieren und zu pflegen, dass es einen Versuch Wert.

Ich Stimme mit Stephen Wrighton.Domain security ist der Weg zu gehen.Wenn Sie verwenden möchten, mashups und was nicht, können Sie setzen Teile der Datenbank über eine maschinenlesbare RESTful-Schnittstelle. SubSonic hat man Baujahr.

Stephen - Halten normalen end-Benutzer aus der Datenbank ist schön, aber ich Frage mich, ob in diesem Tag und Alter, mit so vielen erfahrenen computer-Nutzer kommen aus der Universität / Hochschule, ob dies der richtige Weg ist.Wenn jemand will, um zu automatisieren, gehört zu Ihrem job, die enthält ein VBA-Aktualisierung einer Datenbank, die ich Ihnen erlauben, über der normalen Anwendung sind wir zu verlieren Gewinne durch Einschränkung der Zugang in diese Weise.

Ich denke, die anderen Pfad impliziert ist hier konnten Sie eröffnen die Anwendung über die Dienstleistungen und sichern Sie dann diejenigen Dienste, die über Gruppen und immer noch halten die Benutzer getrennt von der Datenbank.

Dann über die Delegierung können Sie Abteilungen, um den Zugriff auf Ihre eigenen Konten über die Gruppen wie pro Jonathan s post.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top