{"id":55001361,"date":"2022-04-01T00:00:00","date_gmt":"2022-05-10T18:37:05","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1361"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/","title":{"rendered":"Access und SQL Server-Security &#8211; Teil 7: Windows-Authentifizierung"},"content":{"rendered":"<p>Bernd Jungbluth, Horn (info@berndjungbluth.de)<\/p>\n<p><b>Kennw&ouml;rter. Sie sind ein mehr oder weniger notwendiges &Uuml;bel, stellen Sie doch den Zugang zu Systemen sicher. Dennoch sind sie nicht selten eine Schwachstelle im Sicherheitskonzept, wie im aktuellen Szenario dieser Beitragsreihe. F&uuml;r eine automatische Anmeldung am SQL Server wird der Anmeldename und das Kennwort in der Access-Applikation gespeichert. Dort aber lassen sich diese Informationen nicht ausreichend sch&uuml;tzen. Dabei kann es so einfach sein. Mit der Windows-Authentifizierung sind die Anmeldedaten f&uuml;r den Zugang zum SQL Server nicht mehr erforderlich. In diesem Teil der Beitragsreihe lernen Sie die Vorteile der Windows-Authentifizierung kennen.<\/b><\/p>\n<h2>Warnung<\/h2>\n<p>Die beschriebenen Aktionen haben Auswirkungen auf Ihre SQL Server-Installation. F&uuml;hren Sie die Aktionen nur in einer Testumgebung aus. Verwenden Sie unter keinen Umst&auml;nden Ihren produktiven SQL Server!<\/p>\n<p>Das aktuelle Berechtigungskonzept der Beispielumgebung basiert auf der SQL Server-Authentifizierung. Der Zugang zum SQL Server erfolgt &uuml;ber die Anmeldungen <b>WaWiMa <\/b>und <b>WaWiPersonal<\/b>. Ein Anwender braucht lediglich das Kennwort zu einer der beiden Anmeldungen und schon kann er mit den entsprechenden Rechten auf die Daten des SQL Servers zugreifen. Einen direkten Bezug zum tats&auml;chlichen Anwender gibt es bei dieser Art der Authentifizierung nicht. <\/p>\n<p>Das ist bei der Windows-Authentifizierung anders. Hier m&uuml;ssen Sie keinen Anmeldenamen mitsamt Kennwort anlegen, sondern sie verweisen lediglich auf das Windows-Benutzerkonto des Anwenders. Diese so erstellte Anmeldung ordnen Sie dann wie gewohnt der Datenbank zu. Dem dadurch in der Datenbank erstellten Benutzer erteilen Sie dort die Rechte &uuml;ber die Datenbankrollen. Es &auml;ndert sich also lediglich die Authentifizierung am SQL Server, die Autorisierung an der Datenbank und die darauf folgende Rechtevergabe bleibt gleich. <\/p>\n<p>Nur haben Sie weniger Aufwand bei der Verwaltung der Anmeldungen und durch den Wegfall der Kennw&ouml;rter erhalten Sie mehr Sicherheit. Mehr noch, denn durch den Verweis zum Windows-Benutzerkonto erfolgt der Datenzugriff immer mit direktem Bezug zum Anwender. Ein anonymer Zugriff ist nicht mehr m&ouml;glich. Sie sehen, die Windows-Authentifizierung ist einfach und effektiv. <\/p>\n<p>Sie kennen die Windows-Authentifizierung bereits von Ihrem Windows-Benutzerkonto. Das haben Sie bei der Installation des SQL Servers als Anmeldung zugeordnet. Sie finden es im SQL Server Management Studio unter <b>Sicherheit|Anmeldungen<\/b>. Diese Anmeldung ist Mitglied der Serverrolle <b>sysadmin <\/b>und bietet Ihnen somit alle Rechte innerhalb Ihres SQL Servers, weshalb sie sich nicht f&uuml;r einen ad&auml;quaten Test der Rechtevergabe eignet. Dazu ben&ouml;tigen Sie ein weiteres Windows-Benutzerkonto.<\/p>\n<h2>Ein Windows-Benutzerkonto<\/h2>\n<p>M&ouml;glicherweise arbeiten Sie mit Ihrem Rechner in einer Windows-Dom&auml;ne und Ihr Windows-Benutzerkonto wird &uuml;ber ein Active Directory verwaltet. Vielleicht aber testen Sie die Beispiele dieser Beitragsreihe in einer Entwicklungsumgebung mit einem lokalen Windows-Benutzerkonto. Da das Anlegen eines Windows-Benutzerkontos im Active Directory an fehlenden Rechten oder mangelnder Bereitschaft Ihres IT-Systemadministrators scheitern k&ouml;nnte, legen Sie f&uuml;r die weitere Vorgehensweise ein lokales Windows-Benutzerkonto an. Dazu klicken Sie mit der rechten Maustaste auf das Windowslogo in der Taskleiste und w&auml;hlen den Eintrag <b>Computerverwaltung<\/b> (siehe Bild 1). In der Computerverwaltung erweitern Sie auf der linken Seite den Ordner <b>Lokale Benutzer und Gruppen<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.01.png\" alt=\"Start der Computerverwaltung\" width=\"299,5588\" height=\"536,3785\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Start der Computerverwaltung<\/span><\/b><\/p>\n<p>Nach einem Rechtsklick auf den Unterordner <b>Benutzer <\/b>&ouml;ffnen Sie mit dem Eintrag <b>Neuer Benutzer <\/b>den gleichnamigen Dialog. Hier geben Sie als Benutzernamen <b>Bienlein <\/b>ein. Anschlie&szlig;end sichern Sie das Benutzerkonto mit einem Kennwort in den Eingabefeldern <b>Kennwort <\/b>und <b>Kennwort <\/b>best&auml;tigen. Eine Neuvergabe des Kennworts bei der ersten Verwendung des Windows-Benutzerkontos ist nicht erforderlich. Es handelt sich schlie&szlig;lich um ein Testkonto, dass Sie selbst verwenden. Daher k&ouml;nnen Sie die Option <b>Benutzer muss Kennwort bei der n&auml;chsten Anmeldung &auml;ndern <\/b>deaktivieren. Mit einem Klick auf <b>Erstellen <\/b>wird das neue Windows-Benutzerkonto angelegt (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.02.png\" alt=\"Windows-Benutzer Bienlein\" width=\"424,5589\" height=\"431,2625\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Windows-Benutzer Bienlein<\/span><\/b><\/p>\n<p>Gl&uuml;ckwunsch. Nun haben Sie auf Ihrem Rechner einen virtuellen Anwender namens <b>Bienlein<\/b>. Beenden Sie den Dialog mit der Schaltfl&auml;che <b>Schlie&szlig;en<\/b>. <\/p>\n<h2>Die Anmeldung Bienlein <\/h2>\n<p>Im n&auml;chsten Schritt erstellen Sie f&uuml;r das Windows-Benutzerkonto <b>Bienlein <\/b>eine Anmeldung in Ihrem SQL Server. Starten Sie das SQL Server Management Studio und melden Sie sich an der SQL Server-Instanz mit Ihrem Windows-Benutzerkonto oder einer anderen Anmeldung mit administrativen Rechten an.<\/p>\n<p>Im SQL Server Management Studio navigieren Sie im Objekt-Explorer zum Ordner <b>Sicherheit <\/b>und erweitern dort den Unterordner <b>Anmeldungen<\/b>. W&auml;hlen Sie in dessen Kontextmen&uuml; den Eintrag <b>Neue Anmeldung <\/b>(siehe Bild 3) und klicken Sie in dem darauffolgenden Dialog auf die Schaltfl&auml;che <b>Suchen<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.03.png\" alt=\"Neue Anmeldung im SQL Server\" width=\"299,5588\" height=\"226,4738\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Neue Anmeldung im SQL Server<\/span><\/b><\/p>\n<p>In dem Auswahlfenster <b>Benutzer oder Gruppe ausw&auml;hlen <\/b>legen Sie den Verweis zu dem Windows-Benutzerkonto <b>Bienlein <\/b>fest. Der schnellste Weg ist die direkte Eingabe des Windows-Benutzerkontos und einem anschlie&szlig;enden Klick auf <b>Namen &uuml;berpr&uuml;fen<\/b>. Ist die Eingabe korrekt, wird diese durch Ihren Rechnernamen erg&auml;nzt (siehe Bild 4). Mit einem Klick auf <b>OK <\/b>&uuml;bernehmen Sie die Auswahl.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.04.png\" alt=\"Anmeldung mit Windows-Authentifizierung\" width=\"624,559\" height=\"566,4605\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Anmeldung mit Windows-Authentifizierung<\/span><\/b><\/p>\n<p>Die Windows-Benutzerkonten Ihrer Dom&auml;ne werden Sie &uuml;ber diesen Weg nicht finden. Hierf&uuml;r m&uuml;ssen Sie in dem Auswahlfenster <b>Benutzer oder Gruppe ausw&auml;hlen <\/b>zun&auml;chst &uuml;ber die Schaltfl&auml;che <b>Pfade <\/b>den Suchpfad zu Ihrer Dom&auml;ne festlegen. Anschlie&szlig;end k&ouml;nnen Sie wie oben beschrieben das Benutzerkonto aus Ihrem Active Directory ausw&auml;hlen.<\/p>\n<p>Sie haben es bestimmt bemerkt. Die Option <b>Windows-Authentifizierung <\/b>ist im Dialog standardm&auml;&szlig;ig aktiviert. Aus gutem Grund. Schlie&szlig;lich empfiehlt Microsoft diese Authentifizierungsmethode. Die SQL Server-Authentifizierung hingegen sollte nur in Ausnahmef&auml;llen verwendet werden. Zum Beispiel, wenn f&uuml;r den Betrieb der Client-Applikation keine Windows-Benutzerkonten verf&uuml;gbar sind.<\/p>\n<p>Die weiteren Schritte sind Ihnen von den beiden Anmeldungen <b>WaWiMa <\/b>und <b>WaWiPersonal <\/b>bekannt. Als Erstes weisen Sie der neuen Anmeldung in der Auswahlliste <b>Standarddatenbank <\/b>die Datenbank <b>WaWi_SQL <\/b>zu. Sollte mit einer Client-Applikation eine Verbindung zum SQL Server ohne die explizite Angabe einer Datenbank erfolgen, wird bei dieser Anmeldung immer die Datenbank <b>WaWi_SQL <\/b>verwendet.<\/p>\n<p>In der Seite <b>Benutzerzuordnung <\/b>autorisieren Sie die Anmeldung f&uuml;r den Zugriff auf die Datenbanken. Hierzu w&auml;hlen Sie im oberen Bereich die Datenbank <b>WaWi_SQL <\/b>aus. Durch diese Auswahl wird in der Datenbank ein Benutzer erstellt. Den Namen dieses Benutzers sehen Sie neben der gew&auml;hlten Datenbank in der Spalte <b>Benutzer<\/b>.<\/p>\n<p>Zwar k&ouml;nnen Sie den Namen &auml;ndern, es ist jedoch nicht unbedingt empfehlenswert. Eines der obersten Gebote der Security ist die Einfachheit. Gestalten Sie die Vergabe und Pflege von Zugriffsberechtigungen so einfach wie m&ouml;glich. Mit einem von der Anmeldung abweichenden Benutzernamen erh&ouml;hen Sie nur den Aufwand. Bei einer &Auml;nderung der Zugriffsrechte dieses Benutzers m&uuml;ssten Sie immer erst einmal nachschauen, zu welcher Windows-Authentifizierung er letztendlich geh&ouml;rt. <\/p>\n<p>Ein Standardschema brauchen Sie nicht anzugeben. Ohne Angabe wird das Schema <b>dbo <\/b>verwendet. Die Bedeutung dieses Schemas sowie die Vorteile eigener Schemata ist das Thema einer der n&auml;chsten Beitr&auml;ge.<\/p>\n<p>Die Zugriffsrechte des neuen Benutzers legen Sie im unteren Bereich des Dialogs fest. Aktivieren Sie die Datenbankrollen <b>db_datareader<\/b>, <b>db_datawriter <\/b>und <b>edb_execute <\/b>(siehe Bild 5). Mit dieser Auswahl darf der Benutzer die Daten aller Tabellen lesen und &auml;ndern sowie alle gespeicherten Prozeduren ausf&uuml;hren. Die Zuordnung zur Datenbankrolle <b>public <\/b>k&ouml;nnen Sie nicht &auml;ndern. Jeder Benutzer ist hier standardm&auml;&szlig;ig Mitglied. Die M&ouml;glichkeiten und vor allem die Gefahren dieser Datenbankrolle lernen Sie im n&auml;chsten Beitrag kennen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.05.png\" alt=\"Benutzerzuordnung einer Anmeldung\" width=\"624,559\" height=\"551,6935\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Benutzerzuordnung einer Anmeldung<\/span><\/b><\/p>\n<p>Soweit so gut. Mit einem Klick auf <b>OK <\/b>legen Sie die neue Anmeldung an. Im Ordner <b>Anmeldungen <\/b>unter <b>Sicherheit <\/b>sehen Sie den neuen Eintrag <b>Bienlein<\/b>, wobei dem Namen <b>Bienlein <\/b>die Bezeichnung Ihres Rechners vorangestellt ist. Der Einfachheit halber wird im weiteren Text nur der Name des Windows-Benutzerkontos verwendet und auf den Hinweis des Rechnernamens verzichtet.<\/p>\n<p>Mit der Anmeldung wurde der zugeh&ouml;rige Benutzer in der Datenbank <b>WaWi_SQL <\/b>erstellt. Wechseln Sie zur Datenbank <b>WaWi_SQL <\/b>und erweitern Sie dort den Ordner <b>Sicherheit<\/b>. Der Unterordner <b>Benutzer <\/b>listet nun neben den bekannten Eintr&auml;gen <b>WaWiMa <\/b>und <b>WaWiPersonal <\/b>den neuen Benutzer <b>Bienlein <\/b>auf (siehe Bild 6). <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.06.png\" alt=\"Datenbankbenutzer Bienlein\" width=\"299,5588\" height=\"487,2039\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Datenbankbenutzer Bienlein<\/span><\/b><\/p>\n<p>Frau Bienlein arbeitet im Vertrieb. Daher soll sie dieselben Rechte erhalten wie der Benutzer <b>WaWiMa<\/b>. Diesem wird aktuell der Zugriff auf die Tabellen und gespeicherten Prozeduren der Personalabteilung verweigert. Um diese Einschr&auml;nkungen festzulegen, &ouml;ffnen Sie mit einem Doppelklick auf den Eintrag <b>Bienlein <\/b>den Dialog <b>Datenbankbenutzer<\/b>. Auf der Seite <b>Sicherungsf&auml;hige Elemente <\/b>legen Sie die Rechte f&uuml;r einzelne Tabellen und gespeicherte Prozeduren fest. Zur Auswahl dieser Objekte gibt es mehrere Wege. Einer dieser Wege erfolgt &uuml;ber das Schema. Klicken Sie auf <b>Suchen <\/b>und aktivieren Sie im Auswahlfenster <b>Objekte hinzuf&uuml;gen <\/b>die Option <b>Alle Objekte, die dem Schema angeh&ouml;ren <\/b>(siehe Bild 7). Unter <b>Schemaname <\/b>w&auml;hlen Sie das Schema <b>dbo <\/b>und best&auml;tigen dies mit einem Klick auf <b>OK<\/b>. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.07.png\" alt=\"Auswahl der Objekte nach Schema\" width=\"624,559\" height=\"565,5525\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Auswahl der Objekte nach Schema<\/span><\/b><\/p>\n<p>Der Dialog <b>Datenbankbenutzer <\/b>listet nun unter <b>Sicherungsf&auml;hige Elemente <\/b>alle Objekte der Datenbank vom Schema <b>dbo <\/b>auf. Dort markieren Sie die Tabelle <b>Bewerber <\/b>und aktivieren im unteren Bereich in der Zeile <b>Aktualisieren <\/b>die Option <b>Verweigern <\/b>(siehe Bild 8). Mit den Rechten zur gespeicherten Prozedur <b>pSelectGeburtstagsliste <\/b>verfahren Sie &auml;hnlich. Sie w&auml;hlen die gespeicherte Prozedur im oberen Bereich aus und aktivieren dann im unteren Bereich in der Zeile <b>Ausf&uuml;hren <\/b>die Option <b>Verweigern<\/b>. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.08.png\" alt=\"Rechtevergabe eines Benutzers\" width=\"624,559\" height=\"523,2565\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Rechtevergabe eines Benutzers<\/span><\/b><\/p>\n<p>Das war noch nicht alles. Sie m&uuml;ssen noch weitere Zugriffsrechte verweigern. Um Ihnen die umst&auml;ndlichen Klicks zu ersparen und um gleichzeitig eine Dokumentation zu dieser Rechtevergabe zu erhalten, w&auml;hlen Sie im oberen Teil des Dialogs unter <b>Skript <\/b>den Eintrag <b>Skript f&uuml;r Aktion in Fenster &#8222;Neue Abfrage&#8220; schreiben<\/b>. Das SQL Server Management Studio zeigt Ihnen danach die T-SQL-Befehle zur Rechtevergabe in einer neuen Registerkarte. Genau hier werden Sie die Rechtevergabe vervollst&auml;ndigen. Doch vorher beenden Sie den Dialog <b>Datenbankbenutzer <\/b>mit einem Klick auf <b>Abbrechen<\/b>.<\/p>\n<p>In der Registerkarte erg&auml;nzen Sie diese Zeile mit den Befehlen <b>SELECT<\/b>, <b>INSERT <\/b>und <b>DELETE<\/b>: <\/p>\n<pre>DENY UPDATE ON [dbo].[Bewerber] TO [Ihr Rechnername\\Bienlein]<\/pre>\n<p>Danach sieht die Zeile wie folgt aus:<\/p>\n<pre>DENY SELECT, INSERT, UPDATE, DELETE ON [dbo].[Bewerber] TO [Ihr Rechnername\\Bienlein]<\/pre>\n<p>Danach kopieren Sie die Zeile und f&uuml;gen Sie zweimal in das Skript ein. Ersetzen Sie in der ersten eingef&uuml;gten Zeile den Namen der Tabelle mit <b>Mitarbeiter <\/b>und in der zweiten mit <b>Stellen<\/b>:<\/p>\n<pre>DENY SELECT, INSERT, UPDATE, DELETE ON [dbo].[Mitarbeiter] TO [Ihr Rechnername \\Bienlein]\r\nDENY SELECT, INSERT, UPDATE, DELETE ON [dbo].[Stellen] TO [Ihr Rechnername \\Bienlein]<\/pre>\n<p>Die n&auml;chsten drei Zeilen mit <b>GO<\/b>, <b>USE WaWi_SQL <\/b>und einem weiteren <b>GO <\/b>sind f&uuml;r das Skript nicht erforderlich. Entfernen Sie diese Zeilen und erg&auml;nzen Sie anschlie&szlig;end das Skript mit entsprechenden Hinweisen und Kommentaren. Heraus kommt ein T-SQL-Skript wie in Bild 9, das Sie in Ihrer Dokumentation zur Rechtevergabe speichern. Mit einem Klick auf die Schaltfl&auml;che <b>Ausf&uuml;hren <\/b>erweitern Sie die Zugriffsrechte des Benutzers <b>Bienlein<\/b>. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.09.png\" alt=\"Rechtevergabe per T-SQL\" width=\"624,559\" height=\"214,6371\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Rechtevergabe per T-SQL<\/span><\/b><\/p>\n<p>Wobei es sich bei dem Erweitern hier eher um ein Einschr&auml;nken handelt. Grunds&auml;tzlich besitzt der Benutzer <b>Bienlein <\/b>durch die Zuordnung zu den Datenbankrollen <b>db_datareader<\/b>, <b>db_datawriter <\/b>und <b>edb_execute <\/b>Lese- und Schreibrechte an allen Tabellen der Datenbank sowie das Recht zum Ausf&uuml;hren aller gespeicherten Prozeduren. Der Zugriff auf die Tabellen <b>Bewerber<\/b>, <b>Mitarbeiter<\/b>, <b>Stellen <\/b>und der gespeicherten Prozedur <b>pSelectGeburtstagsliste <\/b>wird ihm jedoch durch das Recht <b>DENY <\/b>explizit verweigert &#8211; und dieses Recht steht &uuml;ber allen anderen. <\/p>\n<p>Zur Kontrolle &ouml;ffnen Sie erneut den Dialog <b>Datenbankbenutzer <\/b>mit einem Doppelklick auf den Eintrag <b>Bienlein<\/b>. Dieser zeigt Ihnen nun die erteilten Rechte in der Seite <b>Sicherungsf&auml;hige Elemente <\/b>(siehe Bild 10). Die zugeordneten Datenbankrollen sehen Sie in der Seite <b>Mitgliedschaft<\/b>. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.10.png\" alt=\"Verweigerter Zugriff f&uuml;r Bienlein\" width=\"624,559\" height=\"512,9425\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Verweigerter Zugriff f&uuml;r Bienlein<\/span><\/b><\/p>\n<p>Mit der Rechtevergabe des Benutzers ist das Erstellen der Anmeldung vollst&auml;ndig. Die neue Anmeldung basiert auf einer Windows-Authentifizierung, in diesem Fall auf dem Windows-Benutzerkonto <b>Bienlein<\/b>. Jetzt ist noch die Beispielapplikation an die neue Authentifizierungsmethode anzupassen.<\/p>\n<h2>Access und die Windows-Authentifizierung<\/h2>\n<p>Die Authentifizierung am SQL Server findet in der Beispielapplikation mit der Funktion <b>fTabellenEinbinden <\/b>statt. Diese ermittelt &uuml;ber die Access-Abfrage <b>Anmeldedaten <\/b>die zum aktuellen Anwender passende SQL Server-Anmeldung. F&uuml;r die Mitarbeiter im Vertrieb ist das die Anmeldung <b>WaWiMa<\/b>, f&uuml;r die Kollegen in der Personalabteilung die Anmeldung <b>WaWiPersonal<\/b>. Die Zuordnungen wie die Anmeldedaten sind in den Tabellen <b>Benutzer <\/b>und <b>Datenquellen <\/b>hinterlegt. Zum Schutz dieser Daten und insbesondere der dort gespeicherten Kennw&ouml;rter sind beide Tabellen als Systemobjekte definiert und somit nicht ohne weiteres sichtbar. <\/p>\n<p>Der ganze Aufwand ist nur zum Schutz der Kennw&ouml;rter zu den Anmeldungen <b>WaWiMa <\/b>und <b>WaWiPersonal <\/b>erforderlich. Diese d&uuml;rfen lediglich den Entwicklern der Applikation beziehungsweise den Datenbankadministratoren bekannt sein. Den Anwendern und vor allem m&ouml;glichen Angreifern soll das unerlaubte Ermitteln und Einsetzen dieser Kennw&ouml;rter so schwer wie m&ouml;glich gemacht werden.<\/p>\n<p>Wobei letztere wohl eher mit einem Texteditor direkt in die ACCDB schauen. Was auf diesem Weg dort alles zu sehen ist, haben Sie im letzten Beitrag erfahren.<\/p>\n<p>Mit der Windows-Authentifizierung f&auml;llt der komplette Aufwand weg. Das Speichern von Kennw&ouml;rtern ist nicht mehr erforderlich. Die Zugriffsrechte ergeben sich durch das aktuell verwendete Windows-Benutzerkonto des Anwenders. Frau Bienlein greift nun mit der zu ihrem Windows-Benutzerkonto eingerichteten Anmeldung auf die Datenbank <b>WaWi_SQL <\/b>zu. Damit diese Art der Anmeldung funktioniert, muss die Verbindungszeichenfolge in der Beispielapplikation angepasst werden.<\/p>\n<p>&Ouml;ffnen Sie die Beispielapplikation <b>WaWi v2 <\/b>und wechseln Sie zur Funktion <b>fOdbcPerTabelle <\/b>im Modul <b>OBDC<\/b>. Hier wird die Verbindungszeichenfolge zusammengesetzt. Die nun anstehenden &Auml;nderungen werden die Funktion um einiges verk&uuml;rzen. Es beginnt mit der Quelle der einzelnen Bestandteile einer Verbindungszeichenfolge, der Abfrage <b>Anmeldedaten<\/b>. Diese liefert die Bezeichnung des SQL Servers, den Namen der Datenbank sowie die zum aktuellen Anwender passende Anmeldung inklusive des Kennworts. Da die Anmeldedaten nicht mehr ben&ouml;tigt werden, &auml;ndern Sie in der folgenden Zeile die Quelle des Recordsets von Anmeldedaten in Datenquellen.<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> rsVerbindung = CurrentDb.OpenRecordset(\"Datenquellen\", dbOpenSnapshot)<\/pre>\n<p>Durch den Wegfall der Anmeldedaten sind die Variablen <b>strBenutzer <\/b>und <b>strKennwort <\/b>ebenfalls nicht mehr notwendig. Daher l&ouml;schen Sie die Deklaration der Variablen sowie diese beiden Zeilen:<\/p>\n<pre><span style=\"color:blue;\">If <\/span>IsNull(rsVerbindung(\"Benutzer\"))<span style=\"color:blue;\"> Then<\/span> boKomplett = <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">If <\/span>IsNull(rsVerbindung(\"Kennwort\"))<span style=\"color:blue;\"> Then<\/span> boKomplett = <span style=\"color:blue;\">False<\/span><\/pre>\n<p>Aus dem gleichen Grund trennen Sie sich auch von diesen Zeilen:<\/p>\n<pre>\";UID=\" & rsVerbindung(\"Benutzer\") & _\r\n\";PWD=\" & fKennwortLesen(rsVerbindung(\"Kennwort\"))<\/pre>\n<p>Jetzt &auml;ndern Sie den Eintrag <b>Trusted_Connection=No <\/b>in <b>Trusted_Connection=Yes<\/b>. Durch diesen Parameter wird bei der Verbindung zum SQL Server die aktuelle Windows-Anmeldung des Anwenders &uuml;bergeben. Das Erstellen der Verbindungszeichenfolge sieht nun so aus:<\/p>\n<pre>''Datenquelle ermitteln\r\n<span style=\"color:blue;\">Set<\/span> rsVerbindung = CurrentDb.OpenRecordset( \"Datenquellen\", dbOpenSnapshot)\r\n<span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> rsVerbindung.EOF<span style=\"color:blue;\"> Then<\/span>\r\n     ''Inhalte pr&uuml;fen\r\n     <span style=\"color:blue;\">If <\/span>IsNull(rsVerbindung(\"Server\"))<span style=\"color:blue;\"> Then<\/span>  boKomplett = <span style=\"color:blue;\">False<\/span>\r\n     <span style=\"color:blue;\">If <\/span>IsNull(rsVerbindung(\"Datenbank\"))<span style=\"color:blue;\"> Then<\/span>  boKomplett = <span style=\"color:blue;\">False<\/span>\r\n     ''Anmeldedaten vollst&auml;ndig\r\n     <span style=\"color:blue;\">If <\/span>boKomplett = <span style=\"color:blue;\">True<\/span><span style=\"color:blue;\"> Then<\/span>\r\n         ''Connection definieren\r\n         fOdbcPerTabelle = _\r\n             \"ODBC;DRIVER=ODBC Driver 17 for SQL Server\" _\r\n             & \";Trusted_Connection=Yes\" & _\r\n             \";Server=\" & rsVerbindung(\"Server\") & _\r\n             \";Database=\" & rsVerbindung(\"Datenbank\")\r\n     End If    \r\n<span style=\"color:blue;\">Else<\/span>\r\n     ''Keine Anmeldedaten gefunden\r\n     boKomplett = <span style=\"color:blue;\">False<\/span>\r\nEnd If <\/pre>\n<p>Nat&uuml;rlich k&ouml;nnte der Name des SQL Servers und der der Datenbank direkt in der Funktion eingetragen werden. Dadurch w&auml;re die lokale Tabelle <b>Datenquellen <\/b>ebenso hinf&auml;llig. Aber warum sollten Sie auf diesen Komfort verzichten wollen &Uuml;ber die beiden Werte l&auml;sst sich die Access-Applikation recht einfach auf einen anderen SQL Server oder eine andere Datenbank umschalten. So sind Sie zum Beispiel in der Lage schnell zwischen Entwicklungsumgebung und Produktivumgebung zu wechseln. Dabei kann die Datenbank zur Entwicklungsumgebung unter einem anderen Namen im gleichen SQL Server liegen oder unter dem Originalnamen in einer anderen SQL Server-Instanz.<\/p>\n<p>Fehlt der Name des SQL Servers beziehungsweise der Datenbank, erhalten Sie durch die Messagebox am Ende der Funktion eine Meldung. Diese k&ouml;nnen Sie noch etwas anpassen, denn sie pr&uuml;ft nicht mehr die Anmeldedaten, sondern lediglich die Verbindungsdaten:<\/p>\n<pre>''Verbindungsdaten unvollst&auml;ndig\r\n<span style=\"color:blue;\">If <\/span>boKomplett = <span style=\"color:blue;\">False<\/span><span style=\"color:blue;\"> Then<\/span>\r\n     <span style=\"color:blue;\">MsgBox<\/span> \"Die Verbindungsdaten sind nicht  vollst&auml;ndig erfasst.\" & <span style=\"color:blue;\">vbCrLf<\/span> & \"Bitte erg&auml;nzen  Sie die fehlenden Informationen.\", <span style=\"color:blue;\">vbCr<\/span>itical,  CurrentDb.Properties!AppTitle\r\n<span style=\"color:blue;\">End If<\/span><\/pre>\n<p>Soweit zum Datenzugriff per ODBC der f&uuml;r die eingebundenen Tabellen und die Pass Through-Abfragen relevant ist. Die Beispielapplikation nutzt zus&auml;tzlich die Datenzugriffsmethode ADO und diese wiederum verwendet OLE DB f&uuml;r den Zugriff auf die Daten. Es ist also eine weitere Anpassung erforderlich. <\/p>\n<p>Dazu wechseln Sie zur Funktion <b>fAdoPerTabelle <\/b>im Modul <b>ADO<\/b>. Die nun anstehenden &Auml;nderungen sind &auml;hnlich der eben durchgef&uuml;hrten. Als erstes &auml;ndern Sie hier ebenfalls die Quelle des Recordsets in Datenquellen.<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> rsVerbindung = CurrentDb.OpenRecordset( \"Datenquellen\", dbOpenSnapshot)<\/pre>\n<p>Danach entfernen Sie die Deklarationen der Variablen <b>strBenutzer <\/b>und <b>strKennwort <\/b>sowie die folgenden Zeilen:<\/p>\n<pre>\";User ID=\" & rsVerbindung(\"Benutzer\") & _\r\n\";Password=\" & fKennwortLesen(rsVerbindung(\"Kennwort\"))<\/pre>\n<p>Anschlie&szlig;end erg&auml;nzen Sie den Aufbau der Verbindungszeichenfolge mit dem Parameter <b>Integrated Security<\/b>. Mit diesem Parameter findet bei OLE DB die &Uuml;bergabe der aktuellen Windows-Anmeldung statt. Der Parameter akzeptiert als Wert sowohl <b>SSPI <\/b>wie auch <b>Yes<\/b>. Sie sollten an dieser Stelle <b>SSPI <\/b>verwenden, denn der Wert <b>Yes <\/b>wird nicht von allen OLE DB-Treibern unterst&uuml;tzt. <b>SSPI <\/b>steht f&uuml;r <b>Security Support Provider Interface<\/b>. Diese Schnittstelle erm&ouml;glicht die Verwendung von Funktionen verf&uuml;gbarer Sicherheitsmodelle, unter anderem das Pr&uuml;fen einer Authentifizierung. Mit dem Eintrag <b>Integrated Security <\/b>haben die Zeilen zu den Parametern <b>User ID <\/b>und <b>Password <\/b>keine Bedeutung mehr. Weshalb Sie die beiden Zeilen nun l&ouml;schen. Danach sollte der Aufbau der Verbindungszeichenfolge so aussehen:<\/p>\n<pre>fAdoPerTabelle = \"Provider=MSOLEDBSQL;Integrated  Security=SSPI;Server=\" & rsVerbindung(\"Server\") &  \";Database=\" & rsVerbindung(\"Datenbank\")<\/pre>\n<p>Zum Abschluss passen Sie noch die Meldung am Ende der Funktion an. Am besten nutzen Sie denselben Text wie in der Funktion <b>fOdbcPerTabelle<\/b>. <\/p>\n<p>Nach diesen &Auml;nderungen wird weder der Anmeldename noch das Kennwort zum Erstellen der Verbindungszeichenfolgen verwendet. Daher werden Sie die Quelle dieser Informationen nun ebenfalls l&ouml;schen. Beide sind in der Tabelle <b>Datenquellen <\/b>hinterlegt. Bevor Sie die Tabelle &auml;ndern k&ouml;nnen, m&uuml;ssen Sie ihr zun&auml;chst den Status der Systemtabelle entziehen. F&uuml;hren Sie dazu im VBA-Direktbereich die folgende Anweisung aus:<\/p>\n<pre>fTabelleAlsSystemObjekt \"Datenquellen\", <span style=\"color:blue;\">False<\/span><\/pre>\n<p>Wiederholen Sie die Anweisung f&uuml;r die Tabelle <b>Benutzer<\/b>. Hier gibt es gleich eine weitere &Auml;nderung. Danach wechseln Sie zu Access in den Navigationsbereich und &ouml;ffnen die Tabelle <b>Datenquellen <\/b>im Entwurfsmodus. Entfernen Sie die nicht mehr ben&ouml;tigten Spalten <b>Benutzer <\/b>und <b>Kennwort <\/b>und speichern Sie die neue Struktur der Tabelle. Anschlie&szlig;end &ouml;ffnen Sie die Datenblattansicht. Ohne die Information der Anmeldedaten sehen Sie jetzt zwei Datens&auml;tze mit gleichem Inhalt. Beide zeigen die Bezeichnung zu Ihrem SQL Server und zur Datenbank <b>WaWi_SQL<\/b>. L&ouml;schen Sie einen der Eintr&auml;ge. Und wenn Sie schon beim L&ouml;schen sind, entfernen Sie gleich noch die Tabelle <b>Benutzer <\/b>und die Access-Abfrage <b>Anmeldedaten<\/b>. Jegliche Information dieser Tabelle sowie der Abfrage ist f&uuml;r die Windows-Authentifizierung irrelevant. <\/p>\n<p><!--30percent--><\/p>\n<p>Zugegeben, das waren jetzt viele &Auml;nderungen. Im Umkehrschluss zeigt dies aber sehr deutlich, von wieviel Ballast Sie sich bei einer Windows-Authentifizierung trennen. Zum Test des neuen Anmeldeverfahrens ist ein Neustart der Beispielapplikation erforderlich, denn es besteht bereits eine Verbindung zum SQL Server. Sind Sie der Installationsanleitung gefolgt, handelt es sich hierbei um die Anmeldung <b>WaWiPersonal <\/b>und somit um eine Anmeldung basierend auf einer SQL Server-Authentifizierung. Wie Sie im letzten Beitrag erfahren haben, werden Sie solche Verbindungen nur durch einen Neustart der Access-Applikation wieder los.<\/p>\n<p>Ein Neustart &ouml;ffnet das unsichtbare Formular <b>Verbindung<\/b>, das die Funktion <b>fTabellenEinbinden <\/b>und dort wiederum die eben angepasste Funktion <b>fOdbcPerTabelle <\/b>ausf&uuml;hrt. Nachdem die Funktion <b>fTabellenEinbinden <\/b>alle Tabellen neu verkn&uuml;pft und die Verbindungszeichenfolgen der Pass Through-Abfragen angepasst hat, wird das Formular <b>Verbindung <\/b>geschlossen und das Formular <b>Start <\/b>ge&ouml;ffnet. <\/p>\n<p>Gut, aktuell sind Sie mit Ihrem Windows-Benutzerkonto angemeldet und mit diesem haben Sie im SQL Server administrative Rechte. Ein Test der Zugriffsrechte ist somit nicht aussagekr&auml;ftig. Dennoch k&ouml;nnen Sie sich die aktuelle Verbindungsart anzeigen lassen. Dazu fahren Sie mit der Maus &uuml;ber eine der eingebundenen Tabellen. Der zugeh&ouml;rige Tooltip zeigt Ihnen die Verbindungszeichenfolge. Dort sehen Sie den Eintrag <b>Trusted_Connection=Yes <\/b>(siehe Bild 11).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.11.png\" alt=\"Eingebundene Tabelle per Trusted Connection\" width=\"524,559\" height=\"153,7169\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Eingebundene Tabelle per Trusted Connection<\/span><\/b><\/p>\n<p>Das ist als Test nat&uuml;rlich nicht zufriedenstellend. F&uuml;r einen korrekten Test starten Sie die Beispielapplikation mit den Rechten des Anwenders <b>Bienlein<\/b>. Dazu gibt es mehrere Wege, einer umst&auml;ndlicher als der andere. Ein eher einfacher Weg f&uuml;hrt &uuml;ber die Taskleiste. Sollten Sie Access dort noch nicht angeheftet haben, dr&uuml;cken Sie die Windowstaste und gehen Sie in der Auflistung der Applikationen zu dem Access-Symbol. Markieren Sie das Icon und ziehen Sie es mit gedr&uuml;ckter Maustaste in die Taskleiste. <\/p>\n<p>Nun klicken Sie mit der rechten Maustaste und gedr&uuml;ckter Umschalt-Taste auf das Access-Symbol in der Taskleiste und w&auml;hlen <b>Als anderer Benutzer <\/b>ausf&uuml;hren. Sie sehen den Eintrag nicht Dann haben Sie Access noch ge&ouml;ffnet. Schlie&szlig;en Sie Access und wiederholen Sie den Vorgang. In dem folgenden Anmeldedialog geben Sie die Anmeldedaten des Anwenders <b>Bienlein <\/b>ein (siehe Bild 12).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.12.png\" alt=\"Anmeldung als Windows-Benutzer Bienlein\" width=\"349,5589\" height=\"271,368\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 12: Anmeldung als Windows-Benutzer Bienlein<\/span><\/b><\/p>\n<p>Mit einem Klick auf <b>OK <\/b>startet Access nun mit den Rechten des Windows-Benutzerkontos <b>Bienlein<\/b>. In Access m&uuml;ssen Sie als erstes den Lizenzbestimmungen und den Datenschutzeinstellungen zustimmen, bevor Sie &uuml;ber <b>&Ouml;ffnen <\/b>die Access-Applikation <b>WaWi v2 <\/b>starten. Hier best&auml;tigen Sie noch den Sicherheitshinweis mit einem Klick auf <b>Inhalt aktivieren <\/b>und schon arbeiten Sie als Frau Bienlein mit der Beispielapplikation und den Daten der SQL Server-Datenbank <b>WaWi_SQL<\/b>. Das erkennen Sie zum einen im Titel der Applikation und zum anderen am Start-Formular. Beide beinhalten den Namen <b>Bienlein<\/b>. Zudem bietet Ihnen das Start-Formular nur die Schaltfl&auml;chen des Vertriebs an. Geregelt wird dies mit der Formularsteuerung, die abh&auml;ngig vom angemeldeten Anwender nur die erlaubten Schaltfl&auml;chen freigibt. Klicken Sie doch einmal auf die Schaltfl&auml;chen. Als Ergebnis sehen Sie die gew&uuml;nschten Daten. Die Datenermittlung fand &uuml;ber ODBC per eingebundene Tabellen und Pass Through-Abfragen sowie im Formular <b>Artikel <\/b>per ADO und OLE DB statt. Die gew&auml;hrten Zugriffsrechte f&uuml;r Frau Bienlein w&auml;ren somit erfolgreich getestet. <\/p>\n<p>Doch wie sieht es mit den verweigerten Zugriffen aus Dazu &ouml;ffnen Sie im Navigationsbereich die Pass Through-Abfrage <b>ptSelectGeburtstagsliste<\/b>. Anstelle der Geburtstagsliste erhalten Sie die Fehlermeldung aus Bild 13. Das ist korrekt, f&uuml;hrt die Pass Through-Abfrage doch die gespeicherte Prozedur <b>pSelectGeburtstagsliste <\/b>aus und zu dieser haben Sie Frau Bienlein den Zugriff explizit verweigert.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.13.png\" alt=\"Fehlende EXECUTE-Berechtigung\" width=\"700\" height=\"82,95789\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 13: Fehlende EXECUTE-Berechtigung<\/span><\/b><\/p>\n<h2>Die Anmeldung Stromberg<\/h2>\n<p>Beim aktuellen Stand der Rechtevergabe hat der Kollege Stromberg aus der Personalabteilung das Nachsehen. Durch die eben entfernte Anmeldesteuerung fehlt die Zuordnung seines Windows-Benutzerkontos zur Anmeldung <b>WaWiPersonal<\/b>. Sie wird auch nicht mehr ben&ouml;tigt. Anstelle dessen soll f&uuml;r das Windows-Benutzerkonto <b>Stromberg <\/b>eine eigene Anmeldung im SQL Server erstellt werden. <\/p>\n<p>Dazu brauchen Sie zun&auml;chst einen weiteren Windows-Benutzer. &Ouml;ffnen Sie erneut die Computerverwaltung, wechseln Sie dort zum Eintrag <b>Lokale Benutzer und Gruppen <\/b>und w&auml;hlen Sie im Kontextmen&uuml; des Ordners <b>Benutzer <\/b>den Eintrag <b>Neuer Benutzer<\/b>. Im folgenden Dialog erfassen Sie die Daten zum Kollegen <b>Stromberg <\/b>wie in Bild 14 und legen das neue Windows-Benutzerkonto mit einem Klick auf <b>Erstellen <\/b>an. Danach beenden Sie den Dialog und die Computerverwaltung.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.14.png\" alt=\"Windows-Benutzer Stromberg\" width=\"349,5589\" height=\"355,0782\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 14: Windows-Benutzer Stromberg<\/span><\/b><\/p>\n<p>Anschlie&szlig;end gehen Sie zum SQL Server Management Studio, navigieren &uuml;ber <b>Sicherheit <\/b>zum Ordner <b>Anmeldungen <\/b>und klicken in dessen Kontextmen&uuml; auf <b>Neue Anmeldung<\/b>. Im Dialog <b>Anmeldung &#8211; Neu <\/b>w&auml;hlen Sie &uuml;ber <b>Suchen <\/b>das eben erstellte Windows-Benutzerkonto <b>Stromberg <\/b>aus, legen als Standarddatenbank <b>WaWi_SQL <\/b>fest und wechseln zur Seite <b>Benutzerzuordnung<\/b>. Hier aktivieren Sie die Datenbank <b>WaWi_SQL <\/b>sowie die Datenbankrollen <b>db_datareader<\/b>, <b>db_datawriter <\/b>und <b>edb_execute<\/b>. Mit einem Klick auf <b>OK <\/b>legen Sie die Anmeldung sowie den zugeh&ouml;rigen Benutzer in der Datenbank mitsamt den Zugriffsrechten an.<\/p>\n<p>Um die neue Anmeldung zu testen, klicken Sie mit der rechten Maustaste und gedr&uuml;ckter Umschalt-Taste auf das Access-Symbol in der Taskleiste und w&auml;hlen <b>Als anderer Benutzer ausf&uuml;hren<\/b>. Dieses Mal geben Sie im Anmeldedialog die Daten des Kollegen Stromberg ein. Nach einem Klick auf <b>OK <\/b>startet Access mit den Rechten des Windows-Benutzerkontos <b>Stromberg <\/b>und verlangt auch f&uuml;r dieses eine Best&auml;tigung der Lizenzbestimmungen und Datenschutzeinstellungen. Nachdem Sie die rechtlichen Punkte gekl&auml;rt haben, &ouml;ffnen Sie die Beispielapplikation <b>WaWi v2 <\/b>und klicken auf die Schaltfl&auml;che <b>Inhalte aktivieren<\/b>. Sie sehen das Start-Formular mit dem Namen <b>Stromberg <\/b>und den aktiven Schaltfl&auml;chen der Personal-Abteilung (siehe Bild 15). Testen Sie die neue Anmeldung mit den Schaltfl&auml;chen <b>Geburtstagsliste <\/b>und <b>Bewerber<\/b>. Beide liefern Ihnen die angeforderten Daten. Womit der Test der Anmeldung <b>Stromberg <\/b>ebenfalls erfolgreich abgeschlossen w&auml;re.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.15.png\" alt=\"Start-Formular f&uuml;r Stromberg\" width=\"424,5589\" height=\"165,192\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 15: Start-Formular f&uuml;r Stromberg<\/span><\/b><\/p>\n<h2>Eine Anmeldung f&uuml;r eine Windows-Gruppe<\/h2>\n<p>Bisher kennen Sie von dem Beispielunternehmen nur Frau Bienlein und Herrn Stromberg. Dabei gibt es noch weitere Kollegen, die mit den Daten der SQL Server-Datenbank <b>WaWi_SQL <\/b>arbeiten. F&uuml;r diese Mitarbeiter m&uuml;ssten Sie die entsprechenden Anmeldungen im SQL Server anlegen &#8211; oder Sie verwenden stattdessen Windows-Gruppen.<\/p>\n<p>Es gibt viele M&ouml;glichkeiten zur Gruppenbildung. Eine oft verwendete Variante bildet die Abteilungen eines Unternehmens ab. Pro Abteilung wird eine Windows-Gruppe erstellt und dieser die Windows-Benutzerkonten der entsprechenden Mitarbeiter zugeordnet. In der Beispielumgebung w&auml;re das eine Gruppe f&uuml;r den Vertrieb und eine weitere f&uuml;r die Personalabteilung. Diesen Gruppen geben Sie dann sowohl in Ihrem Netzwerk wie im SQL Server die entsprechenden Rechte. <\/p>\n<p>Am besten denken Sie von Anfang an in Gruppen. Selbst wenn in einer Abteilung nur eine Person arbeitet. Der Vorteil liegt auf der Hand. Ordnen Sie die Zugriffsrechte der Person zu, m&uuml;ssen Sie dies bei einem neuen Kollegen wiederholen. Erstellen Sie jedoch eine Gruppe und vergeben dieser die Zugriffsrechte, ist das Windows-Benutzerkonto des neuen Mitarbeiters lediglich in die Gruppe aufzunehmen. Die m&uuml;hsame Vergabe von Zugriffsrechten an den einzelnen Windows-Benutzerkonten entf&auml;llt.<\/p>\n<p>&Auml;hnlich ist es im SQL Server. Hier legen Sie nicht pro Windows-Benutzerkonto eine Anmeldung an, sondern nur f&uuml;r die Windows-Gruppen. Durch eine solche Anmeldung erhalten alle Mitglieder der jeweiligen Windows-Gruppe den Zugang zum SQL Server. Die Zugriffsrechte auf die Daten ergeben sich wie bisher durch die Zuordnung der Anmeldung zu den einzelnen Datenbanken. Doch der Reihe nach. Als erstes ben&ouml;tigen Sie Windows-Gruppen.<\/p>\n<p>&Ouml;ffnen Sie die Computerverwaltung aufs Neue. Dieses Mal markieren Sie im Ordner <b>Lokale Benutzer und Gruppen <\/b>den Eintrag <b>Gruppen <\/b>und w&auml;hlen aus dessen Kontextmen&uuml; <b>Neue Gruppe<\/b>. Nennen Sie die Gruppe <b>Vertrieb <\/b>und klicken Sie auf <b>Hinzuf&uuml;gen<\/b>. In dem Auswahldialog geben Sie <b>Bienlein <\/b>ein und beenden die Auswahl mit <b>OK<\/b>. Zur&uuml;ck im Dialog <b>Neue Gruppe <\/b>sehen Sie nun das Windows-Benutzerkonto <b>Bienlein <\/b>als Mitglied der Gruppe <b>Vertrieb <\/b>(siehe Bild 16). Best&auml;tigen Sie die neue Gruppe mit <b>Erstellen <\/b>und wiederholen Sie den Vorgang f&uuml;r eine weitere Gruppe mit der Bezeichnung <b>Personal<\/b>. Dieser ordnen Sie das Windows-Benutzerkonto <b>Stromberg <\/b>zu. Nach einem weiteren Klick auf <b>Erstellen <\/b>schlie&szlig;en Sie den Dialog mit der Schaltfl&auml;che <b>OK<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.16.png\" alt=\"Windows-Gruppe Vertrieb\" width=\"349,5589\" height=\"355,0782\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 16: Windows-Gruppe Vertrieb<\/span><\/b><\/p>\n<p>Danach legen Sie im SQL Server Management Studio f&uuml;r beide Gruppen die Anmeldungen an. Dabei gehen Sie zun&auml;chst genauso vor wie bei einer Anmeldung zu einem Windows-Benutzerkonto. Erneut erweitern Sie den Ordner <b>Sicherheit <\/b>und w&auml;hlen im Kontextmen&uuml; des Unterordners <b>Anmeldungen <\/b>den Eintrag <b>Neue Anmeldung<\/b>. Im Dialog &ouml;ffnen Sie &uuml;ber <b>Suchen <\/b>die Auswahl <b>Benutzer oder Gruppe ausw&auml;hlen <\/b>und geben die Windows-Gruppe <b>Personal <\/b>ein. Ein Klick auf <b>Namen &uuml;berpr&uuml;fen <\/b>liefert Ihnen jedoch nicht die gew&uuml;nschte Windows-Gruppe. Stattdessen erhalten Sie eine Fehlermeldung mit der Aussage, dass der angegebene Benutzer oder das integrierte Sicherheitsprinzipal nicht existiert. Nein, Sie haben nichts falsch gemacht. Sie m&uuml;ssen Ihre Auswahl nur etwas konkretisieren. Dazu klicken Sie auf <b>Objekttypen <\/b>und aktivieren in dem folgenden Dialog die Option <b>Gruppen <\/b>(siehe Bild 17).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.17.png\" alt=\"Die fehlende Grundeinstellung\" width=\"424,5589\" height=\"246,7376\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 17: Die fehlende Grundeinstellung<\/span><\/b><\/p>\n<p>Obwohl Microsoft die Verwendung von Gruppen ausdr&uuml;cklich empfiehlt, scheint es hier dennoch an der entsprechenden Grundeinstellung zu fehlen. Irgendwie hat Microsoft an dieser Stelle zudem etwas Anpassungsschwierigkeiten, denn Sie m&uuml;ssen die Option immer wieder aufs Neue aktivieren, wenn Sie eine Anmeldung zu einer Windows-Gruppe erstellen m&ouml;chten. Mit dieser erweiterten Suche wird die Windows-Gruppe nach einem Klick auf <b>Namen &uuml;berpr&uuml;fen <\/b>dann auch gefunden. Die Auswahl &uuml;bernehmen Sie mit einem Klick auf <b>OK<\/b>. Zur&uuml;ck im Dialog <b>Anmeldung &#8211; Neu <\/b>w&auml;hlen Sie noch als Standarddatenbank <b>WaWi_SQL <\/b>aus, bevor Sie zur Seite <b>Benutzerzuordnung <\/b>wechseln.<\/p>\n<p>Die Anmeldung zur Windows-Gruppe <b>Personal <\/b>soll die gleichen Rechte wie die Anmeldung <b>Stromberg <\/b>erhalten. Dazu aktivieren Sie im oberen Teil des Dialogs die Datenbank <b>WaWi_SQL <\/b>und im unteren Bereich die Datenbankrollen <b>db_datareader<\/b>, <b>db_datawriter <\/b>und <b>edb_execute<\/b>. Soweit so gut, nur klicken Sie jetzt bitte nicht auf <b>OK<\/b>. Vielmehr verwenden Sie an dieser Stelle wieder die Schaltfl&auml;che <b>Skript<\/b>, wodurch Sie die entsprechenden T-SQL-Befehle zur Rechtevergabe in einer neuen Registerkarte erhalten. Den Dialog schlie&szlig;en Sie mit <b>Abbrechen<\/b>.<\/p>\n<p>In der Registerkarte k&ouml;nnen Sie die T-SQL-Befehle nun etwas strukturieren, mit entsprechenden Kommentaren erg&auml;nzen und letztendlich als Dokumentation unter dem Namen <b>Rechtevergabe Personal <\/b>speichern (siehe Bild 18).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.18.png\" alt=\"Rechtevergabe f&uuml;r die Anmeldung Personal\" width=\"624,559\" height=\"335,7004\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 18: Rechtevergabe f&uuml;r die Anmeldung Personal<\/span><\/b><\/p>\n<p>Ein Klick auf <b>Ausf&uuml;hren <\/b>legt dann die neue Anmeldung mitsamt dem zugeh&ouml;rigen Benutzer in der Datenbank <b>WaWi_SQL <\/b>und dessen Zugriffsrechten an. Dass es sich bei der neuen Anmeldung um eine Windows-Gruppe handelt, sehen Sie an dem Symbol der Anmeldung. W&auml;hrend bei der Anmeldung <b>Stromberg <\/b>nur ein Kopf abgebildet ist, zeigt das Icon zur Anmeldung <b>Personal <\/b>zwei K&ouml;pfe (siehe Bild 19).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.19.png\" alt=\"Symbole der Windows-Authentifizierung\" width=\"299,5588\" height=\"83,30925\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 19: Symbole der Windows-Authentifizierung<\/span><\/b><\/p>\n<p>Die Anmeldung zur Windows-Gruppe <b>Vertrieb <\/b>erstellen Sie direkt per T-SQL-Skript. Dazu kopieren Sie das eben erstelle Skript <b>Rechtevergabe Personal <\/b>und speichern es unter der Bezeichnung <b>Rechtevergabe Vertrieb<\/b>. Das neue Skript &ouml;ffnen Sie im SQL Server Management Studio &uuml;ber <b>Datei|&Ouml;ffnen|Datei <\/b>und ersetzen dort den Begriff <b>Personal <\/b>mit <b>Vertrieb<\/b>. Beide Anmeldungen haben in der Datenbank <b>WaWi_SQL <\/b>erst einmal die gleichen Rechte. Nur wird dem Vertrieb der Zugriff auf die Objekte der Personalabteilung verweigert. Diese erweiterte Rechtevergabe haben Sie bereits f&uuml;r die Anmeldung <b>Bienlein <\/b>definiert und in einem eigenen Skript gespeichert. &Ouml;ffnen Sie dieses Skript und &uuml;bernehmen Sie die <b>DENY<\/b>-Anweisungen in ihr neues Skript. In den so &uuml;bernommenen Zeilen tauschen Sie den Namen <b>Bienlein <\/b>mit <b>Vertrieb <\/b>aus. Heraus kommt ein Skript wie in Bild 20, das Sie nun &uuml;ber die Taste <b>F5 <\/b>ausf&uuml;hren und dann in Ihrer Dokumentation speichern. Das Skript zur Rechtevergabe der Anmeldung <b>Bienlein <\/b>k&ouml;nnen Sie l&ouml;schen. Ihre Dokumentation umfasst nun zwei T-SQL-Skripte, eines mit den Rechten zur Anmeldung <b>Vertrieb <\/b>und eines zur Anmeldung <b>Personal<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.20.png\" alt=\"Rechtevergabe f&uuml;r die Anmeldung Vertrieb \" width=\"574,559\" height=\"459,2924\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 20: Rechtevergabe f&uuml;r die Anmeldung Vertrieb <\/span><\/b><\/p>\n<h2>L&ouml;schen einer Anmeldung<\/h2>\n<p>Durch die beiden neuen Anmeldungen <b>Vertrieb <\/b>und <b>Personal <\/b>sind die Anmeldungen <b>Stromberg <\/b>und <b>Bienlein <\/b>nicht mehr erforderlich und k&ouml;nnen entfernt werden. Am besten beginnen Sie mit der Anmeldung <b>Stromberg<\/b>, besitzt diese doch volle Lese- und Schreibrechte. Dazu w&auml;hlen Sie aus dem Kontextmen&uuml; der Anmeldung den Eintrag <b>L&ouml;schen<\/b>. Zur Sicherheit erhalten Sie einen etwas &uuml;berdimensionierten Dialog, der Sie dar&uuml;ber informiert, was genau Sie gleich ausl&ouml;sen werden. Weitaus wichtiger ist jedoch der Hinweis, den Sie nach einem Klick auf <b>OK <\/b>erhalten (siehe Bild 21). Dieser r&auml;t Ihnen zun&auml;chst die zugeh&ouml;rigen Benutzer in den Datenbanken zu entfernen. Das ist ein wichtiger Punkt beim L&ouml;schen bestehender Anmeldungen. Ohne vorherige Pr&uuml;fung der Benutzer entfernen Sie wom&ouml;glich eine Anmeldung, die f&uuml;r den Zugriff auf eine oder mehrere Datenbanken noch ben&ouml;tigt wird. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.21.png\" alt=\"Hinweis beim L&ouml;schen einer Anmeldung\" width=\"599,559\" height=\"142,2348\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 21: Hinweis beim L&ouml;schen einer Anmeldung<\/span><\/b><\/p>\n<p>Hinzu kommt, dass Sie die Anmeldung zwar ohne weiteres l&ouml;schen k&ouml;nnen, die Benutzer in den Datenbanken mitsamt den Zugriffsrechten jedoch bestehen bleiben. Solche verwaisten Benutzer stellen wegen den immer noch existierenden Zugriffsrechten eine Sicherheitsl&uuml;cke dar. Angenommen, der Kollege Stromberg wechselt in die Abteilung <b>Controlling<\/b>. Als Folge entfernen Sie sein Windows-Benutzerkonto aus der Windows-Gruppe <b>Personal<\/b>. Wodurch ihm der Zugang zum SQL Server und somit zur Datenbank <b>WaWi_SQL <\/b>nicht mehr zur Verf&uuml;gung steht. Als Controller ben&ouml;tigt Herr Stromberg einen Zugriff auf die Datenbank <b>Auswertungen<\/b>. Hierzu legen Sie im SQL Server eine Anmeldung f&uuml;r das Windows-Benutzerkonto <b>Stromberg <\/b>an und ordnen dieses der Datenbank zu. Mit dieser Anmeldung hat der Kollege Stromberg jetzt nicht nur Zugriff auf die Datenbank <b>Auswertungen<\/b>, sondern auch wieder auf die Datenbank <b>WaWi_SQL<\/b>. Dort existiert immer noch ein Benutzer mit einem Verweis zur Anmeldung <b>Stromberg <\/b>und dieser Verweis ist durch die neu erstellte Anmeldung wieder vollst&auml;ndig. Somit besitzt Herr Stromberg unerlaubterweise den vollen Zugriff auf die Daten der Datenbank <b>WaWi_SQL<\/b>. <\/p>\n<p>Wenn das keine guten Gr&uuml;nde sind, den L&ouml;schvorgang erst einmal abzubrechen und sich vorher die Benutzerzuordnungen anzuschauen. Schlie&szlig;en Sie den Sicherheitshinweis mit <b>Cancel <\/b>und einem weiteren Klick auf <b>Abbrechen<\/b>. Danach &ouml;ffnen Sie den Dialog zur Anmeldung mit einem Doppelklick auf den Eintrag <b>Stromberg<\/b>. In der Seite <b>Benutzerzuordnung <\/b>pr&uuml;fen Sie die einzelnen Zuordnungen der Anmeldung zu den Datenbanken. Sollte auch nur eine der Zuordnungen noch ben&ouml;tigt werden, d&uuml;rfen Sie die Anmeldung nicht l&ouml;schen. In der Beispielumgebung ist dies recht einfach. Die Anmeldung ist lediglich der Datenbank <b>WaWi_SQL <\/b>zugeordnet. Deaktivieren Sie die Zuordnung und klicken Sie auf <b>OK<\/b>. Hiermit wird der Benutzer in der Datenbank gel&ouml;scht und der Dialog geschlossen. Erst jetzt k&ouml;nnen Sie die Anmeldung <b>Stromberg <\/b>bedenkenlos entfernen. Anschlie&szlig;end wiederholen Sie den Vorgang mit der Anmeldung Bienlein. <\/p>\n<p>Bleiben noch die Anmeldungen <b>WaWiMa <\/b>und <b>WaWiPersonal<\/b>. Beide sind aktiv und somit ebenfalls eine Sicherheitsl&uuml;cke. Jede Person mit Kenntnis dieser Anmeldungen und der jeweiligen Kennw&ouml;rter besitzt die entsprechenden Rechte f&uuml;r den Datenzugriff. So ist Frau Bienlein mit der Anmeldung <b>WaWiPersonal <\/b>weiterhin in der Lage auf die Daten der Personalabteilung zuzugreifen. Aus diesem Grund sollten Sie Anmeldungen mit SQL Server-Authentifizierungen umgehend l&ouml;schen, wenn Sie diese nicht mehr ben&ouml;tigen. Dabei gehen Sie genauso vor wie eben bei den Anmeldungen <b>Stromberg <\/b>und <b>Bienlein<\/b>. Zun&auml;chst entfernen Sie zu den Anmeldungen die Benutzer in den Datenbanken und anschlie&szlig;end die Anmeldungen selbst. <\/p>\n<h2>Vorteile von Windows-Gruppen<\/h2>\n<p>Im SQL Server existiert f&uuml;r Frau Bienlein nun weder die Anmeldung <b>WaWiMa <\/b>noch eine Anmeldung zu ihrem Windows-Benutzerkonto. Die Authentifizierung am SQL Server und der Datenzugriff in der Datenbank erfolgt ausschlie&szlig;lich durch die Gruppenzugeh&ouml;rigkeit des Windows-Benutzerkontos <b>Bienlein <\/b>zur Windows-Gruppe <b>Vertrieb<\/b>. <\/p>\n<p>Um dies zu testen, wechseln Sie erneut die Identit&auml;t und &ouml;ffnen die Beispielapplikation <b>WaWi v2 <\/b>mit dem Benutzerkonto <b>Bienlein<\/b>. Als Ergebnis zeigt das Start-Formular die aktiven Schaltfl&auml;chen des Vertriebs. Jede der Schaltfl&auml;chen liefert Ihnen die gew&uuml;nschten Daten und ein Doppelklick auf die Pass Through-Abfrage <b>ptSelectGeburtstagsliste <\/b>zudem die erwartete Fehlermeldung. Sie sehen, die Rechtevergabe f&uuml;r Frau Bienlein funktioniert, obwohl im SQL Server f&uuml;r das Windows-Benutzerkonto <b>Bienlein <\/b>keine eigene Anmeldung existiert.<\/p>\n<p>Mit dem Windows-Benutzerkonto <b>Stromberg <\/b>verh&auml;lt es sich &auml;hnlich. Starten Sie die Beispielapplikation als Anwender <b>Stromberg<\/b>, k&ouml;nnen Sie im Navigationsbereich jede Tabelle und Pass Through-Abfrage &ouml;ffnen. Auch das entspricht der aktuellen Rechtevergabe. Das Windows-Benutzerkonto <b>Stromberg <\/b>geh&ouml;rt zur Windows-Gruppe <b>Personal <\/b>und f&uuml;r diese Gruppe gibt es im SQL Server eine Anmeldung mit umfassenden Rechten in der Datenbank <b>WaWi_SQL<\/b>.<\/p>\n<p>Ein gro&szlig;er Vorteil der Zugriffssteuerung &uuml;ber Windows-Gruppen liegt in der Einfachheit der Rechtevergabe. Insbesondere wenn Sie einem neuen Anwender Rechte zuweisen m&uuml;ssen. &Ouml;ffnen Sie die Computerverwaltung und erweitern Sie den Ordner <b>Lokale Benutzer und Gruppen<\/b>. Nach einem Rechtsklick auf den Ordner <b>Benutzer <\/b>und der Auswahl von <b>Neuer Benutzer <\/b>erfassen Sie ein Benutzerkonto f&uuml;r die Kollegin Beimer (siehe Bild 22).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.22.png\" alt=\"Windows-Benutzer Beimer\" width=\"424,5589\" height=\"431,2625\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 22: Windows-Benutzer Beimer<\/span><\/b><\/p>\n<p>Anschlie&szlig;end speichern Sie die Eingabe mit der Schaltfl&auml;che <b>Erstellen <\/b>und beenden Sie den Dialog. Danach &ouml;ffnen Sie das neue Benutzerkonto per Doppelklick und wechseln zur Registerkarte <b>Mitglied von<\/b>. Hier legen Sie Gruppenzugeh&ouml;rigkeit &uuml;ber die Schaltfl&auml;che <b>Hinzuf&uuml;gen <\/b>fest. Geben Sie in dem folgenden Dialog die Windows-Gruppe <b>Vertrieb <\/b>ein und best&auml;tigen Sie dies mit <b>OK<\/b>. Mit einem weiteren Klick auf <b>OK <\/b>beenden Sie die Gruppenzuordnung. Das war es schon. Mehr ist nicht erforderlich. Durch die Gruppenzuordnung besitzt Frau Beimer bereits alle notwendigen Rechte f&uuml;r den Datenzugriff. An der Rechtevergabe im SQL Server &auml;ndert sich nichts.<\/p>\n<p>Testen Sie es mal. &Ouml;ffnen Sie die Beispielapplikation mit dem Windows-Benutzerkonto <b>Beimer<\/b>. Nach Best&auml;tigen der Lizenzvereinbarung und der Datenschutzeinstellungen sowie der Freigabe der aktiven Inhalte sehen Sie wie bei Frau Bienlein das Start-Formular mit den aktiven Schaltfl&auml;chen f&uuml;r den Vertrieb. Ein kurzer Test best&auml;tigt Ihnen die Rechtevergabe. So zeigt ein Klick auf die Schaltfl&auml;che <b>Artikel <\/b>die aktuelle Artikelliste, w&auml;hrend ein Doppelklick auf die Pass Through-Abfrage <b>ptSelectGeburtstagsliste <\/b>die bekannte Fehlermeldung liefert.<\/p>\n<p>Wenn das keine einfache Rechtevergabe f&uuml;r einen neuen Anwender ist. Im Grunde genommen haben Sie als Datenbankadministrator gar nichts damit zu tun. Das Erstellen neuer Windows-Benutzerkonten ist Aufgabe der IT-Systemadministration. Hier werden die Anwender in Windows-Gruppen zusammengefasst und deren Zugriffsrechte f&uuml;r das Dateisystem und weiterer Applikationen verwaltet. Diese unternehmensweit g&uuml;ltige Gruppenbildung &uuml;bernehmen Sie einfach in Ihren SQL Server. <\/p>\n<p>Ebenso geh&ouml;rt das Verwalten von Windows-Benutzerkonten zu den Aufgaben des IT-Systemadministrators. Angenommen, der Kollege Stromberg soll f&uuml;r 14 Tage im Vertrieb aushelfen. F&uuml;r diesen Zeitraum ordnet der IT-Systemadministrator das Windows-Benutzerkonto <b>Stromberg <\/b>der Windows-Gruppe <b>Vertrieb <\/b>zu und entfernt die Zugeh&ouml;rigkeit zur Gruppe <b>Personal<\/b>. Stellen Sie das Szenario doch einmal in Ihrer Computerverwaltung nach. &Ouml;ffnen Sie das Windows-Benutzerkonto <b>Stromberg <\/b>und wechseln Sie zur Seite <b>Mitglied <\/b>von. Dort markieren Sie die Gruppe <b>Personal <\/b>und klicken auf <b>Entfernen<\/b>. Danach nehmen Sie das Windows-Benutzerkonto &uuml;ber die Schaltfl&auml;che <b>Hinzuf&uuml;gen <\/b>in die Windows-Gruppe <b>Vertrieb <\/b>auf. Jetzt &ouml;ffnen Sie die Beispielapplikation mit dem Benutzerkonto <b>Stromberg <\/b>und Sie sehen das Start-Formular mit den Funktionen des Vertriebs. <\/p>\n<p>M&ouml;glich macht dies die neue Formularsteuerung. Sie finden diese in der Funktion <b>fBerechtigungen <\/b>im VBA-Code des Start-Formulars. In der alten Version wurde zun&auml;chst der Name des Windows-Benutzerkontos vom aktuell angemeldeten Anwender ermittelt. Abh&auml;ngig vom Namen folgten dann das Aktivieren und Deaktivieren der Schaltfl&auml;chen sowie die Ausgabe des Namens im Kopf des Formulars und der Applikation. Der VBA-Code aus Bild 23 zeigt einen Teil dieser simplen Funktionalit&auml;t.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.23.png\" alt=\"Formularsteuerung f&uuml;r Bienlein\" width=\"424,5589\" height=\"249,0323\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 23: Formularsteuerung f&uuml;r Bienlein<\/span><\/b><\/p>\n<p>Bisher war das absolut ausreichend. Mit der Umstellung auf Windows-Gruppen hat die alte Variante jedoch einen gravierenden Nachteil. Bei einem Wechsel eines Windows-Benutzerkontos in eine andere Windows-Gruppe hat sie keine Auswirkung. Schlie&szlig;lich bezieht sie sich auf den Namen des Windows-Benutzerkontos und nicht auf den der Windows-Gruppe. Herr Stromberg w&uuml;rde also weiterhin die Schaltfl&auml;chen der Personal-Abteilung sehen.<\/p>\n<p>Aus diesem Grund ist in der neuen Version nicht mehr das Windows-Benutzerkonto des angemeldeten Anwenders ausschlaggebend, sondern dessen aktuelle Authentifizierung am SQL Server. Im Fall Stromberg ist dies die Anmeldung <b>Vertrieb <\/b>mit dem Verweis auf die gleichnamige Windows-Gruppe. Die Daten zur Authentifizierung ermittelt eine Pass Through-Abfrage, die wiederum die gespeicherte Prozedur <b>pSelectAnmeldung <\/b>ausf&uuml;hrt. Inhalt dieser gespeicherten Prozedur ist die folgende Anweisung.<\/p>\n<pre>SELECT&nbsp;&nbsp;&nbsp;&nbsp;[name]<span style=\"color:blue;\"> As <\/span>VerwendeteAnmeldung, SUSER_SNAME()<span style=\"color:blue;\"> As <\/span>AktuelleAnmeldung\r\nFROM&nbsp;&nbsp;&nbsp;&nbsp;sys.user_token\r\nWHERE&nbsp;&nbsp;&nbsp;&nbsp;[type] IN (''Windows Login'', ''Windows Group'');<\/pre>\n<p>Die <b>SELECT<\/b>-Anweisung basiert auf der Systemsicht <b>sys.user_token<\/b>, die Informationen zur Rechtevergabe des aktuellen Datenbankzugriffs bereitstellt. Dazu geh&ouml;ren unter anderem die Mitgliedschaft zu den Datenbankrollen und die zur Authentifizierung verwendete Anmeldung. Da an dieser Stelle nur die Anmeldung interessiert, wird die Datenausgabe per <b>WHERE<\/b>-Bedingung auf die Typen <b>Windows Login <\/b>und <b>Windows Group <\/b>begrenzt.<\/p>\n<p>Als Ergebnis sehen Sie in der Spalte <b>VerwendeteAnmeldung <\/b>die zur Authentifizierung genutzte Anmeldung, in diesem Fall die der Windows-Gruppe <b>Vertrieb <\/b>(siehe Bild 24).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.24.png\" alt=\"Systemsicht sys.user_token\" width=\"524,559\" height=\"158,4998\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 24: Systemsicht sys.user_token<\/span><\/b><\/p>\n<p>Die Information zum Windows-Benutzerkonto des tats&auml;chlich angemeldeten Anwenders fehlt jedoch in der Ausgabe der Systemsicht. Hierzu bietet SQL Server die Systemfunktion <b>SUSER_SNAME()<\/b>. Als zus&auml;tzliche Ausgabespalte in der <b>SELECT<\/b>-Anweisung liefert sie den Wert <b>Stromberg<\/b>. Anhand dieser Informationen findet in dem folgenden <b>IF<\/b>-Block die Formularsteuerung statt. Diese gilt f&uuml;r alle Mitglieder der Windows-Gruppe <b>Vertrieb<\/b>, also f&uuml;r die Anwender <b>Bienlein<\/b>, <b>Beimer <\/b>und aktuell auch <b>Stromberg<\/b>.<\/p>\n<pre><span style=\"color:blue;\">If <\/span>strAnmeldung = \"Vertrieb\"<span style=\"color:blue;\"> Then<\/span>\r\nMe.cmdAuftraege.Enabled = <span style=\"color:blue;\">True<\/span>\r\nMe.cmdKunden.Enabled = <span style=\"color:blue;\">True<\/span>\r\n...\r\nMe.cmdStellen.Enabled = <span style=\"color:blue;\">False<\/span>\r\nMe.cmdGeburtstagsliste.Enabled = <span style=\"color:blue;\">False<\/span>\r\n...\r\nMe.Caption = \"Start - Benutzer \" & strBenutzer\r\n<span style=\"color:blue;\">End If<\/span><\/pre>\n<p>Soweit zur optischen Darstellung der Benutzerrechte, doch wie sieht es eigentlich mit den tats&auml;chlichen Zugriffsrechten aus Das soll ein einfacher Test zeigen. Dazu bietet sich wieder mal die Pass Through-Abfrage <b>ptSelectGeburtstagsliste <\/b>an. Wechseln Sie zum Navigationsbereich und &ouml;ffnen Sie die Pass Through-Abfrage. Als Ergebnis erhalten Sie die Ihnen bereits gut bekannte Fehlermeldung. Der Test ist erfolgreich. Das Ausf&uuml;hren der gespeicherten Prozedur <b>pSelectGeburststagsliste <\/b>wird dem Windows-Benutzerkonto <b>Stromberg <\/b>verweigert, geh&ouml;rt es doch inzwischen zur Windows-Gruppe <b>Vertrieb<\/b>. Obwohl es mit der neuen Gruppenzugeh&ouml;rigkeit eine entscheidende &Auml;nderung der Zugriffsrechte f&uuml;r das Windows-Benutzerkonto gab, hatten Sie als Datenbankadministrator erneut nichts damit zu tun. Die Rechtevergabe liegt alleine bei der IT-Systemadministration. <\/p>\n<p>Ein guter Grund, Windows-Gruppen als Anmeldungen zu verwenden. Mit einer Ausnahme: Die Windows-Benutzerkonten der Datenbankadministratoren. Als Datenbankadministrator sind Sie verantwortlich f&uuml;r den SQL Server und die dort verwalteten Datenbanken und Daten. Insofern sollten Sie wissen, welcher Ihrer Kollegen mit administrativen Rechten im SQL Server arbeitet. Genau dies sehen Sie bei einer Windows-Gruppe aber nicht. M&ouml;glicherweise sind Ihnen die Mitglieder dieser Windows-Gruppe nicht einmal bekannt, obliegt die Verwaltung der Gruppenzugeh&ouml;rigkeit doch dem IT-Systemadministrator. Wie wollen Sie Verantwortung f&uuml;r die Daten &uuml;bernehmen, wenn Sie nicht einmal wissen, welche Personen administrative Rechte im SQL Server besitzen Deshalb sollten Sie f&uuml;r die Anmeldungen der Datenbankadministratoren ausschlie&szlig;lich deren pers&ouml;nliche Windows-Benutzerkonten verwenden. Nur so erkennen Sie die Anwender mit administrativen Rechten im SQL Server. <\/p>\n<p>Nebenbei sch&uuml;tzt Sie diese Vorgehensweise noch vor einer kleinen Falle. Meldet sich ein Datenbankadministrator &uuml;ber eine Windows-Gruppe am SQL Server an, kann er die Anmeldung zu dieser Windows-Gruppe l&ouml;schen und sich somit selbst den Zugang zum SQL Server entziehen. So etwas ist bei einer Anmeldung mit seinem pers&ouml;nlichen Windows-Benutzerkonto nicht m&ouml;glich. <\/p>\n<p>Mit der Windows-Authentifizierung profitieren Sie nicht nur von einer einfachen Verwaltung der Zugriffsrechte, Sie erhalten zudem eine weitaus h&ouml;here Sicherheit. Im Gegensatz zur SQL Server-Authentifizierung erfolgt der Zugang zum SQL Server nicht per Eingabe von Anmeldename und Kennwort, sondern mit der aktuellen Windows-Anmeldung des Anwenders. Ein Angreifer ben&ouml;tigt f&uuml;r einen unerlaubten Datenzugriff also ein g&uuml;ltiges Windows-Benutzerkonto mitsamt Kennwort. Das sollte ihm den Zugang um einiges erschweren. Ihre Anwender sind bestimmt soweit sensibilisiert, dass sie ihre Kennw&ouml;rter auf keinen Fall preisgeben.<\/p>\n<h2>Der Fall Bienlein<\/h2>\n<p>Frau Bienlein ist sauer. Sie h&auml;tte gerne einen neuen B&uuml;rostuhl. M&uuml;hsam hat sie in den letzten Stunden im Internet den passenden Stuhl gesucht und letztendlich auch gefunden. Doch ihr Abteilungsleiter war davon gar nicht begeistert. Er redete was von vertaner Arbeitszeit und Budgetgrenze. Der B&uuml;rostuhl sei au&szlig;erdem viel zu teuer. Als Abteilungsleiter darf er Eink&auml;ufe bis maximal 50 Euro selbst bestimmen. Alles andere geht den Weg &uuml;ber die Personalabteilung.<\/p>\n<p>Das findet Frau Bienlein nicht fair. Zur Genugtuung m&ouml;chte sie sich mit einer kleinen Gehaltserh&ouml;hung tr&ouml;sten. Sie startet die Access-Applikation <b>WaWi v2 <\/b>mit gedr&uuml;ckter Umschalt-Taste und erweitert den Navigationsbereich. Jetzt noch schnell mit der Access-Abfrage <b>Anmeldedaten <\/b>die Anmeldung <b>WaWiPersonal <\/b>zuordnen und schon kann sie nach einem Neustart der Access-Applikation ungest&ouml;rt auf die Tabelle <b>Mitarbeiter <\/b>zugreifen. Doch wo ist die Abfrage Im Navigationsbereich gibt es nur noch eine Access-Abfrage namens <b>Wareneingang<\/b>. Neugierig startet Frau Bienlein die Abfrage. Als Ergebnis sieht sie eine Liste mit Firmennamen und Bestelldaten, erg&auml;nzt mit Kennzeichen zum Wareneingang und Rechnungsnummern (siehe Bild 25). Frau Bienleins Interesse ist geweckt. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/Abb. 7.25.png\" alt=\"Access-Abfrage Wareneingang\" width=\"624,559\" height=\"163,7563\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 25: Access-Abfrage Wareneingang<\/span><\/b><\/p>\n<p>Sie wechselt in den Entwurfsmodus der Abfrage und sieht die Tabellen <b>Bestellungen<\/b>, <b>Bestelldetails <\/b>und <b>Lieferanten<\/b>. Nach und nach &ouml;ffnet sie die Tabellen und schaut sich die Daten an. Schnell erkennt sie den Zusammenhang. Die Daten bilden die Bestellvorg&auml;nge des Wareneingangs ab. Nebenbei bemerkt sie in der Tabelle <b>Lieferanten <\/b>den Eintrag <b>Schreibwaren Stiftler<\/b>. Super, denkt Frau Bienlein, da h&auml;tte ich mir meinen Stuhl ja direkt bestellen k&ouml;nnen.  <\/p>\n<p>Das bringt sie auf eine Idee. Rein theoretisch geben die drei Tabellen alles her, um den Stuhl zu bestellen. Sie muss lediglich in der Tabelle <b>Bestellungen <\/b>und <b>Bestelldetails <\/b>die entsprechenden Eintr&auml;ge vornehmen. Das w&auml;re dann aber doch zu auff&auml;llig. Wie sollte sie die Lieferung des Stuhls erkl&auml;ren Frau Bienlein schaut sich die Daten der Tabellen genauer an und entdeckt die Bankverbindung der Lieferanten. Sie denkt kurz an die Budgetgrenze und kommt auf eine viel bessere Idee. Doch f&uuml;r heute l&auml;sst sie es gut sein und geht in den Feierabend.<\/p>\n<p>Zuhause sucht Frau Bienlein im Internet einen Lieferanten f&uuml;r B&uuml;romaterialien. Nachdem sie sich f&uuml;r einen ad&auml;quaten Kandidaten entschieden hat, bestellt sie eine Kleinigkeit per Vorauskasse. Kurz darauf erh&auml;lt sie eine E-Mail mit der Bankverbindung des Lieferanten. Das war alles, was sie wissen wollte. Sie storniert ihre Bestellung. Anschlie&szlig;end geht sie zur Website der angegebenen Bank und er&ouml;ffnet dort ein Girokonto. <\/p>\n<p>Am n&auml;chsten Tag startet sie die Applikation <b>WaWi v2 <\/b>erneut mit gedr&uuml;ckter Umschalt-Taste und &ouml;ffnet die Tabelle <b>Lieferanten<\/b>. Sie gibt einen neuen Datensatz ein. Dabei verwendet sie die Firmenbezeichnung und Adresse des Unternehmens, f&uuml;r das sie sich gestern Abend entschieden hat. Als Bankverbindung hinterlegt sie die Daten ihres neuen Girokontos. Anschlie&szlig;end &ouml;ffnet sie die Tabelle <b>Bestellungen<\/b>. Hier erfasst Sie f&uuml;r ihren Lieferanten eine Bestellung mit dem heutigen Datum. F&uuml;r die erforderliche Mitarbeiter-ID schaut sie in die Bestellungen an den Lieferanten <b>Schreibwaren Stiftler <\/b>und &uuml;bernimmt eine der dort angegebenen IDs. Sie speichert den Datensatz und notiert sich die neu vergebene ID zu ihrer Bestellung. Nun geht es an die Positionen der Bestellung. Dabei orientiert sie sich weiterhin am Lieferanten <b>Schreibwaren Stiftler<\/b>. Sie filtert die Ansicht nach der ID des Lieferanten und schreibt sich einige der Bestell-IDs auf einen Zettel. Jetzt &ouml;ffnet sie die Tabelle <b>Bestelldetails<\/b>. Hier sucht sie anhand der notierten IDs nach Produkten mit einem geringen Bestellwert. Nach einigen Vergleichen entscheidet sie sich f&uuml;r das Produkt mit der ID <b>19<\/b>. In der letzten Zeile der Datenblattansicht tr&auml;gt sie die ID ihrer Bestellung ein, dann die Produkt-ID <b>19 <\/b>und erg&auml;nzt die Eingabe mit der Position <b>1<\/b>, dem Einzelpreis <b>1,50 <\/b>und der Menge <b>10<\/b>. Fertig ist die Bestellung mit einer Gesamtsumme von 15 Euro netto. Soweit so gut. Zufrieden beendet Frau Bienlein ihre kleine Aktion und widmet sich anderen Aufgaben.<\/p>\n<p>Kurz vor Monatsende startet sie die Applikation <b>WaWi v2 <\/b>mit gedr&uuml;ckter Umschalt-Taste. Sie &ouml;ffnet die Tabelle <b>Bestellungen <\/b>und geht direkt zu ihrer Bestellung. Dort &auml;ndert sie den Eintrag der Spalte <b>WareneingangKomplett <\/b>in <b>-1 <\/b>und gibt eine willk&uuml;rliche Rechnungsnummer ein. Fertig. Der Rest ist Warten. Warten, bis der monatliche Zahlungslauf der Buchhaltung erledigt ist. <\/p>\n<p>[50223]<\/p>\n<p>Am zweiten Tag des neuen Monats schaut Frau Bienlein abends per Online-Banking in ihr Bankkonto. Nerv&ouml;s &ouml;ffnet sie die Umsatzanzeige &#8211; und freut sich &uuml;ber 17,85 Euro. Tags darauf verwischt sie ihre Spuren. Dazu entfernt sie zun&auml;chst die Datens&auml;tze zu ihrer Bestellung und dann noch den Datensatz ihres fiktiven Lieferanten. Frau Bienlein freut sich schon auf das Monatsende, denn dann wird sie sich wieder eine Kleinigkeit bestellen. <\/p>\n<p>[50597]<\/p>\n<h2>Fazit und Bewertung<\/h2>\n<p>[51032]<\/p>\n<p>Kurz gesagt, bietet Ihnen die Windows-Authentifizierung mehr Sicherheit bei weniger Aufwand. Im Gegensatz zur SQL Server-Authentifizierung m&uuml;ssen Sie sich keinen Anmeldenamen ausdenken oder gar ein kompliziertes Kennwort vergeben. Sie verweisen lediglich auf das Windows- oder Active Directory-Benutzerkonto des Anwenders. Anschlie&szlig;end ordnen Sie die Anmeldung wie gewohnt einer oder mehreren Datenbanken zu, wobei dort ein Benutzer erstellt wird, dem Sie dann die entsprechenden Rechte zuweisen. Noch komfortabler ist die Verwendung von Gruppen. Eine Anmeldung basierend auf einer Windows- oder Active Directory-Gruppe erlaubt allen Mitgliedern der Gruppe die Authentifizierung am SQL Server und &uuml;ber den zugeh&ouml;rigen Benutzer in den Datenbanken den entsprechenden Datenzugriff.<\/p>\n<p>[51052]<\/p>\n<p>Fast nebenbei erhalten Sie mit der Windows-Authentifizierung einen weitaus besseren Zugriffsschutz. Schlie&szlig;lich ist weder die Ein- noch &Uuml;bergabe von Anmeldename und Kennwort erforderlich. Besser noch, Sie m&uuml;ssen die Anmeldedaten nicht mehr m&uuml;hsam in Ihrer Access-Applikation verstecken und sch&uuml;tzen. Die gr&ouml;&szlig;te Schwachstelle im bisherigen Sicherheitskonzept ist somit geschlossen.<\/p>\n<p>[51831]<\/p>\n<p>Wodurch Frau Bienlein der Zugriff auf die Tabelle <b>Mitarbeiter <\/b>nicht mehr m&ouml;glich ist. Bisher konnte sie die Daten dieser Tabelle &uuml;ber die SQL Server-Anmeldung <b>WaWiPersonal <\/b>&auml;ndern. Dazu hatte sie entweder die Anmeldedaten innerhalb der Access-Applikation manipuliert oder sich das zugeh&ouml;rige Kennwort verschafft. Beides war letztendlich m&ouml;glich, da der Anmeldevorgang automatisch durch die Applikation erfolgte. Der eigentliche Anwender spielte bei der Authentifizierung am SQL Server gar keine Rolle. Das hat sich mit der Windows-Authentifizierung ma&szlig;geblich ge&auml;ndert. Frau Bienlein greift nun mit ihrem Windows-Benutzerkonto auf die SQL Server-Datenbank zu und diesem wird der Zugriff auf die Tabelle <b>Mitarbeiter <\/b>explizit verweigert. Ihre unregelm&auml;&szlig;igen Gehaltserh&ouml;hungen sind Geschichte.<\/p>\n<p>[52212]<\/p>\n<p>Frau Bienlein w&auml;re nicht Frau Bienlein, h&auml;tte sie nicht einen neuen Weg f&uuml;r eine Gehaltsaufbesserung gefunden. Anstelle von Gehaltserh&ouml;hungen erfasst sie nun Bestellungen inklusive Wareneing&auml;nge f&uuml;r einen nicht existierenden Lieferanten. Die Zahlung dieser fiktiven Rechnungen &uuml;bernimmt der monatliche Zahlungslauf der Buchhaltung. Dabei wird die beim Lieferanten hinterlegte Bankverbindung verwendet, in diesem Fall eine Bankverbindung von Frau Bienlein. <\/p>\n<p>[53002]<\/p>\n<p>Die Bezahlung der nicht realen Eingangsrechnungen funktioniert zum einen durch die Freigabe von Bestellungen bis zu einer definierten Budgetgrenze und zum anderen durch die getrennte Datenverarbeitung der Bestellungen und dem Zahlungsvorgang. Diese Trennung erlaubt Frau Bienlein das problemlose Beseitigen ihrer Spuren. Da es keine direkte Verbindung der Datenbank <b>WaWi_SQL <\/b>zu den Daten der Buchhaltung gibt, kann sie die Bestellung inklusive Lieferanten ohne weiteres l&ouml;schen. <\/p>\n<p>[53459]<\/p>\n<p>Dieses Szenario stammt nicht aus einem schlechten Roman. Es ist Realit&auml;t. Das Zahlen von Rechnungen unterhalb definierter Budgetgrenzen an fiktive Lieferanten geh&ouml;rt zu den g&auml;ngigen Betrugsf&auml;llen. Wobei der Aufwand der Datenmanipulation in Wahrheit hoffentlich aufwendiger ist. M&ouml;glich wird dieses Szenario durch das immer noch nicht ausreichende Berechtigungskonzept. Im Bereich der Authentifizierung mag inzwischen eine sehr hohe Ebene erreicht sein, beim letztendlichen Datenzugriff ist aber noch einiges offen. Die Zugriffsrechte innerhalb der Datenbank sind weiterhin zu pauschal. SQL Server bietet Ihnen f&uuml;r eine detailliertere Rechtevergabe mehrere M&ouml;glichkeiten. Mit den Datenbankrollen nutzen Sie bereits eine davon. Wie Sie diese f&uuml;r ein wirksameres Berechtigungskonzept einsetzen, erfahren Sie im n&auml;chsten Beitrag.<\/p>\n<p>[53939]<\/p>\n<h2>Installationsanleitung der Beispielumgebung<\/h2>\n<p>[54765]<\/p>\n<ul>\n<li>SQL Server &#8211; Wechsel in den Gemischten Modus<\/li>\n<p>[54809]<\/p>\n<li>Starten Sie das SQL Server Management Studio.<\/li>\n<p>[54854]<\/p>\n<li>Melden Sie sich mit administrativen Rechten an.<\/li>\n<p>[54900]<\/p>\n<li>Klicken Sie mit der rechten Maustaste auf den ersten Eintrag im Objekt-Explorer.<\/li>\n<p>[54948]<\/p>\n<li>W&auml;hlen Sie den Men&uuml;punkt <b>Eigenschaften <\/b>und wechseln Sie im Dialog zur Seite <b>Sicherheit<\/b>.<\/li>\n<p>[55029]<\/p>\n<li>Aktivieren Sie die Option <b>SQL Server- und Windows-Authentifizierung<\/b>.<\/li>\n<p>[55117]<\/ul>\n<p>Sollte diese Option bereits aktiviert sein, k&ouml;nnen Sie die &Auml;nderung hier abbrechen. Die folgenden Schritte m&uuml;ssen Sie dann nicht ausf&uuml;hren.<\/p>\n<p>[55186]<\/p>\n<ul>\n<li>Speichern Sie die &Auml;nderung mit <b>OK<\/b>.<\/li>\n<p>[55326]<\/p>\n<li>Klicken Sie mit der rechten Maustaste auf den ersten Eintrag im Objekt-Explorer.<\/li>\n<p>[55361]<\/p>\n<li>W&auml;hlen Sie den Eintrag <b>Neu starten <\/b>und best&auml;tigen Sie die folgenden Meldungen.<\/li>\n<p>[55442]<\/ul>\n<p>Installation der Beispieldatenbank WaWi_SQL<\/p>\n<p>[55521]<\/p>\n<ul>\n<li>Starten Sie das SQL Server Management Studio.<\/li>\n<p>[55565]<\/p>\n<li>&Ouml;ffnen Sie &uuml;ber <b>Datei|&Ouml;ffnen|Datei <\/b>das Skript <b>WaWi_SQL.sql<\/b>.<\/li>\n<p>[55611]<\/p>\n<li>Klicken Sie in der Symbolleiste auf die Schaltfl&auml;che <b>Ausf&uuml;hren<\/b>.<\/li>\n<p>[55671]<\/p>\n<li>Das Anlegen der Datenbank ist abgeschlossen, wenn Sie im unteren Bereich die Ausgabe <b>Fertig! <\/b>sehen.<\/li>\n<p>[55735]<\/ul>\n<h2>Installation der Treiber<\/h2>\n<p>[55835]<\/p>\n<ul>\n<li>Installieren Sie den Treiber <b>Microsoft ODBC Driver 17 for SQL Server <\/b>auf Ihrem Rechner.<\/li>\n<p>[55860]<\/ul>\n<p>Sie finden den Treiber im Microsoft Downloadbereich unter dem Suchbegriff <b>ODBC Driver 17 for SQL Server<\/b>.<\/p>\n<p>[55948]<\/p>\n<ul>\n<li>Installieren Sie den Treiber <b>Microsoft OLE DB Driver 18 for SQL Server <\/b>auf Ihrem Rechner.<\/li>\n<p>[56053]<\/ul>\n<p>Sie finden den Treiber im Microsoft Downloadbereich unter dem Suchbegriff <b>MSOLEDBSQL<\/b>.<\/p>\n<p>[56143]<\/p>\n<h2>Beispielapplikation WaWi v2<\/h2>\n<p>[56229]<\/p>\n<ul>\n<li>Starten Sie die Access-Beispielapplikation <b>WaWi v2<\/b>.<\/li>\n<p>[56257]<\/p>\n<li>Best&auml;tigen Sie die Meldung und &ouml;ffnen Sie die lokale Tabelle <b>Benutzer<\/b>.<\/li>\n<p>[56309]<\/p>\n<li>&Uuml;berschreiben Sie den Eintrag <b>Hier k&ouml;nnte Ihr Name stehen &#8230; <\/b>mit der Bezeichnung Ihres Windows-Benutzerkontos.<\/li>\n<p>[56380]<\/p>\n<li>Schlie&szlig;en Sie die Tabelle <b>Benutzer<\/b>.<\/li>\n<p>[56490]<\/p>\n<li>&Ouml;ffnen Sie die lokale Tabelle <b>Datenquellen<\/b>.<\/li>\n<p>[56526]<\/p>\n<li>Tragen Sie in der Spalte <b>Server <\/b>den Namen Ihres SQL Servers ein. <\/li>\n<p>[56570]<\/ul>\n<p>Den Namen Ihres SQL Servers sehen Sie als ersten Eintrag im Objekt-Explorer im SQL Server Management Studio. Alternativ &ouml;ffnen Sie im SQL Server Management Studio mit einem Klick auf die Schaltfl&auml;che <b>Neue Abfrage <\/b>eine neue Registerkarte und geben dort den Befehl <b>SELECT @@Servername <\/b>ein. Nach einem Klick auf <b>Ausf&uuml;hren <\/b>sehen Sie als Ergebnis den Namen Ihres SQL Servers.<\/p>\n<p>[56636]<\/p>\n<ul>\n<li>Schlie&szlig;en Sie die Tabelle <b>Datenquellen<\/b>.<\/li>\n<p>[57007]<\/p>\n<li>&Ouml;ffnen Sie mit der Tastenkombination Strg<b> + G <\/b>den Direktbereich im VBA-Editor.<\/li>\n<p>[57047]<\/p>\n<li>F&uuml;hren Sie im Direktbereich zun&auml;chst die Funktion <b>fTabelleAlsSystemObjekt &#8222;Benutzer&#8220;, True <\/b>und dann die Funktion <b>fTabelleAlsSystemObjekt &#8222;Datenquellen&#8220;, True <\/b>aus. Durch diese Aufrufe werden die beiden Tabellen als Systemobjekte definiert. <\/li>\n<p>[57126]<\/p>\n<li>Gehen Sie zur&uuml;ck zu Access und &ouml;ffnen Sie das Formular <b>Verbindung<\/b>.<\/li>\n<p>[57366]<\/ul>\n<p>Beim &Ouml;ffnen des Formulars werden die Tabellen eingebunden und die Verbindungszeichenfolgen der Pass Through-Abfragen angepasst. Danach wird das Formular geschlossen und das Start-Formular ge&ouml;ffnet.<\/p>\n<p>[57433]<\/p>\n<ul>\n<li>Testen Sie den Datenzugriff mit den Schaltfl&auml;chen des Formulars <b>Start<\/b>.<\/li>\n<p>[57631]<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Skript 1 &#8211; Rechtevergabe Bienlein.sql<\/p>\n<p>Skript 2 &#8211; Rechtevergabe Personal.sql<\/p>\n<p>Skript 3 &#8211; Rechtevergabe Vertrieb.sql<\/p>\n<p>WaWi v2.accdb<\/p>\n<p>WaWi_SQL.sql<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/B69569B5-041A-4B02-9522-7B5CDAB50867\/aiu_1361.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kennw&ouml;rter. Sie sind ein mehr oder weniger notwendiges &Uuml;bel, stellen Sie doch den Zugang zu Systemen sicher. Dennoch sind sie nicht selten eine Schwachstelle im Sicherheitskonzept, wie im aktuellen Szenario dieser Beitragsreihe. F&uuml;r eine automatische Anmeldung am SQL Server wird der Anmeldename und das Kennwort in der Access-Applikation gespeichert. Dort aber lassen sich diese Informationen nicht ausreichend sch&uuml;tzen. Dabei kann es so einfach sein. Mit der Windows-Authentifizierung sind die Anmeldedaten f&uuml;r den Zugang zum SQL Server nicht mehr erforderlich. In diesem Teil der Beitragsreihe lernen Sie die Vorteile der Windows-Authentifizierung kennen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66022022,662022,44000022],"tags":[],"class_list":["post-55001361","post","type-post","status-publish","format-standard","hentry","category-66022022","category-662022","category-SQL_Server_und_Co"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Access und SQL Server-Security - Teil 7: Windows-Authentifizierung - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Access und SQL Server-Security - Teil 7: Windows-Authentifizierung\" \/>\n<meta property=\"og:description\" content=\"Kennw&ouml;rter. Sie sind ein mehr oder weniger notwendiges &Uuml;bel, stellen Sie doch den Zugang zu Systemen sicher. Dennoch sind sie nicht selten eine Schwachstelle im Sicherheitskonzept, wie im aktuellen Szenario dieser Beitragsreihe. F&uuml;r eine automatische Anmeldung am SQL Server wird der Anmeldename und das Kennwort in der Access-Applikation gespeichert. Dort aber lassen sich diese Informationen nicht ausreichend sch&uuml;tzen. Dabei kann es so einfach sein. Mit der Windows-Authentifizierung sind die Anmeldedaten f&uuml;r den Zugang zum SQL Server nicht mehr erforderlich. In diesem Teil der Beitragsreihe lernen Sie die Vorteile der Windows-Authentifizierung kennen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-10T18:37:05+00:00\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"45\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Access und SQL Server-Security &#8211; Teil 7: Windows-Authentifizierung\",\"datePublished\":\"2022-05-10T18:37:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\\\/\"},\"wordCount\":8859,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"articleSection\":[\"2\\\/2022\",\"2022\",\"SQL Server und Co.\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\\\/\",\"name\":\"Access und SQL Server-Security - Teil 7: Windows-Authentifizierung - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"datePublished\":\"2022-05-10T18:37:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Access und SQL Server-Security &#8211; Teil 7: Windows-Authentifizierung\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Access und SQL Server-Security - Teil 7: Windows-Authentifizierung - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/","og_locale":"de_DE","og_type":"article","og_title":"Access und SQL Server-Security - Teil 7: Windows-Authentifizierung","og_description":"Kennw&ouml;rter. Sie sind ein mehr oder weniger notwendiges &Uuml;bel, stellen Sie doch den Zugang zu Systemen sicher. Dennoch sind sie nicht selten eine Schwachstelle im Sicherheitskonzept, wie im aktuellen Szenario dieser Beitragsreihe. F&uuml;r eine automatische Anmeldung am SQL Server wird der Anmeldename und das Kennwort in der Access-Applikation gespeichert. Dort aber lassen sich diese Informationen nicht ausreichend sch&uuml;tzen. Dabei kann es so einfach sein. Mit der Windows-Authentifizierung sind die Anmeldedaten f&uuml;r den Zugang zum SQL Server nicht mehr erforderlich. In diesem Teil der Beitragsreihe lernen Sie die Vorteile der Windows-Authentifizierung kennen.","og_url":"https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/","og_site_name":"Access im Unternehmen","article_published_time":"2022-05-10T18:37:05+00:00","author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"45\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Access und SQL Server-Security &#8211; Teil 7: Windows-Authentifizierung","datePublished":"2022-05-10T18:37:05+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/"},"wordCount":8859,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"articleSection":["2\/2022","2022","SQL Server und Co."],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/","url":"https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/","name":"Access und SQL Server-Security - Teil 7: Windows-Authentifizierung - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"datePublished":"2022-05-10T18:37:05+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Access_und_SQL_ServerSecurity__Teil_7_WindowsAuthentifizierung\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Access und SQL Server-Security &#8211; Teil 7: Windows-Authentifizierung"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001361","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55001361"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001361\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001361"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001361"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}