OK, ich bin’s leid. Gestern ist mir bei der Installation unserer eigenen Software die ich-weiß-nicht-wievielte Software-Installation bei einem unserer Kunden begegnet, bei der die Benutzer einer Active Directory-Domäne eines kleinen Netzwerkes gezwungen waren, mit vollständigen Admin-Rechten zu arbeiten. Und wieder einmal wahrscheinlich deshalb, weil die Softwareentwickler selbst “nur” mit Admin-Rechten entwickelt haben, und bei der Installation erstaunt waren, dass ihre Software beim ersten Probelauf auf den Kunden-Clients massive Probleme hatten, eine Verbindung zum Datenbankserver aufzubauen.

Zeit also, mal ein paar Worte darüber zu verlieren, wie man es am besten machen sollte. Die entsprechenden Benutzerrechte auf einem SQL Server einzurichten, damit der Zugriff aus einer Software heraus auch ohne Admin-Rechte funktioniert, ist nämlich wirklich leicht.

Bevor wir uns mit diesem eigentlichen Thema beschäftigen, sei mir vielleicht eine der wenigen goldenen Regeln zu nennen gestattet, die sich daraus ableiten:

Bitte niemals mit Administrator-Rechten Software entwickeln!

Damit verlagern Sie nämlich das Lösen solcher Probleme auf den richtigen Zeitpunkt: auf die Entwicklungsphase…

Doch zum Thema:

Normalsterbliche Benutzer einer Domäne haben standardmäßig keinen Zugriff auf eine SQL Server-Instanz, der in einer Domäne zur Verfügung steht. Innerhalb einer SQL Server-Instanz müssen die entsprechenden Benutzer der Domäne einerseits über die Berechtigungen verfügen, auf die Instanz, und über eine weitere Berechtigung auf die entsprechende Datenbank zuzugreifen.

Jedem einzelnen Benutzer diese Berechtigungen zu erteilen, wäre eine nicht nur langwierige sondern auch sehr langweilige Aufgabe, und da Softwareentwickler in der Regel wenn schon nicht faul, so doch zumindest sehr bequem sind, gibt’s eine große Erleichterung:

1. Erstellen einer Sicherheitsgruppe in Active Directory

In der Regel liefern Sie eine Software, die in einem Unternehmen oder einer Abteilung verwendet wird, nicht nur auf einem, sondern für mehrere Anwender auf mehreren Rechnern aus. Es macht also Sinn, diese Anwender in einer Active Directory-Sicherheitsgruppe zusammenzufassen, und dann diese Sicherheitsgruppe der SQL Server-Instanz (und der oder den entsprechenden Datenbanken) bekannt zu machen.

Sollten dann später weitere Benutzer hinzukommen, die ebenfalls die Berechtigungen erhalten sollen, auf die SQL Server-Instanz bzw. die Datenbank(en) zugreifen zu können, reicht es, diese lediglich der entsprechenden Sicherheitsgruppe im Active Directory hinzuzufügen. SQL Server brauchen Sie dazu noch nicht einmal mehr anzupacken.

Auf dem Active Directory Domänen-Controller legen Sie also als erstes eine neue Sicherheitsgruppe an, und fügen dieser die Benutzer hinzu, die später auf die SQL Server-Instanz zugreifen dürfen.

Übrigens: Ob es sich dabei um eine der SQL Express-Versionen oder eine Vollversion von SQL Server, oder eine 2005er oder eine 2008er-Version handelt, ist egal. Die Vorgehensweise ist prinzipiell dieselbe.

  • Starten die Benutzerverwaltung auf dem Domänen-Controller.
  • Öffnen Sie den Zweig der Domäne in der Hierarchielistendarstellung.
  • Öffnen Sie das Kontext-Menü der Benutzer (Users), wählen Sie Neu (New) und Gruppe (Group).

SQLBerechtigungen01

Hinweis: Fragen Sie mich nicht, warum wir auf unserem Domänen-Controller einen Mischmasch aus englischer und deutscher Benutzeroberfläche haben, wie hier auf den Bildern zu sehen. Ich weiß es nämlich nicht. Falls Sie es wissen, verraten Sie es mir doch einfach unter klaus_at_loeffelmann.de! :-)

  • Tragen Sie im Dialog, der jetzt erscheint, den Namen der neuen Sicherheitsgruppe ein, und wählen Sie Sicherheit als Gruppentyp (siehe Abbildung).

SQLBerechtigungen02

  • Suchen Sie die neu angelegte Gruppe anschließend in der Liste, und wählen Sie aus dem Kontextmenü Eigenschaften (Properties).
  • Auf der Registerkarte Mitglieder des Dialogs, der jetzt erscheint, wählen Sie Hinzufügen (Add).

SQLBerechtigungen03

  • Geben Sie nacheinander die Namen der Benutzer ein (Vor- oder Nachnamen reichen in der Regel), denen Zugriff auf die SQL Server-Instanz/-Datenbank gewährt werden soll. Mit einem Klick auf Namen überprüfen werden die Domänen-konformen Namen angezeigt (so es sie denn gibt).

SQLBerechtigungen04

  • Verlassen Sie den Dialog anschließend mit OK.

2. Einrichten der SQL Server-Berechtigungen für die AD-Sicherheitsgruppe

