Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

Bitte teilen Sie uns Ihre Anrede, Ihren Namen und Ihre E-Mail-Adresse mit:

Anrede:
Vorname:
Nachname:
E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2018.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Berechtigungen für Access-Objekte per SQL Server 1: Datenmodell

Im Beitrag »SQL Server: Sicherheit und Benutzerverwaltung« haben wir gezeigt, wie Sie die Sicherheitsfunktionen für den Zugriff auf SQL Server und SQL Server-Datenbanken für Benutzergruppen und Benutzer einrichten. Damit ist der Zugriff auf die Elemente des SQL Servers geregelt. Was aber ist mit den Objekten im Access-Frontend – also beispielsweise mit Formularen, Schaltflächen, Ribbon-Einträgen und so weiter? Wenn wir schon Benutzer und Benutzergruppen im SQL Server einrichten, möchten wir diese ja auch nutzen, um die Elemente der Benutzeroberfläche je nach der Anmeldung für Benutzergruppe oder Benutzer freizugeben oder auch nicht. Ein Beispiel dafür, wie Sie dies realisieren können, liefert der vorliegende Beitrag. In diesem ersten Teil erstellen wir das Datenmodell für die Berechtigungsverwaltung.

Mit dem Anlegen von Anmeldungen für Benutzer und Benutzergruppen auf Windows-Basis oder für Benutzer auf SQL-Server-Basis, deren Zuweisung an die verschiedenen Datenbanken und dem Einstellen der Berechtigungen für die Elemente dieser Datenbanken haben Sie schon einen großen Schritt getan: Sie haben dafür gesorgt, dass jeder Benutzer nur auf die Daten zugreifen darf, die für die jeweilige Anmeldung freigegeben sind.

Nun besitzt eine moderne Access-Anwendung ein Ribbon, mit dem sich die einzelnen Funktionen der Anwendung aufrufen lassen. Normalerweise sind alle Befehle des Ribbons aktiviert und sichtbar. Wenn Sie eine Anwendung erstellen, die von verschiedenen Benutzergruppen genutzt wird, wollen Sie aber möglicherweise nicht immer alle Funktionen für alle Benutzergruppen freischalten. So könnte ein Datenbank-Frontend gleichzeitig die Formulare, Berichte und Funktionen enthalten, die nur für die Bestellannahme erforderlich sind. Die dortigen Mitarbeiter sollen aber vielleicht nicht die Auswertungen sehen, die etwa für das Management interessant sind. Also wollen wir verschiedene Dinge erreichen: Erstens sollen Bereiche, die für bestimmte Benutzergruppen nicht vorgesehen sind, nicht zu öffnen sein. Zweitens sollen auch gar keine Steuer­elemente im Ribbon oder auch in Formularen vorhanden sein, um diese Bereiche zu öffnen – oder zumindest sollen diese deaktiviert werden.

Berechtigungen je Benutzergruppe

Die folgende Lösung orientiert sich an der Windows-Authentifizierung, wie wir sie im Beitrag SQL Server: Sicherheit und Benutzerverwaltung (www.access-im-unternehmen.de/1154) vorgestellt haben. Das heißt, dass wir die Berechtigungen mit der Benutzergruppen abgleichen, denen die jeweiligen Benutzer angehören.

Im Einzelnen soll der Ablauf so aussehen, dass der Benutzer sich über seine Windows-Anmeldung und die zugeordnete Benutzergruppe an den SQL Server anmeldet. Dort haben wir bereits ausschließlich Anmeldungen auf Basis der vorhandenen Benutzergruppen vorgesehen. Wenn nun das Ribbon für einen Benutzer geladen wird, soll die Anwendung in einer Tabelle auf dem SQL Server prüfen, ob die Benutzergruppe, welcher der Benutzer angehört, die Berechtigungen zur Anzeige der Steuer­elemente des Ribbons besitzt. Dazu verwenden wir drei Tabellen. Die erste enthält alle Ribbon-Steuerelemente, Formulare, Formular-Steuerelemente und Berichte, für die Berechtigungen geprüft werden sollen. Die zweite enthält die verschiedenen Berechtigungsstufen, in diesem Fall Keine, Lesen und Alle. Damit sollten alle wichtigen Fälle abgedeckt sein. Sie können diese Tabelle aber nach Bedarf selbst erweitern. Die dritte Tabelle ist eine Verknüpfungstabelle zwischen den beiden ersten Tabellen und legt für jedes in der ersten Tabelle aufgeführte Element die Berechtigung aus der zweiten Tabelle fest.

