Hinzufügen einer Active Directory-Benutzergruppe als Anmeldung in SQL Server


108

Ich habe eine .net-Anwendung, die über die Windows-Authentifizierung eine Verbindung zum SQL Server herstellt.

Wir können die SQL Server-Authentifizierung in der Anwendung nicht verwenden. Wir haben dort viele Active Directory-Benutzer für unser Projekt. Wir müssen also für jeden Active Directory-Benutzer in SQL Server ein separates Anmeldekonto erstellen, anstatt für jeden AD-Benutzer ein separates Anmeldekonto zu erstellen. Gibt es eine Möglichkeit, die Active Directory-Benutzergruppe in SQL Server zu verwenden?

Antworten:


162

Gehen Sie in SQL Server Management Studio zu Object Explorer > (your server) > Security > Loginsund klicken Sie mit der rechten Maustaste New Login:

Geben Sie hier die Bildbeschreibung ein

Wählen Sie dann Groupsim daraufhin angezeigten Dialogfeld die Objekttypen aus, die angezeigt werden sollen (standardmäßig deaktiviert - aktivieren Sie diese Option!), Wählen Sie den Ort aus, an dem Sie nach Ihren Objekten suchen möchten (z. B. verwenden Entire Directory), und suchen Sie dann Ihre AD-Gruppe .

Geben Sie hier die Bildbeschreibung ein

Sie haben jetzt eine reguläre SQL Server-Anmeldung - genau wie beim Erstellen einer für einen einzelnen AD-Benutzer. Geben Sie diesem neuen Login die Berechtigungen für die benötigten Datenbanken, und los geht's!

Jedes Mitglied dieser AD-Gruppe kann sich jetzt bei SQL Server anmelden und Ihre Datenbank verwenden.


Gibt es eine Möglichkeit, Gruppen in MySQL wie oben zu erstellen?
uzay95

2
Vielen Dank für eine sehr klare Antwort mit kommentierten Screenshots! Ich wünschte, alle Antworten
wären

1
@ NickG: Ich habe das kostenlose Paint.NET verwendet , um das Bild zu laden und die abgerundeten roten Rechtecke einzufügen
marc_s

7
Das funktioniert bei mir nicht. Ich habe eine Windows-Gruppe "DataAccess", zu der "UserX" gehört. Ich habe eine Anmeldung für die DataAccess-Gruppe erstellt und die Benutzerzuordnung der Anmeldung so festgelegt, dass sie öffentlichen Zugriff, Datenleser- und Datenschreiberzugriff auf eine Datenbank hat. Der Benutzer kann sich nicht anmelden. Wenn ich den Benutzer speziell hinzufüge und genau dieselbe Zuordnungsberechtigung zuweise, kann er sich anmelden. Wenn ich auf Securables> Effektive Berechtigungen für die Gruppe klicke, wird "Kann nicht als Serverprinzipal ausgeführt werden" angezeigt Da der Principal 'GroupName' nicht beendet wird, kann dieser Prinzipaltyp nicht als Identitätswechsel angesehen werden, oder Sie haben keine Berechtigung. "
Triynko

1
@Tim: Der Name des Benutzers - es ist immer noch der Benutzer, der sich anmeldet - er hat nur keine direkte Berechtigung - als Benutzer - sondern als Mitglied dieser Gruppe mit Berechtigungen
marc_s

21

Sie können T-SQL verwenden:

use master
GO
CREATE LOGIN [NT AUTHORITY\LOCALSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO
CREATE LOGIN [NT AUTHORITY\NETWORKSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName

Ich verwende dies als Teil der Wiederherstellung vom Produktionsserver zur Testmaschine:

USE master
GO
ALTER DATABASE yourDbName SET OFFLINE WITH ROLLBACK IMMEDIATE
RESTORE DATABASE yourDbName FROM DISK = 'd:\DropBox\backup\myDB.bak'
ALTER DATABASE yourDbName SET ONLINE
GO
CREATE LOGIN [NT AUTHORITY\LOCALSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO
CREATE LOGIN [NT AUTHORITY\NETWORKSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO

Bei deutschem oder französischem Windows müssen Sie den lokalisierten Namen der Dienste verwenden. Weitere Informationen finden Sie unter Erstellen einer SQL Server-Anmeldung für ein Dienstkonto unter nicht englischem Windows.


Für den Fall, dass Sie auch die Anmeldung / den Principal auf Datenbankebene festlegen müssen, ist hier eine weitere Antwort, die ich nützlich fand. Dba.stackexchange.com/a/2578/60876
Agostino

Ich frage mich, ob dies verwendet werden kann, um einer bestimmten Active Directory-Gruppe Lesezugriff auf ein bestimmtes Schema zu gewähren. In Pseudo-SQL müssen CREATE LOGIN ... WITH DEFAULT_SCHEMAdie Punkte ... auf eine bestimmte Anzeigengruppe verweisen. Wir haben mehrere Gruppen und möchten einer Active Directory-Gruppe accountantsZugriff auf Schema ´A´ gewähren, nicht jedoch auf Schema ´B´ und ´C´. Ebenso sollte die Gruppe "Abrechnung" nur Zugriff auf das Schema "B" haben. Als Frontend verwenden wir MSFT Access.
Surfmuggle

0

Gehen Sie zu SQL Server Management Studio, navigieren Sie zu Sicherheit, gehen Sie zu Anmeldungen und klicken Sie mit der rechten Maustaste darauf. In einem Menü wird eine Schaltfläche mit der Aufschrift "New Login" angezeigt. Dort können Sie Benutzer und / oder Gruppen aus Active Directory zu Ihren SQL Server- "Berechtigungen" hinzufügen. Hoffe das hilft


0

Hier ist meine Beobachtung. Ich habe eine Anmeldung (schreibgeschützt) für ein Benutzerkonto für Gruppenfenster (AD) erstellt, die jedoch auf verschiedenen SQL-Servern trotzig funktioniert. Auf den SQl-Servern, auf denen Benutzer die von mir hinzugefügten Datenbanken nicht sehen können, wurde die Ansichtsdefinition überprüft und der Masterdatenbank eine Berechtigung zum Ausführen der Datenbank erteilt, um Fehler 229 zu vermeiden. Dieses Problem tritt nicht auf, wenn ich eine Anmeldung für einen Benutzer erstelle.


Das hätte kommentiert werden können, anstatt eine Antwort zu verwenden. Aber du kannst noch keinen Kommentar abgeben. Also nicht haha ​​^^
finnmglas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.