Als nächstes machen Sie die gerade angelegte Sicherheitsgruppe der SQL Server-Instanz bekannt. Damit das auf die hier beschriebene Weise funktioniert, muss der Server, auf dem die SQL Server-Instanz eingerichtet ist, natürlich ebenfalls Mitglied der Domäne sein.

HINWEIS: Den folgenden Vorgang brauchen Sie nicht auf der Maschine durchzuführen, auf dem die SQL Server-Instanz installiert wurde; es reicht, wenn Sie ihn von einem Computer des Netzwerkes durchführen, auf dem das SQL Server Management Studio installiert ist. WICHTIG: Für diesen Vorgang benötigen Sie allerdings Administratorrechte.

  • Melden Sie sich an der entsprechenden SQL Server-Instanz an.
  • Öffnen Sie den Zweig der Instanz, und weiter den Zweig Sicherheit.

SQLBerechtigungen05

  • Rufen Sie das Kontext-Menü des Zweigs Anmeldungen auf, und wählen Sie aus dem Menü Neue Anmeldung.

SQLBerechtigungen06

  • Im Dialog, den Ihnen Management Studio nun präsentiert, klicken Sie zunächst auf die Schaltfläche Objekttypen. Management Studio zeigt Ihnen jetzt eine Liste mit den Objekttypen, die bei der Suche berücksichtigt werden sollen.

 SQLBerechtigungen07

  • Hier ist es wichtig, den Objekttyp Gruppen mit in der Suche zu berücksichtigen. Diesen Schritt zu versäumen, ist ein häufiger Fehler, denn er verhindert, dass Sie die Gruppe, die Sie gerade im Domänen-Controller angelegt haben, überhaupt in der Objektliste finden werden.
  • Verlassen Sie, nachdem Sie das entsprechende Häkchen gesetzt haben, diesen Dialog mit OK.
  • Klicken Sie anschließend im Ausgangsdialog auf die Schaltfläche Pfade.

SQLBerechtigungen08

  • Im Dialog, der jetzt erscheint, bestimmen Sie, in welcher Domäne die Suche nach den gewünschten Objekttypen stattfinden soll. Standardmäßig ist hier der “Domänenname” der lokalen Maschine ausgewählt. Auch diese Voreinstellung müssen Sie ändern, denn die angelegte Sicherheitsgruppe befindet sich in der Domäne, die natürlich von dieser Instanz des SQL Servers aus verfügbar ist. Öffnen Sie also den Zweig Gesamtes Verzeichnis, und wählen Sie die entsprechende Domäne aus, die Ihre Sicherheitsgruppe enthält.
  • Verlassen Sie auch diesen Dialog wieder mit OK.
  • Anschließend können Sie im Ausgangsdialog einige Zeichen des Namens der Sicherheitsgruppe im Feld Objektnamen eingeben und anschließend auf Namen überprüfen klicken. Management Studio Express zeigt Ihnen nun eine Liste der in Frage kommenden Objekttypen an.

SQLBerechtigungen09

  • Ihre zuvor angelegte Sicherheitsgruppe sollten Sie im Dialog, der jetzt erscheint, finden und auswählen können.
  • Bestätigen Sie die Auswahl abermals mit OK.

SQLBerechtigungen10

  • Überprüfen Sie, ob der gewünschte Objekttyp ordnungsgemäß eingetragen wurde (siehe oben stehende Abbildung), und verlassen Sie den Auswahldialog ebenfalls mit OK.

SQLBerechtigungen11

  • Zurück im Hauptdialog können Sie optional die Standarddatenbank der Gruppe bestimmen. Orientieren Sie sich dazu an der oben stehen Grafik.
  • Wenn Sie Ihre Auswahl getroffen haben, wechseln Sie zur Seite Benutzerzuordnung des Hauptdialogs (siehe folgende Grafik).

SQLBerechtigungen12

  • Wählen Sie unter Benutzer, die dieser Anmeldung zugeordnet sind die entsprechende Datenbank aus, und im darunter liegenden Bereich Mitgliedschaft in Datenbankrolle für: [Ihre Datenbank] die Rolle db_owner.
  • Verlassen Sie den Dialog mit OK. Das Einrichten der Sicherheitsgruppe für die Instanz und die entsprechende Datenbank wird damit gestartet.

Im folgenden sollten Sie in der Lage sein, eine Verbindung im Kontext des Benutzers zur entsprechenden SQL Server-Instanz aufzubauen, der sich in der Sicherheitsgruppe befindet.

Sollten es weiteren Benutzer der Domäne gestattet werden, beispielsweise über Ihre Software, auf die SQL Server-Instanz zuzugreifen, fügen Sie sie einfach der Sicherheitsgruppe hinzu, wie im ersten Schritt dieser Anleitung beschrieben.

TIPP: Falls Sie für Ihre Software herausbekommen möchten, ob ein bestimmter Benutzer einer Sicherheitsgruppe der Domäne angehört, um schon im Vorfeld (also noch vor der Anmeldung an den SQL Server) herauszufinden, ob er dazu überhaupt berechtigt ist, dann lesen Sie einfach Jürgens Blogeintrag zu diesem Thema, den Sie an dieser Stelle finden.

Tags: , , | Categories: