Wie behandelt SQL Server Anmeldungen, wenn eine Mehrdeutigkeit vorliegt, z. B. Logins für das Windows-Benutzerkonto und für eine AD-Gruppe, die diesen Benutzer enthält?Berechtigungen auf Datenbankebene für einen Windows-Benutzer mit einer Anmeldung, die sowohl für den Benutzer als auch für die AD-Gruppe erstellt wurde?
Wir hatten ein kleines Problem mit Berechtigungen in SQL Server 2008 mit Windows-Benutzern aus unserem Active Directory und Gruppen aus diesem AD. Ich werde versuchen, es mit einem Beispiel zu erklären.
Stellen Sie sich einen Windows-Domänenbenutzer DOMAIN\myUser
vor, der zu einer AD-Gruppe DOMAIN\SomeGroup
gehört.
In SQL Server habe ich 2 Datenbanken SomeAppDb
und PublicDb
.
Das Ziel ist es, dass alle Benutzer, die Mitglieder DOMAIN\SomeGroup
sind sollten in der Lage sein PublicDb
zugreifen, aber nur DOMAIN\myUser
sollte SomeAppDb
zugreifen können.
in SQL Server zunächst eine Windows-Anmeldung DOMAIN\SomeGroup
(zu der AD-Gruppe abgebildet) wurde auf der Instanz erstellt, und ein Benutzer in der Datenbank PublicDb
mit dem richtigen Rollenmitgliedschaft geschaffen, und das hat gut funktioniert, können Benutzer aus Gruppe SomeGroup
konnte greifen Sie auf die Daten zu, die sie in PublicDb
benötigten.
Für die Bedürfnisse einer neuen Anwendung wollten wir dem Benutzer DOMAIN\myUser
expliziten Zugriff für db SomeAppDb geben, während weiterhin Zugriff auf PublicDb
möglich ist. Wir haben daher in SQL Server eine Windows-Anmeldung für DOMAIN\myUser
erstellt, und ein Benutzer in der Datenbank SomeAppDb
, mit einer Zuordnung zwischen dem 2.
Von diesem Moment erstellt, myUser SomeAppDb
zugreifen konnte, wie erwartet, konnte aber nicht mehr darauf zugreifen PublicDb
, und wir hatten einen Fehler wie:
Cannot open database "PublicDb" requested by the login. The login failed.
Login failed for user 'DOMAIN\myUser'
Meine Intuition sagt mir, dass, wenn der Benutzer die SQL Server-Instanz zugreift, SQL Server eine Anmeldung, die Spiele der Windows-Benutzer sieht und ignoriert die Anmeldung für eine Gruppe bestehenden, dass der Benutzer gehört. Ein Ansatz besteht darin, explizit den Zugriff auf die db PublicDb für den Benutzer myUser hinzuzufügen, aber ich würde diese Lösung lieber vermeiden, da sie PublicDb jedes Mal aktualisiert, wenn wir neuen Benutzern Zugriff gewähren wollen, was genau das ist, was wir vermeiden wollten zunächst ... (wir haben das als vorübergehende Lösung gemacht, in der Hoffnung, eine bessere Option zu finden).
Ist jemand anderes auf dieses Problem gestoßen? Gibt es einen besseren Ansatz?
Dank im Voraus
sollte meine Frage möglicherweise auf http://dba.stackexchange.com verschoben werden? – tsimbalar
Nur neugierig, ob Sie die Möglichkeit hatten, einen der vorgeschlagenen Tests zu testen und Dinge wie Gruppenzugehörigkeit usw. zu überprüfen? –
Die Dinge sind diese Woche verrückt geworden, aber ich hoffe, dass ich noch ein bisschen tiefer tauchen werde, noch vor Ende der Woche. Vielen Dank – tsimbalar