it-swarm-eu.dev

Wie ordne ich in SQL Server 2008 einen gesamten Sicherheitszugriff für Active Directory-Gruppen zu?

Ich möchte integrierte Sicherheit für meine interne Anwendung verwenden, die sich alle in einer Domäne befindet. Leider habe ich es nie geschafft, dass dies gut funktioniert. Ich möchte einer gesamten Exchange-Gruppe (Active Directory) eine Rolle in SQL Server für den Lese-/Schreibzugriff auf bestimmte Tabellen zuweisen. Auf diese Weise müsste ich keinen Operator erstellen, wenn jemand eingestellt wird, oder einen Operator löschen, wenn jemand gefeuert wird. Ist das möglich? Welche Schritte würde ich dazu unternehmen?

40
  • Legen Sie die AD-Gruppe als Login fest. Und "Login" bedeutet Login auf Serverebene, nicht das AD-Konzept von Benutzer/Login. In SQL Server ist dies ein Prinzipal auf Serverebene
  • Erstellen Sie einen zugeordneten Benutzer in. Sie sollten einen Benutzer nicht direkt für Tabellen zulassen. Und "Benutzer" bedeutet Datenbankbenutzer, nicht das AD-Konzept des Benutzers: In SQL Server ist dies ein "Prinzipal auf Datenbankebene".
  • Benutzer zur Rolle hinzufügen (auch ein "Principal auf Datenbankebene")
  • GRANT-Berechtigungen für die Rollen in den Tabellen (eine Tabelle oder ein Prozess usw. ist "sicher")

Beispielskript

USE master;
GO
CREATE LOGIN [MYDOMAIN\APPLICATION SUPPORT] FROM WINDOWS;
GO
USE mydb;
GO
CREATE USER [MYDOMAIN\APPLICATION SUPPORT] FROM LOGIN [MYDOMAIN\APPLICATION SUPPORT];
GO
CREATE ROLE rSupport;
GO
EXEC sp_addrolemember 'rSupport', 'MYDOMAIN\APPLICATION SUPPORT';
GO
GRANT SELECT, INSERT,UPDATE, etc ON Mytable TO rSupport;
GO

sp_addrolemember ist ab SQL Server 2012 veraltet, wobei ALTER ROLE sollte stattdessen verwendet werden.

50
gbn

Von marc_s Antwort "Hinzufügen einer Active Directory-Benutzergruppe als Anmeldung in SQL Server" :

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

enter image description here

Wählen Sie dann im daraufhin angezeigten Dialogfeld die Objekttypen aus, die Sie sehen möchten (Groups ist standardmäßig deaktiviert - überprüfen Sie es!), Und wählen Sie den Ort aus, an dem Sie nach Ihren Objekten suchen möchten (z. B. verwenden Sie Entire Directory) Und finden Sie dann Ihre AD-Gruppe.

enter image description here

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.

5
Even Mien

Das Gewähren der Berechtigungen in SQL Server für eine AD-Gruppe ist relativ einfach. Dies kann entweder über T-SQL oder Management Studio erfolgen.

Wenn Sie beispielsweise eine AD-Gruppe mit dem Namen MYDOMAIN\APPLICATION SUPPORT Haben, erstellen Sie die Anmeldung auf Serverebene und verwenden dann Zuordnungen zu einzelnen Datenbanken, um etwas detailliertere Berechtigungen wie den Datenleser zu erteilen.

Im Idealfall sollte der gesamte Anwendungszugriff über gespeicherte Prozeduren * erfolgen. Daher sind nur Berechtigungen für diese gespeicherten Prozeduren in dieser Datenbank erforderlich.

* Unter Sicherheitsgesichtspunkten können Sie, um einem bestimmten Benutzer das Anzeigen bestimmter Daten zu ermöglichen, eine Prozedur erstellen und dem Benutzer die Berechtigung execute für diese Prozedur erteilen, und sonst nichts. Wenn der Benutzer direkt abfragen darf, muss er select für alle beteiligten Tabellen die Berechtigung erteilen. Es ist auch einfacher, mit Prozeduren zu arbeiten und einfacher zu debuggen.

Gespeicherte Prozeduren abstrahieren den Tabellenzugriff und beschränken den Zugriff. Für DBA-Typen ist es wie "Lassen Sie mich alle Ihre Instanzvariablen sehen: Ich möchte keine Methoden, Getter oder Setter verwenden".

4
Peter Schofield

Wenn der Benutzer Mitglied einer DOMAIN\SecurityGroup ist, die über die Berechtigung Sysadmin in SQL verfügt, wird diese beim Zugriff auf Datenbanken verwendet. Andernfalls müssen Sie sich ansehen, welche DOMAIN\SecurityGroup (s) in jeder Datenbank die Berechtigung erhalten haben. Wenn der Benutzer Mitglied von 2 Sicherheitsgruppen ist, wobei SecGroupA über die Berechtigung zum Auswählen und SecGroupB über die Berechtigung zum Einfügen verfügt, kann der Benutzer auswählen und einfügen.

1
Piyush Agrawal