So aktualisieren Sie die AD-Sicherheitsgruppe für SQL Server-Berechtigungen

12

Ich verwende SQL Server 2008 auf Small Business Server 2003; Client verwendet WinXP.

Ich habe meiner Active Directory-Sicherheitsgruppe einen Benutzer hinzugefügt. Warum kann dieser Benutzer nicht sofort auf die Datenbank zugreifen? Es scheint, dass es eine Verzögerung gibt, bevor der Benutzer in SQL Server erkannt wird.

Ich verwende AD-Sicherheitsgruppen ausdrücklich für Berechtigungen, damit ich keine einzelnen Benutzer in SQL Server hinzufügen muss. Im Endeffekt muss ich nichts weiter tun, als den Benutzer zur AD-Sicherheitsgruppe hinzuzufügen, um Zugriff zu gewähren.

Aber aus irgendeinem Grund erkennt SQL Server den Zusatz nicht sofort. Ich habe das schon einige Male gesehen. Ich füge den Benutzer der Gruppe hinzu, aber dieser Benutzer kann erst am nächsten Tag auf Daten zugreifen. Es scheint, dass Active Directory nicht in Echtzeit abgefragt wird. Können Sie das bestätigen?

Was muss ich tun, damit SQL Server die Liste der Benutzer aus Active Directory "aktualisiert"?

D_Bester
quelle
In SQL Server 2008 Management Studio habe ich eine Serveranmeldung mithilfe der Sicherheitsgruppe hinzugefügt und in der Datenbank einen Benutzer erstellt, der dieser Anmeldung zugeordnet ist. Das funktioniert super!
D_Bester
Nachdem ich der Sicherheitsgruppe einen neuen Benutzer hinzugefügt hatte, konnte er jedoch nicht auf die angegebene Datenbank zugreifen. Dieser Benutzer hat über eine andere Gruppe Zugriff auf den Server. Daher hat das Testen der Verbindung zu SQL Server problemlos funktioniert. Ich habe eine Verbindung zu SQL Server für die Benutzer (auf ihrem Computer) hinzugefügt. Als ich die Datenbank spezifizierte, wollte ich, dass die Datenbank nicht verfügbar war.
D_Bester
Überprüfung verschiedener Domänencontroller Ich sehe, dass die Replikation zwar nach 15 Minuten abgeschlossen ist, SQL jedoch den neuen Benutzer der AD-Gruppe ignoriert. Durch einen Neustart des SQL-Servers wird das Problem behoben, und es wird 24 Stunden gewartet. Muss ein besserer Weg sein.
Aaron Auseth

Antworten:

12

Der Benutzer muss sich von seiner Workstation abmelden und wieder anmelden. Aus diesem Grund scheinen die Änderungen am nächsten Tag wirksam zu werden. Der Grund dafür ist, dass der Benutzer beim Anmelden am nächsten Tag ein neues Token vom Domänencontroller erhält und dieses Token die Liste der Domänengruppen enthält, denen er angehört. Dieses Token mit der Liste der Domänengruppen wird nur aktualisiert, wenn sich der Benutzer bei seinem Computer anmeldet. Wenn sich der Benutzer also nie abmeldet, wird das Token nie aktualisiert.

Es gibt auch Verzögerungen bei der Domänenreplikation an mehreren Standorten, die berücksichtigt werden müssen, wenn sich Ihre Domänencontroller an verschiedenen physischen Standorten befinden.

mrdenny
quelle
1
Gibt es einen Befehl oder ein Skript, das auf der Workstation ausgeführt werden kann, um das AD-Token zu "aktualisieren", damit der Benutzer weiß, dass er jetzt Mitglied der neuen Domänengruppe ist, und um so die Verzögerung zu vermeiden? --Aktualisierung: Anscheinend hat eine Person dies klist purgeunter dba.stackexchange.com/a/44922/29371 empfohlen , jedoch mit dem Vorbehalt, dass andere zwischengespeicherte Ressourcenzugriffe, mit denen der Benutzer erneut eine Verbindung herstellen müsste, möglicherweise unterbrochen werden .
NateJ
@mrdenny Empfehlungen zur Vorgehensweise für Dienstkonten? Wir führen alle SQL-Instanzen unter Dienstkonten aus und verwenden diese Dienstkonten für Verbindungen zwischen SQL-Servern und für SSRS usw. Zu einem bestimmten Zeitpunkt bestehen viele Verbindungen zwischen Computern. Wir können nicht wirklich alle Verbindungen trennen und uns irgendwo neu anmelden, um neue AD-Gruppeninformationen zu erhalten.
SomeGuy
Für Dienstkonten können Sie lediglich den Dienst auf dem Computer neu starten, der die neuen Rechte benötigt.
Mrdenny
5

Wenn sich ein Benutzer anmeldet, wird ihm ein Sicherheitstoken zugewiesen, das alle Informationen zu seiner Gruppenmitgliedschaft enthält.

Dieses Token bleibt so lange bestehen, bis sich der Benutzer abmeldet - und zu diesem Zeitpunkt wird es verworfen -, auch wenn Sie in der Zwischenzeit Änderungen an der Gruppenmitgliedschaft in AD vornehmen. Die von Ihnen vorgenommenen Änderungen werden erst wirksam, wenn sich der Benutzer das nächste Mal anmeldet und ein neues Sicherheitstoken erhält.

Sie können dasselbe Szenario reproduzieren, wenn Sie beispielsweise Berechtigungen für ein Dateisystem zuweisen. Es ist ein AD-Verhalten, kein SQL Server-Verhalten.

Jon Seigel
quelle
1

Das heißt, Sie erhalten sofort neue Anmeldeinformationen, wenn Sie ein cmd / script wie folgt ausführen:

runas /netonly /user:domain\username "sqlcmd -S serverName -d dbname -q \"insert into testpermissions values (65)\""

mit cmd.exe (nicht Powershell, ich konnte das Zitat nicht richtig verstehen).

Auf diese Weise erhalten Sie jedes Mal ein neues Token (müssen aber Ihr Passwort eingeben). Sie könnten wahrscheinlich auch etwas mit einem gespeicherten Passwort-Text machen, wenn die Dinge zu lästig wären.

Sowieso arbeitet für mich und ich hoffe, dass es jemand anderem hilft.

Karl
quelle