Nun benötigen wir noch auf Access-Seite entsprechende Prozeduren, die vor dem Anzeigen eines Ribbons, eines Formulars oder eines Berichts aufgerufen werden und für die jeweiligen Elemente prüfen, ob die Benutzergruppe des aktuellen Benutzers diese Elemente nutzen darf. Voraussetzung für die Sicherheit dieser Vorgehensweise ist, dass der Benutzer den Quellcode in der Access-Anwendung nicht einsehen kann.

Benutzergruppen und Benutzer unter Windows anlegen

Damit Sie die folgenden Beispiele reproduzieren können, legen Sie zwei Benutzergruppen namens Bestellannahme und Management an sowie zwei Benutzer namens Harry Klein und Peter Gross. Diese ordnen Sie jeweils einer Benutzergruppe zu. Dabei brauchen Sie nicht umständlich in der Windows-Systemsteuerung zu arbeiten, sondern können dies bequem über die Kommandozeile erledigen. Diese öffnen Sie wie im Beitrag SQL Server: Sicherheit und Benutzerverwaltung im Administrator-Modus. Danach brauchen Sie nur noch die folgenden sechs Anweisungen einzugeben und per Eingabetaste auszuführen:

net.exe USER /ADD "Harry Klein" password
net.exe USER /ADD "Peter Gross" password
net.exe LOCALGROUP /ADD Bestellannahme
net.exe LOCALGROUP /ADD Management
net.exe LOCALGROUP Management /ADD "Peter Gross"
net.exe LOCALGROUP Bestellannahme /ADD "Harry Klein"

Dann legen Sie wie im gleichen Beitrag beschrieben zwei Anmeldungen im SQL Server Management Studio für die beiden Benutzergruppen Bestellannahme und Management an. Das können Sie über den Dialog erledigen, aber Sie haben auch die Möglichkeit, schnell ein Skript zu schreiben (oder dieses hier zu kopieren – nicht vergessen, den Platzhalter zu ersetzen). Das folgende Skript legt eine neue Anmeldung für die Windows-Benutzergruppe Management an und stellt die Standarddatenbank auf Suedsturm_SQL ein. Dann erstellt das Skript einen neuen Benutzer für die Datenbank Suedsturm_SQL für die Anmeldung der Benutzergruppe Management. Das Skript führen Sie im SQL Server Management Studio in einem neuen Abfragefenster für die Datenbank Suedsturm_SQL aus:

USE [master]
GO
CREATE LOGIN [<Server>\Management] FROM WINDOWS WITH DEFAULT_DATABASE=[Suedsturm_SQL]
GO
USE [Suedsturm_SQL]
GO
CREATE USER [<Server>\Management] FOR LOGIN [<Server>\Management]
GO
ALTER ROLE [db_datareader] ADD MEMBER [<Server>\Management]
GO
ALTER ROLE [db_datawriter] ADD MEMBER [<Server>\Management]
GO

Das gleiche Skript können Sie noch einmal in leicht geänderter Form ausführen. Diesmal verwenden wir die Anmeldung \Bestellannahme.

Berechtigungen einstellen

Danach legen wir einige Berechtigungen für die beiden Benutzergruppen fest. Die Benutzergruppe Management soll alle Daten lesen können, aber nicht ändern. Nicht, dass die Manager was kaputtmachen ... Die Benutzergruppe Bestellverwaltung soll einige Tabellen nur lesen können – zum Beispiel tblAnreden, tblArtikel oder tblKategorien zum Beispiel. Andere Tabellen müssen die Mitglieder dieser Benutzergruppe natürlich auch bearbeiten können – zum Beispiel tblBestellungen oder tblBestelldetails. Wenn Sie keine Lust haben, in den Dialogen zu arbeiten, können Sie auch hier einige Anweisungen absetzen, was vielleicht übersichtlicher ist – zumal Sie in den Dialogen immer nur die Berechtigungen für eine Tabelle gleichzeitig festlegen können. Um beispielsweise Leserechte für die Tabelle tblArtikel für die Benutzergruppe Bestellannahme festzulegen, reicht in einem neuen Abfragefenster der Datenbank Suedsturm_SQL die folgende Anweisung:

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

Bitte teilen Sie uns Ihre Anrede, Ihren Namen und Ihre E-Mail-Adresse mit:

Anrede:
Vorname:
Nachname:
E-Mail:

© 2003-2018 André Minhorst Alle Rechte vorbehalten.