| 

.NET C# Java Javascript Exception

0

Viele Anwendungen verbinden sich über einen einzigen Datenbankbenutzer im Verfahren des Connection Pooling mit der Datenbank. Alle Aktionen, egal ob es das Lesen oder Ändern von Daten betrifft, werden durch diesen einen Benutzer vorgenommen. Auf der Middletier arbeiten unterschiedliche Benutzer mit den Anwendungen, die sich auch der Middletier gegenüber individuell authentifiziert haben.

Immer häufiger wird beispielsweise aus Gründen der Sicherheit verlangt, dass im Rahmen des normalen Datenbank-Auditing nachweisbar sein muss, welche konkrete Person welche Änderungen in einer Tabelle durchgeführt hat. Deshalb stellt sich die Frage, wie eine Anwendung mit den oben beschriebenen Eigenschaften Informationen über konkrete Benutzer an die Datenbank übergeben kann. Die Oracle-Datenbank bietet für dieses Zusammenspiel mit der Middletier eine sehr einfache Möglichkeit. Sie setzt lediglich voraus, dass die auf der Middletier laufende Anwendung eine Umgebungsvariable manipuliert, den client_identifier . Nehmen Sie einmal an, in ihrer Datenbank sei das Auditing so eingerichtet worden, dass alle Aktionen auf der Tabelle EMP protokolliert werden. Nachdem über eine Anwendung verschiedene Anwender eine Reihe von Änderungen auf der Tabelle durchgeführt haben, ergibt eine Abfrage auf die View DBA_AUDIT_TRAIL etwa ein Bild wie Listing 1 dargestellt.

Wie Sie sehen, enthält die Spalte CLIENT_ID keinen Eintrag. Die Anwendung wird nun so modifiziert, dass sie den Namen des Anwendungsbenutzers in der Variablen anwender erfasst und den Wert dieser Variablen bei jedem Connect auf die Datenbank dem client_identifier zuweist. Das passiert über die folgende Anweisung:

DBMS_SESSION.SET_IDENTIFIER(anwender); 

anwender muss nicht unbedingt den Namen des jeweiligen Anwendungsbenutzers enthalten, sondern kann auch mit jeder beliebigen anderen Zeichenkette gefüllt werden, die die eindeutige Identifizierung eines Anwenders ermöglicht (z.B. mit der Personalnummer). Arbeiten Anwender mit der modifizierten Anwendung und wird die View DBA_AUDIT_TRAIL erneut abgefragt, sieht das Ergebnis aus, wie in Listing 2 dargestellt.

Die Spalte CLIENT_ID enthält die Namen der Anwendungsbenutzer: Indem die Anwendung den CLIENT_IDENTIFIER setzt, wird er automatisch mit den übrigen Audit-Informationen gespeichert und ist in der Spalte CLIENT_ID der entsprechenden Views sichtbar. Damit ist das Ziel erreicht, Anwender, die sich nur der Middletier gegenüber authentifizieren, im Audit-Trail der Datenbank eindeutig zu identifizieren. Diese Möglichkeit steht übrigens nicht nur bei der Verwendung von PL/SQL zur Verfügung, sondern auch mit dem Oracle Call Interface (OCI) und JDBC-Treiber. Abschließend sei darauf hingewiesen, dass die Information im client_identifier in der Regel durch die Anwendung nach Beendigung einer Aktion für die nächste Session freigegeben werden sollte. Dazu dient das folgende Statement:

DBMS_SESSION.CLEAR_IDENTIFIER; 

(Heinz-Wilhelm Fabry/am)

datenbanken
Schreibe einen Kommentar:
Themen:
datenbanken
Entweder einloggen... ...oder ohne Wartezeit registrieren
Benutzername
Passwort
Passwort wiederholen
E-Mail