Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 16 Sicherheit und Benutzerverwaltung Einer der Hauptgründe, warum Sie Access-Anwendungen mit einer SQL Server-Datenbank als Backend verwenden, ist die Sicherheit. In reinen Access-Anwendungen können Sie schlicht und einfach nicht sicherstellen, dass jeder Benutzer nur die für ihn vorgesehenen Daten einsehen oder bearbeiten darf. Darüberhinaus können Sie noch nicht einmal verhindern, dass Unbefugte sich Zugriff zu den in den Tabellen enthaltenen Daten verschaffen. Es gibt zwar noch die Möglichkeit, vollständige Datenbanken mit einem Kennwort vor dem Zugriff Unbefugter zu schützen, aber hier ist keine Vergabe differenzierter Berechtigungen möglich. SQL Server hingegen arbeitet mit einem mehrstufigen Sicherheitssystem. Nach der Authen­ti­ fi­zierung am SQL Server selbst erfolgt die Autorisierung an den jeweiligen Datenbanken. Der Benutzer verschafft sich dabei mit seinem Windows-Benutzerkonto oder einem SQL ServerBenutzerkonto Zugang zum SQL Server und erhält dort die vorgesehenen Berechtigungen für die einzelnen Datenbanken. Diese wiederum können sehr fein eingestellt werden. Doch eines nach dem anderen – in den nächsten Abschnitten lernen Sie die Grundlagen des Sicherheitssystems unter SQL Server kennen und erfahren, wie Sie dieses einrichten. 16.1 Sicherheit auf Server- und Datenbankebene Um mit den Daten einer Datenbank arbeiten zu können, müssen Sie durch zwei Türen. Die erste Tür ist die des SQL Servers und die zweite die der jeweiligen Datenbank. Der Vorgang ist vergleichbar mit den Türen eines Unternehmens. Stellen Sie sich vor, Sie besuchen einen Kunden. Der Besuch beginnt in der Regel am Empfang. Dort melden Sie sich an. Die freundliche Empfangsdame prüft Ihr Anliegen, indem Sie bei dem entsprechenden Mitarbeiter nachfragt, ob er Sie denn erwartet. Bejaht der Mitarbeiter diese Frage, werden Sie in der Regel höflich gebeten, kurz auf ihn zu warten. Nun haben Sie zwar Zutritt zum Unternehmen, aber noch keinen richtigen Zugang zu einer Abteilung. Im Vergleich mit der mehrstufigen Anmeldung beim SQL Server haben Sie Ihre Authentifizierung am SQL Server erfolgreich bestanden, eine Autorisierung an einer Datenbank steht aber noch aus. Die Autorisierung folgt direkt im Anschluss. In unserem Beispiel durch den Mitarbeiter des Unternehmens, der Sie mit in die Abteilung Einkauf nimmt. Dort sollen Sie Daten erfassen, ändern und löschen. In der Abteilung angekommen, haben Sie nun auch die Autorisierung bestanden. Die Autorisierung für die Abteilung Einkauf, in der Sie Daten ändern dürfen – oder im Fall des SQL Servers: die Autorisierung für die Datenbank Einkauf, in der Sie lesenden und schreibenden Zugriff auf die Daten haben. Nach der Mittagspause wechseln Sie zur Abteilung Personal. Dort erstellen Sie neue Auswertungen. Sie besitzen also noch eine weitere Autorisierung zu einer anderen Abteilung, dort allerdings Kapitel 16 Sicherheit und Benutzerverwaltung nur zum Lesen von Daten. Im Sinne vom SQL Server gibt es für Ihre Authentifizeriung auch eine Autorisierung an der Datenbank Personal, hier jedoch nur mit lesendem Zugriff. Das ist das Prinzip der SQL Server-Sicherheit. Mit einem Benutzerkonto erhalten Sie Zugang zum SQL Server – die sogenannte Anmeldung. Dieses Benutzerkonto kann einer oder mehreren Datenbanken zugeordnet sein – der Benutzer einer Datenbank. Eine Anmeldung kann als Benutzer in den jeweilis zugeordneten Datenbanken unterschiedliche Rechte haben. Wobei sich die Rechte sehr detailliert vergeben lassen: Sie können Daten lesen, ändern und löschen, Objekte erstellen, ändern und löschen sowie Objekte ausführen. Abbildung 16.1 zeigt dies schematisch. Abbildung 16.1: Das zweistufige Sicherheitskonzept beim SQL Server 16.2 Authentifizierung am SQL Server Zur Authentifizierung bietet SQL Server zwei Varianten an. »» Windows-Authentfizierung: Bei der Windows-Authentifizierung prüft SQL Server, ob es für den Benutzer, der vom lokalen oder einem entfernten Rechner auf den SQL Server zugreift, ein Benutzerkonto auf dem SQL Server gibt. Dabei handelt es sich um das Domänen- oder Arbeitsgruppen-Benutzerkonto, das dem SQL Server direkt oder auch indirekt über eine lokale Gruppe oder eine Domänengruppe zugeordnet ist. Die Windows-Authentifizierung erfordert also keine eigene Anmeldung am SQL Server. Die Anmeldung erfolgt direkt mit der Windows-Anmeldung. »» SQL Server-Authentifizierung: Bei der SQL Server-Authentifizierung prüft SQL Server den Zugriff ebenfalls über ein Benutzerkonto. Nur handelt es sich hierbei um ein Benutzerkonto, dass im SQL Server selbst verwaltet wird. Dazu muss das Benutzerkonto samt Kennwort im SQL Server anlegt werden. Die SQL Server-Authentifizierung erfordert immer eine Anmeldung am SQL Server – mit dem Benutzernamen und dem Kennwort. Auch das Benutzerkonto sa, das immer vorhanden ist (und tunlichst mit einem starken Kennwort versehen werden will), ist ein Benutzerkonto der SQL Server-Authentifizierung. 406 Benutzer und Benutzergruppen Die Windows-Authentifizierung ist die Standard-Authentifizierungsmethode. Diese kann bei der Installation oder auch nachträglich in den Eigenschaften der SQL Server-Instanz mit der SQL Server-Authentifizierung erweitert werden. 16.3 Benutzer und Benutzergruppen Wenn Sie eine Access/SQL Server-Anwendung installieren, müssen Sie die Berechtigungen der Benutzer oder Gruppen für die Objekte der jeweiligen Datenbanken festlegen. Je nach Größe des Unternehmens des Kunden finden Sie in dessen Netzwerk bereits Gruppen- und Benutzerkonten vor. Das heißt, dass für jeden Mitarbeiter ein unternehmensweites WindowsBenutzerkonto existiert. Außerdem gibt es verschiedene Windows-Benutzergruppen, welche die Benutzer enthalten und für die bestimmte Berechtigungen festgelegt wurden. Die Berechtigungen werden in der Regel auf Gruppenbasis vergeben, damit beim Ausscheiden oder Hinzukommen von Benutzern keine neuen Regeln für den jeweiligen Benutzer entfernt oder festgelegt werden müssen – der Benutzer wird einfach der Benutzergruppe entnommen beziehungsweise zu einer Benutzergruppe hinzugefügt, welche die entsprechenden Berechtigungen aufweist. Genauso sollten Sie auch beim SQL Server vorgehen – vorausgesetzt, dies ist beim Kunden nicht bereits so eingerichtet. Falls Sie das System neu aufsetzen (manchmal landet eine Anwendung ja auch auf einer eigenen SQL Server-Instanz), verwenden Sie die entsprechenden WindowsBenutzergruppen zur Authentifizierung – und keine einzelnen Windows-Benutzerkonten. Der Vorteil liegt auf der Hand. Sie ordnen die Windows-Benutzergruppen den einzelnen Datenbanken zu und vergeben dort die Berechtigungen. Dies spart nicht nur eine Menge Verwaltungsaufwand, denn in der Regel gibt es weniger Gruppen als Benutzer. Sie sparen auch eine doppelte Rechteverwaltung. Verwalten Sie die Windows-Benutzer einzeln, müssen Sie bei jeder personellen Änderung die Zuordnung des Benutzers zu den Datenbanken und den damit verbundenen Rechten anpassen. Eine personelle Änderung wird aber bereits auf der Systemebene durch den Systemadministrator verwaltet, indem dieser den Benutzer einer anderen Windows-Benutzergruppe zuordnet. Verwenden Sie im SQL Server lediglich die WindowsBenutzergruppe, wirken sich die Änderungen des Systemadministrators direkt auf die Rechte des Benutzers im SQL Server und den Datenbanken aus. Wechselt also ein Mitarbeiter von der Abteilung Einkauf in die Abteilung Personal, verschiebt der Systemadministrator das Windows-Benutzerkonto des Mitarbeiters in die WindowsBenutzergruppe Personal. Da diese Windows-Benutzergruppe im SQL Server der Datenbank Personal mit entsprechenden Rechten zugeordnet ist, hat der Mitarbeiter direkt auch alle notwendigen Rechte an der Datenbank Personal. 407 Kapitel 16 Sicherheit und Benutzerverwaltung Domäne oder keine Domäne Möchten Sie per Windows-Authentifizierung auf den SQL Server zugreifen, setzt dies eine Windows-Domäne voraus. Sie können sich nicht mit einem lokalen Windows-Benutzer oder einer Windows-Benutzergruppe an einen SQL Server auf einem anderen Rechner anmelden. Dies gelingt nur – wie in den folgenden Beispielen beschrieben – wenn der Benutzer am gleichen Rechner angemeldet ist, auf dem auch der SQL Server läuft. Verwendet der Kunde keine Domäne, bleibt Ihnen nur die SQL Server-Authentifizierung. Was zieht dies für die folgenden Beispiele nach sich? Lediglich den Hinweis, dass Sie, wenn das Testnetzwerk keine Domäne enthält, nur vom lokalen Rechner auf den SQL Server zugreifen können. Möchten Sie beispielsweise in Ihrem privaten Netzwerk von einem Rechner auf den SQL Server auf einem anderen Rechner zugreifen, müssen Sie die SQL Server-Authentifizierung verwenden. 16.4 Beispiel zum Einrichten der Sicherheit mit der Windows-Authentifizierung In den folgenden Abschnitten nehmen wir eine Beispielkonfiguration vor. Dabei erledigen wir folgende Schritte: »» Anlegen zweier Benutzerkonten unter Windows »» Anlegen zweier Windows-Benutzergruppen, denen je eines der neuen Benutzerkonten hinzugefügt wird »» Zuordnen der Windows-Benutzergruppen als Anmeldungen im SQL Server »» Zuordnen dieser neuen Anmeldungen zur Beispieldatenbank AEMA_SQL 16.5 Benutzer unter Windows anlegen Wenn Sie mit den nachfolgenden Beispielen experimentieren möchten, legen Sie zwei Benutzer auf Ihrem Windows-System an. Dazu gehen Sie wie folgt vor: »» Klicken Sie im Startmenü mit der rechten Maustaste auf den Eintrag Computer und wählen Sie den Eintrag Verwalten aus dem Kontextmenü aus. »» Öffnen Sie im nun erscheinenden Dialog den Ordner System|Lokale Benutzer und Gruppen. »» Wählen Sie am Ordner Benutzer den Kontextmenübefehl Neuer Benutzer... aus (siehe Abbildung 16.2). 408 Benutzer unter Windows anlegen »» Geben Sie die Benutzerdaten für den neuen Benutzer an (siehe Abbildung 16.3). »» Schließen Sie die Eingabe mit einem Klick auf Erstellen ab. Der Benutzer wird gespeichert und der Dialog Neuer Benutzer wird geleert, damit Sie weitere Benutzer anlegen können. Legen Sie gleich noch einen weiteren Benutzer namens Alfred Neumann an und schließen Sie den Dialog danach mit einem Klick auf Schließen. Abbildung 16.2: Anlegen eines neuen Windows-Benutzers Abbildung 16.3: Eintragen der Daten des neuen Benutzers Die beiden neu angelegten Benutzer werden nun in der Liste der Benutzer angezeigt (siehe Abbildung 16.4). 409 Kapitel 16 Sicherheit und Benutzerverwaltung Abbildung 16.4: Liste mit neuen Windows-Benutzern Nun fügen Sie zwei Gruppen hinzu, denen Sie die beiden Benutzer zuweisen. Dazu wählen Sie den Kontextmenüeintrag Neue Gruppe im Ordner Gruppen in der Computerverwaltung aus. Im nun erscheinenden Dialog legen Sie eine neue Gruppe namens Basis an (siehe Abbildung 16.5). Abbildung 16.5: Anlegen einer neuen Gruppe namens Basis Dieser Gruppe weisen Sie nun noch einen Benutzer zu, beispielsweise den zuvor angelegten Karl Klammer. Klicken Sie dazu auf Hinzufügen. Im nun erscheinenden Dialog können Sie die anzulegenden Elemente einfach eintragen (siehe Abbildung 16.6). 410 Benutzer unter Windows anlegen Abbildung 16.6: Auswählen des hinzuzufügenden Benutzers Wenn Sie hier Karl Klammer eintragen und auf Namen überprüfen klicken, ergänzt der Dialog noch den Rechnernamen (etwa ASQL\Karl Klammer). Haben Sie den Benutzernamen nicht im Kopf, klicken Sie auf Erweitert... und zeigen so den Dialog aus Abbildung 16.7 an. Hier finden Sie nach Betätigung der Schaltfläche Jetzt suchen unter anderem auch die eben angelegten Benutzer. Abbildung 16.7: Auswählen hinzuzufügender Benutzer Sollte der gesuchte Benutzer dort nicht auftauchen, stellen Sie mit einem Klick auf die Schaltfläche Objekttypen... sicher, dass die Benutzer auch angezeigt werden. Gegebenenfalls müssen Sie dort noch den Eintrag Benutzer aktivieren (siehe Abbildung 16.8). 411 Kapitel 16 Sicherheit und Benutzerverwaltung Abbildung 16.8: Aktivieren der Anzeige der Benutzer in der Auswahlliste Schließlich landet der neue Benutzer in der neuen Gruppe (siehe Abbildung 16.9). Abbildung 16.9: Neue Benutzergruppe mit dem ersten Benutzer Auf die gleiche Weise legen Sie eine weitere Gruppe namens Erweitert an und weisen dieser den Benutzer Alfred Neumann zu. Die beiden frisch angelegten Gruppen erscheinen schließlich in der Liste der eingebauten und der benutzerdefinierten Gruppen in der Computerverwaltung (siehe Abbildung 16.10). 412 Benutzer unter Windows anlegen Abbildung 16.10: Neue Gruppen in der Computerverwaltung 16.5.1 Windows-Benutzergruppen im SQL Server Wie bereits erwähnt, wollen wir im SQL Server gar nicht erst beginnen, einzelne WindowsBenutzer zu verwalten, sondern gleich auf Basis der Windows-Benutzergruppen arbeiten. Hier ist zu beachten, dass wir nun zunächst Anmeldungen zur Authentifizierung am SQL Server erstellen, diesen die Windows-Benutzergruppen zuordnen und anschließend die neuen Anmeldungen als Benutzer in der Zieldatenbank anlegen. Anmeldungen und Benutzer legen Sie im SQL Server über das SQL Server Management Studio an. Hier klicken Sie mit der rechten Maustaste auf den Eintrag Sicherheit und wählen den Befehl Neu|Anmeldung aus dem Kontextmenü aus (siehe Abbildung 16.11). Abbildung 16.11: Hinzufügen einer SQL Server-Anmeldung 413 Kapitel 16 Sicherheit und Benutzerverwaltung Im nun erscheinenden Dialog klicken Sie der Einfachheit halber auf die Schaltfläche Suchen (siehe Abbildung 16.12). Abbildung 16.12: Hinzufügen der neuen Anmeldungen über die Suchen-Funktion Dies öffnet den Dialog Benutzer oder Gruppen auswählen aus Abbildung 16.13. Hier können Sie den Objektnamen in der Form <Rechnername>\<Gruppenname> eintragen und diesen mit einem Klick auf Namen überprüfen verifizieren. Abbildung 16.13: Dialog zum Auswählen von Benutzern oder Gruppen Versuchen wir dies mit <Rechnername>\Basis, also eine der beiden soeben unter Windows angelegten Benutzergruppen, findet der Dialog die Benutzergruppe möglicherweise nicht. Das Problem lässt sich in der Regel leicht lösen: Klicken Sie einmal auf die Schaltfläche Objekttypen..., erscheint der Dialog aus Abbildung 16.14. Hier dürfte die Option Gruppen deaktiviert sein. Aktivieren Sie diese und schließen Sie den Dialog wieder. 414 Benutzer unter Windows anlegen Abbildung 16.14: Objektart Gruppe aktivieren Klicken Sie nun im Dialog Benutzer oder Gruppen auswählen auf die Schaltfläche Namen überprüfen, erkennt der SQL Server die gewünschte Benutzergruppe. Sollten Sie die Benutzergruppe immer noch nicht finden, klicken Sie im Dialog Benutzer oder Gruppen auswählen auf die Schaltfläche Erweitert. Dies öffnet den Dialog aus Abbildung 16.15. Eventuell müssen Sie auch hier unter Objekttypen den Eintrag Gruppen aktivieren, bevor Sie auf die Schaltfläche Suchen klicken. Die Liste im unteren Bereich sollte nun den gewünschten Eintrag anzeigen, den Sie durch Markieren und Schließen des Dialogs übernehmen. Abbildung 16.15: Suchen nach Windows-Benutzern oder Windows-Benutzergruppen 415 Kapitel 16 Sicherheit und Benutzerverwaltung Standarddatenbank einstellen Im Dialog Anmeldung – Neu legen Sie noch die Standarddatenbank fest – in diesem Fall die Beispieldatenbank AEMA_SQL. Auf diese Weise können Sie später beim Erstellen der Verbindungszeichenfolgen direkt auf die Standarddatenbank zugreifen. Serverrolle festlegen Nun wechseln Sie zur Seite Serverrollen. Hier legen Sie fest, welche administrativen Rechte die neue Anmeldung im SQL Server hat. Standardmäßig sind alle Anmeldungen der Serverrolle public zugeordnet (siehe Abbildung 16.16). Abbildung 16.16: Die Serverrollen vom SQL Server Die Serverrolle public stellt den kleinsten gemeinsamen Nenner der Berechtigungen zur Verwaltung des SQL Servers dar. Durch Auswahl einer oder mehrerer anderer Serverrollen erweitern Sie die Rechte einer Anmeldung. »» sysadmin: Ausführen aller Aktivitäten im SQL Server »» serveradmin: Ändern der SQL Server-Konfiguration, sowie Beenden vom SQL Server-Dienst »» securityadmin: Verwalten von Anmeldungen »» processadmin: Beenden von Prozessen 416