-
Hintergrund der Erfindung
-
Eine
breite Vielfalt von Objekten benutzt eine Kombination von Datenbanken
und Anwendungen, die die Datenbanken abfragen, um Benutzern die Möglichkeit
zu verschaffen, Informationen zu betrachten und zu manipulieren.
Zum Beispiel kann ein Kaufmann in einem elektronischen Handelszusammenhang
eine Datenbank besitzen, die Produktinformationen wie Fotografien
des Bestands, Produktbeschreibungen und Preis/Verfügbarkeits-Informationen
speichert. Potentielle Kunden können
diese Informationen durch Aufsuchen der Website des Kaufmanns und
Wechselwirkung mit sortierten Web-Seiten, die vom Web-Server des Kaufmanns
erzeugt werden, betrachten. Im Zusammenhang mit einem Unternehmen
könnten
Angestellte eine Customer-Relationship-Managemant-(CRM)-Anwendung benutzen,
um Zugriff zu in CRM-Datenbanken gespeicherten Kunden-Informationen
zu erhalten und/oder diese zu aktualisieren.
-
Eine
Erlaubnis zu wechselseitigen Handlungen für Endbenutzer mit Datenbanken
kann ein bequemer und wirksamer Weg sein, um zu gewährleisten,
dass diesen Benutzern die aktualisierten Informationen präsentiert
werden. Leider kann ohne angemessenen Schutz an Ort und Stelle ein
boshafter Mensch in der Lage sein, Verfahren zu verwenden, wie einen
SQL-Einspeiseangriff,
um heimtückische Abfragen
an eine Datenbank zu richten, z. B. solche, die zu der Preisgabe
von Kreditkarten- oder anderen vertraulichen Informationen oder
zur Modifikation von Preisfestsetzungs-Informationen führen.
-
Ein
traditionelles Sicherheitsprodukt wie ein Log-Analyse-Instrument
könnte
zwar offenbaren, dass ein Datenbankangriff stattgefunden hat, jedoch ist
es üblicherweise
nicht in der Lage, die Identität
der für
den Angriff verantwortlichen Person zu liefern. Ein Grund hierfür ist, dass
Anwendungen sich üblicherweise
selbst gegenüber
Datenbanken unter Verwendung derselben Gruppe von Beglaubigungen
unabhängig
davon authentisieren, welcher Endbenutzer mit der Anwendung in Wechselwirkung
steht. Außerdem
können
die von einer potentiell sehr großen Zahl von gleichzeitigen
Anwendungsbenutzern erzeugten Abfragen über eine relativ kleine Zahl
von Datenbankverbindungen gemultiplext werden, was forensische Versuche
schwierig macht, verschiedene Logs zu korrelieren.
-
Ein
Lösungsweg
zur Bestimmung, wer für spezifische
Datenbank-Aktivität
verantwortlich ist, ist die Modifizierung der Anwendung, um jene
Informationen aufzuzeichnen. Leider ist ein solcher Lösungsweg
aufdringlich und untauglich, benötigt
Programmierer, um ein potentiell lästiges Merkmal in jeder Datenbankanwendung
zu modifizieren, zu testen und aufrecht zu erhalten. Und falls die
Anwendung von einem Dritten geliefert wird (z. B. als serienmäßiges Produkt)
könnte
ein Modifizieren der Anwendung unmöglich sein.
-
Ein
weiterer Lösungsweg
ist die Aufzeichnung der wechselseitigen Handlungen zwischen Benutzern
und der Anwendung (z. B. Benutzen eines Proxy) und der spätere Versuch,
Literale, die bei den wechselseitigen Handlungen auftreten, mit
Literalen, die in SQL-Anweisungen erscheinen, zu korrelieren. Leider
könnte
es unmöglich
sein, die Quelle von arglistigen Abfragen zu identifizieren, wenn
mehrere SQL-Anweisungen dieselben Literale enthalten (z. B. wenn
mehrere Benutzer eine ähnliche
Aktivität
auf die Anwendung gleichzeitig ausführen), oder wenn es keine Literale
in der SQL-Anweisung gibt.
-
Daher
wäre es
erwünscht,
einen besseren Weg zur Bestimmung des Ursprungs von Datenbank-Aktivität zu haben.
-
Zusammenfassung der Erfindung
-
Es
wird die Bestimmung eines Anwendungsbenutzers als Quelle von Datenbank-Aktivität offenbart.
Es wird eine Kommunikation empfangen. Ein Ablauf (Thread), der so
gestaltet ist, dass er die Kommunikation abwickelt, wird einem Anwendungsbenutzer
zugeordnet, dem die Kommunikation zugeordnet ist. Der Anwendungsgenutzer
wird einer Datenbank-Abfrage zugeordnet, die von dem Ablauf erzeugt
wird. Bei einigen Ausführungsformen
wird an einen stromabwärtigen
Leser ein Hinweis geliefert, dass die Abfrage dem Anwendungsbenutzer
zugeordnet ist. Bei einigen Ausführungsformen
schließt das
Liefern des Hinweises die Erzeugung einer Scheinabfrage ein. Bei
einigen Ausführungsformen schließt die Scheinabfrage
einen Hinweis ein, dass anschließende Abfragen dem Anwendungsbenutzer zugeordnet
werden.
-
Kurze Beschreibung der Zeichnungen
-
Verschiedene
Ausführungsformen
der Erfindung werden in der nachfolgenden Beschreibung und den beigefügten Zeichnungen
offenbart. In den Zeichnungen stellen dar:
-
1 ein
Blockdiagramm, das ein Umfeld mit Datenbank-Sicherheit veranschaulicht;
-
2 ein
Ablaufdiagramm, das eine Ausführungsform
eines Prozesses zur Bestimmung des Ursprungs von Datenbank-Aktivität veranschaulicht;
-
3 ein
Blockdiagramm, das eine Ausführungsform
eines Systems zur Bestimmung des Ursprungs von Datenbank-Aktivität veranschaulicht;
-
4 ein
Ablaufdiagramm, das eine Ausführungsform
eines Prozesses zur Bestimmung einer Zuordnung zwischen einem Anwendungsbenutzer und
einem Prozess oder Ablauf veranschaulicht; und
-
5 ein
Ablaufdiagramm, das eine Ausführungsform
eines Prozesses zur Lieferung eines Hinweises auf den Ursprung von
Datenbank-Aktivität veranschaulicht.
-
Ausführliche Beschreibung
-
Die
Erfindung kann auf zahlreiche Weise ausgeführt werden, als Prozess, als
Vorrichtung, als System, als Zusammenstellung von Dingen, als Computerlesbares
Medium oder als Computernetz, in dem Programmanweisungen über optische
oder Kommunikations-Links gesendet werden. In dieser Beschreibung
können
diese Ausführungsformen oder
jede andere Form, die die Erfindung annehmen kann, als Verfahren
bezeichnet werden. Eine Komponente, wie ein Prozessor oder ein Speicher,
der als so gestaltet beschrieben ist, dass er eine Aufgabe ausführt, enthält sowohl
eine allgemeine Komponente, die zeitweilig so gestaltet ist, dass
sie die Aufgabe zu einer gegebenen Zeit ausführt, oder eine spezifische
Komponente, die hergestellt wird, um die Aufgabe auszuführen. Im
allgemeinen kann die Reihenfolge der Schritte von offenbarten Prozessen
im Rahmen des Schutzumfangs der Erfindung geändert werden.
-
Es
folgt eine ausführliche
Beschreibung einer oder mehrerer Ausführungsformen der Erfindung anhand
der beigefügten
Zeichnungen, die die Pronzipien der Erfindung veranschaulichen.
Die Erfindung wird in Verbindung mit solchen Ausführungsformen beschrieben,
jedoch ist die Erfindung auf keine der Ausführungsformen beschränkt. Der
Schutzumfang der Erfindung ist nur durch die Ansprüche begrenzt, und
die Erfindung umfasst zahlreiche Alternativen, Modifikationen und Äquivalente.
Zahlreiche spezifische Einzelheiten werden in der nachfolgenden
Beschreibung dargelegt, um ein gründliches Verständnis der
Erfindung zu vermitteln. Diese Einzelheiten haben Beispielscharakter,
und die Erfindung kann gemäß den Ansprüchen ohne
einige oder alle dieser spezifischen Einzelheiten ausgeführt werden.
Aus Gründen
der Klarheit werden technische Einzelheiten, die in den mit der
Erfindung verbundenen technischen Gebieten bekannt sind, nicht ausführlich beschrieben,
um das Verständnis
der Erfindung nicht unnötig
zu erschweren.
-
Wenn
ein Anwendungs-Web-Server eine neue Benutzer-anforderung empfängt (z.
B. von einem Benutzer „u1"), erzeugt er üblicherweise
einen Ablauf („t1") zur Verarbeitung
von Aufgaben wie Ausführung
von Anwendungsmodulen, Geschäfts-Logik und
Datenbank-Anweisungen, die sich auf die Benutzeranforderung beziehen.
Anwendungs-Web-Server haben üblicherweise
Schnittstellen, die zur Entwicklung eines kundenspezifischen Moduls
zum Abfangen aller Anforderungen und Antworten auf Web-Anwendungen
und Zugriffserlangung zu Web-Anwendungs-Sessions-Objekten verwendet
werden können,
ohne vorhandene Web-Anwendungen zu stören. Bei einigen Ausführungsformen
wird ein kundenspezifischer Modul so gestaltet, dass man den Benutzernamen
von u1 (und/oder eine andere Identität oder andere damit zusammenhängende Informationen)
erhält
und ihn dem Ablauf t1 zuordnet. Immer wenn eine Anweisung von dem
Ablauf t1 ausgeführt wird,
können
Benutzer und Anweisung einander zugeordnet werden, ohne den Anwendungs-Code zu modifizieren.
-
Web-Anwendungen
kommunizieren üblicherweise
mit Datenbanken über
ein Datenbank-Anschlussteil (connector), das mit einem kundenspezifischen
Datenbank-Anschlussteil umhüllt
(wrapped) werden kann. Wenn der Ablauf t1 eine Funktion in dem kundenspezifischen
Datenbank-Anschlussteil aufruft, kann das kundenspezifische Datenbank-Anschlussteil
so gestaltet werden, dass die Identität des Ablaufs t1 und die Anweisung
s1, die der Ablauf über den
Funktionsaufruf ausführt,
aufgezeichnet wird. Der Benutzername des Endbenutzers (IP-Adresse usw.)
für eine
bestimmte Anweisung kann zu einem Datenbank-Sicherheits-Monitor
gesendet werden, und der Datenbank-Sicherheits-Monitor kann die Informationen
in seine Überwachungsprozesse,
so weit möglich,
einbeziehen.
-
1 ist
ein Blockdiagramm, das ein Umfeld mit Datenbank-Sicherheit hat.
Bei dem dargestellten Beispiel kommunizieren verschiedene Web-Anwendungsbenutzer 102–106 mit
einem Web-Anwendungs-Server 110 über ein Netz 108.
Der hier verwendete Begriff „Anwendungsbenutzer" bezieht sich auf
einen menschlichen oder sonstigen Benutzer einer Anwendung, die
in Wechselwirkung mit einer Datenbank über eine oder mehr Verbindungen
steht, von denen die Datenbank annimmt, dass sie der Anwendung zugeordnet
sind, aber nicht notwendigerweise einem spezifischen oder individuellen
Benutzer der Anwendung zugeordnet sind. In verschiedenen Ausführungsbeispielen
ist das Netz 108 das Internet, ein lokales Netz, ein landesweites
Netz oder eine Kombination solcher Netze. Anwendungsbenutzer können auf
den Web-Anwendungs-Server 108 unter
Verwendung vieler Plattformen zugreifen, wie Personal-Computer (z.
B. 102), Laptops (104), Mobiltelefone/Personal-Digital-Assistenten (106)
sowie andere Arten von Informationsanwendungen (nicht dargestellt)
wie Set-Top-Boxen, Spiel-Konsolen, Breitband-Router und digitale
Video-Recorder, so weit möglich.
-
Bei
dem dargestellten Beispiel sind Datenbanken 112 und 114 vernetzt
(über Schalter 118)
und speichern eine Sammlung von Informationen, von denen einige
vertraulich sind (z. B. Kreditkarten-Nummern und/oder Gehaltsinformationen).
Bei verschiedenen Ausführungsbeispielen
sind die Datenbanken 112 und 114 verwandte Datenbanken
(z. B. Produkte wie Oracle Database, IBM DB2 und Microsoft SQL Server),
Flat-File-Datenbanken oder andere Arten von Datenbanken, und die
hier beschriebenen Verfahren werden entsprechend angepasst. Das
in 1 gezeigte Umfeld kann auch eine einzige Datenbank
statt mehrere enthalten. Ein Datenbankverwalter kann auf die Datenbank 112 und 114 unter Verwendung
des Clienten 122 zugreifen, der in diesem Fall eine verwaltende
Konsole ist.
-
Der
Web-Anwendungs-Server 110 führt eine oder mehr Anwendungen
aus, die Abfragen an Datenbänke
wie zum Beispiel die Datenbänke 112 und 114 auf
der Basis von Informationen erzeugen, die von Anwendungsbenutzern,
z. B. den Anwendungsbenutzern 102–106 geliefert werden.
Der Web-Anwendungs-Server 110 authentifiziert
sich selbst für die
Datenbank 112 unter Verwendung eines Login/Passwort-Paars.
Bei verschiedenen Ausführungsformen
werden andere Authentifizierungsverfahren, wie die Verwendung von
digitalen Zertifikaten an Stelle von oder zusätzlich zur Passwort-Authentifizierung
benutzt.
-
Bei
dem gezeigten Beispiel kommuniziert der Web-Anwendungs-Server 110 mit
den Anwendungsbenutzern 102–106 unter Verwendung
von HTTP, und Abfragen werden in SQL formuliert. Andere Sprachen
oder Verfahren zur Übertragung
von Informationen (z. B. XML, SOAP, LDAP, SMTP und Meldungswarteschlange
(message queue)) und zur Darstellung von Abfragen können ebenfalls
verwendet und die hier beschriebenen Verfahren so weit möglich angepasst
werden. Wie nachfolgend in größeren Einzelheiten
beschrieben wird, empfängt/empfangen
die Anwendung/Anwendungen Abfrageergebnisse als Antwort, und der
Web-Anwendungs-Server 110 liefert sie an den geeigneten
Anwendungsbenutzer.
-
Der
Datenbank-Sicherheits-Monitor 116 beobachtet den zwischen
Datenbank 112 und Web-Anwendungs-Server 110 gesendeten
Verkehr z. B. durch Verwendung eines Anzapfungsanschlusses am Schalter 118.
Bei anderen Ausführungsformen werden
andere Verkehrsüberwachungsverfahren verwendet,
z. B. durch den zwischengeschalteten Datenbank-Sicherheits-Monitor 116,
Verwendung eines ferngeschalteten Anschlussanalysator-(RSPAN)-Merkmals
oder Verwendung eines geschalteten Anschlussanalysator-(SPAN)-Merkmals. Bei
einigen Ausführungsformen
ist der Datenbank-Sicherheits-Monitor 116 so gestaltet,
dass er legitimierte Abfragen auf Grund von Erfahrung erkennt. Wenn
eine anormale Abfrage beobachtet wird, wird die Abfrage geloggt,
und es können
andere Aktionen ausgeführt
werden, wie Senden eines Warnsignals an einen Verwalter, Blockieren
der Ausführung
der Abfrage usw. Wie nachfolgend in Einzelheiten beschrieben wird,
kann der Web-Anwendungs-Server 110 so gestaltet werden,
dass er den Datenbank-Sicherheits-Monitor 116 mit Informationen
versorgt (z. B. Benutzername, IP-Adresse, Maschinenname, MAC-Adresse usw.), die
den Ursprung der Datenbank-Aktivität identifizieren.
-
Andere
Komponenten können
in das Umfeld einbezogen werden, wie z. B. der Datensicherungs-Server 120 und
Firewalls, Netz-Eindring-Erkennungssysteme usw. (nicht dargestellt).
-
2 ist
ein Ablaufdiagramm, das ein Ausführungsbeispiel
eines Prozesses zur Bestimmung des Ursprungs einer Datenbankaktivität veranschaulicht.
Bei einigen Ausführungsformen
wird der in 2 gezeigte Prozess von dem Web-Anwendungs-Server 110 ausgeführt. Der
Prozess beginnt bei 202, wenn eine Kombination empfangen
wird. Es sei angenommen, dass der Web-Anwendungs-Server 110 so gestaltet ist,
dass er an einen Web-Browser, der mit dem Rechner des Anwendungsbenutzers 102 zusammenarbeitet,
ein auf HTML- und/oder JavaScript beruhendes Formular liefert. Der
Web-Browser zeigt dieses Formular auf dem Rechner des Anwendungsbenutzers
an, und der Benutzer (der z. B. nach einem Produkt sucht) liefert
einen Eintrag in das Feld/die Felder in dem Formular. Wenn der Anwendungsbenutzer
eine Übergabetaste
drückt,
liefert der Web-Browser den Eintrag an den Web-Anwendungs-Server 110.
Bei 202 empfängt
der Web-Anwendungs-Server 110 den Eintrag (Kommunikation).
-
Bei 204 wird
ein Ablauf, der so gestaltet ist, dass er die Kommunikation abwickelt,
dem Anwendungsbenutzer zugeordnet, dem die Kommunikation zugeordnet
ist. Wenn z. B. ein Anwendungsbenutzer zuerst mit dem Web-Anwendungs-Server 110 Kontakt
aufnimmt (z. B. einloggt), kann der Web-Anwendungs-Server 110 so gestaltet
werden, dass er den Benutzernamen (und/oder andere Informationen
wie IP-Adresse, MAC-Adresse, Web-Browser-Typ, Host, Abfrage-Kette, Cookies usw.,
nachfolgend als „herausgezonene
Informationen" bezeichnet)
des Web-Anwendungs-Benutzers herauszieht und dann den Benutzernamen
(und herausgezogene Informationen) dem Sessionsobjekt zuordnet,
das von dem Web-Anwendungs-Server erstellt wird. Immer wenn eine
Anforderung für
eine vorher vorhandene Session empfangen wird, kann ein Aufsuchen
des Benutzernamens, der dem Sessions-ID der Anforderung zugeordnet
ist, ausgeführt
werden. Der Web-Anwendungs-Server 110 kann seinen Ablauf-ID
lesen und den Ablauf-ID dem Benutzernamen zuordnen. Bei einigen
Ausführungsformen
wird der Benutzername einem Prozess (z. B. dem Prozess ID) zugeorndet
an Statt oder zusätzlich
zu einem Ablauf, und die hier beschriebenen Verfahren werden so
weit möglich
angepasst. Der Begriff „Ablauf" (thread) kann hier
somit austauschbar mit „Prozess" verwendet werden.
-
Bei 206 wird
eine von dem Ablauf erzeugte Datenbankabfrage dem Anwendungsbenutzer
zugeordnet, dem der Verarbeitungsablauf zugeordnet ist. Eine Web-Anwendung,
die sich in dem Web-Anwendungs-Server 110 befindet, kommuniziert
mit einer Datenbank, wie der Datenbank 112, über ein
Datenbank-Anschlussteil.
Ein Anforderungs-Verarbeitungsablauf ruft Datenbank-Anschlussteil-Funktionen
auf, um Abfragen zu einer Datenbank zu senden und von dieser zu
empfangen. Wenn ein Anforderungs-Verarbeitungsablauf eine Funktion
innerhalb des Datenbank-Anschlussteils aufruft, zeichnet das Datenbank-Anschlussteil
den Aufrufer-Ablauf-ID und die SQL-Anweidung auf, die der Ablauf über den Funktionsaufruf
ausführt.
Da die Gruppe von SQL-Anweidungen,
die ein gegebener Ablauf ausführt,
bekannt ist, und da der dem Ablauf zugeordnete Web-Anwendungsbenutzer
bekannt ist, können der
Web-Anwendungsbenutzer
und SQL-Anweisungen, die von seinen/ihren Aktionen erzeugt werden, verknüpft werden.
-
Wie
nachfolgend in Einzelheiten beschrieben wird, können Informationen, die die
Verknüpfung zwischen
einem bestimmten Web-Anwendungsbenutzer und seinen/ihren SQL-Anweisungen
an einen Datenbank-Sicherheits-Monitor 116 (und alle anderen
so gestalteten Komponenten, dass sie von den Informationen Gebrauch
machen) auf verschiedene Weise geliefert werden. Bei einigen Ausführungsformen
ist der Datenbank-Sicherheits-Monitor 116 mit auf der Datenbank 112,
dem Web-Anwendungs-Server 110 (z. B. als ein Prozess) oder
einer anderen Komponente des in 1 gezeigten
Umfeldes angeordnet. In gleicher Weise können Benutzername/SQL-Anweisungsinformationen
außer
an den Datenbank-Sicherheits-Monitor 116 zusätzlich an mehrere
Komponenten geliefert werden. Bei verschiedenen Ausführungsformen
können
Teile des dargestellten Umfeldes so weit möglich kombiniert oder weggelassen
werden. Zum Beispiel können
der Client 122 und der Sicherungs-Server 120 entfallen.
-
3 ist
ein Blockdiagramm, das eine Ausführungsform
eines Systems zur Bestimmung des Ursprungs von Datenbank-Aktivität veranschaulicht. Der
Web-Anwendungs-Server 110 enthält eine Schnittstelle,
die verwendet werden kann, um einen kundenspezifischen Modul zum
Abfangen aller Anforderungen und Antworten an Web-Anwendungen und
zum Erhalt eines Zugriffs zu Web-Anwendungs-Sessions-Objekten
zu entwickeln, ohne vorhandene Web-Anwendungen zu stören. Bei dem gezeigten Beispiel
betreibt der Web-Anwendungs-Server 110 JBoss-Anwendungs-Server
und schließt
ein kundenspezifisches Filter 302 ein, das HTTP-Anforderungen
abfängt.
In anderen Architekturen (z. B. Microsoft IIS) können andere Komponenten verwendet werden,
um HTTP (oder XML, SOAP, usw.) Anforderungen so weit anwendbar abzufangen,
wie Microsoft-ISAPI-Erweiterungen.
-
Der
kundenspezifische Modul ist so gestaltet, dass er bei Einloggen
eines Anwendungsbenutzers die Anforderung, den Benutzernamen herauszuziehen
und diesen dann dem Sessions-Objekt zuzuordnen, das durch den Web-Anwendungs-Server 110 erstellt
wird, abfängt
und analysiert. Der kundenspezifische Modul wird dann den herausgezogenen Benutzernamen
zusammen mit dem ID des erstellten Sessions-Objektes in einem stationären Speicherbereich
speichern. Immer wenn eine Anforderung für eine vorher existierende
Session empfangen wird, sucht der kundenspezifische Modul in seinem
statischen Speicher, um den Benutzernamen aufzufinden, der dem Sessions-ID
der Anforderung zugeordnet ist. Der kundenspezifische Modul wird
auch seinen eigenen Ablauf-ID lesen und den Ablauf-ID dem Benutzernamen
zuordnen, nachdem in dem statischen Speicherbereich gesucht wurde.
Der Benutzername (z. B. „u1") des Anwendungsbenutzers,
in dessen Interesse ein gegebener Anforderungs-Verarbeitungsablauf
Aufgaben verarbeitet, kann somit bestimmt werden.
-
Eine
Web-Anwendung 304 (z. B. eine elektronische Handelsanwendung)
kommuniziert mit einer Datenbank wie der Datenbank 112 über ein
Datenbank-Anschlussteil,
wie dem Datenbank-Anschlussteil 308. Anforderungs-Verarbeitungsabläufe rufen
Datenbank-Anschlussteil-Funktionen auf, um Abfragen an die Datenbank 112 zu
senden, und von dieser Ergebnisse zu empfangen. Bei dem dargestellten
Beispiel beruht das Datenbank-Anschlussteil 308 auf JDBC.
Bei dem gezeigten Beispiel sitzt eine kundenspezifische Anschlussteil-Hülle (connector wrapper) 306 zwischen
der Web-Anwendung 304 und dem Datenbank-Anschlussteil 308.
Die Web-Anwendung 304 ist so gestaltet, dass sie die Anschlussteil-Hülle 306 verwendet,
die ihrerseits so gestaltet ist, dass sie alle SQL-Anweisungen und
Daten durch das Datenbank-Anschlussteil 308 durchlässt. Bei verschiedenen
Ausführungsformen
wird die Web-Anwendung 304 von einem Dritten vorgesehen und/oder
ihr Code wird nicht modifiziert. Die Anschlussteil-Hülle 306 funktioniert
als Hülle über dem Datenbank-Anschlussteil 308 und
erfordert bei einigen Ausführungsformen
keine Modifikation der Anwendung.
-
Wenn
ein Anforderungs-Verarbeitungsablauf (z. B. t1) eine Funktion in
der Anschlussteil-Hülle 306 aufruft,
zeichnet diese den Aufrufer-Ablauf-ID t1 und die SQL-Anweisung (z.
B. s1) auf, die der Ablauf über den
Funktionsaufruf ausführt.
-
In
manchen Fällen
ist die Web-Anwendung 304 interaktiv und transaktionsorientiert,
so dass Web-Anwendungsbenutzer sofortige Antworten auf ihre Anforderungen
erwarten. In einigen Fällen
ist die Web-Anwendung 304 so gestaltet, dass Abläufe (z. B.
Tx, Ty, Tz) von dem Haupt-Anwendungsablauf (z. B. T1) abgeleitet
(spawn off) werden. Die Anschlussteil-Hülle 306 kann so ausgestaltet
werden, dass – wenn
der Ablauf Tx eine SQL-Anweisung (z. B. „Sa") ausführt – der Ablauf keinem Benutzernamen
zugeordnet wird. In einem solchen Fall schreitet die Anschlussteil-Hülle 306 durch
die Tx-Ablauf-Hierarchie, bis sie den Anforderungs-Abwicklerablauf
T1 erreicht, dem ein Benutzername zugeordnet ist.
-
Bei
verschiedenen Ausführungsformen
befinden sich andere Komponenten zwischen dem Web-Anwendungs-Server 110 und
der Datenbank 112, und die hier beschriebenen Verfahren
können
so angepasst werden, dass sie Informationen über diese zusätzlichen
Komponenten verbreiten. Somit können
zusätzlich
zu der hier beschriebenen drei-etagigen Architektur zusätzlich gestaffelte
Architekturen (z. B. vier-etagig) verwendet und die hierin beschriebenen
Verfahren entsprechend angepasst werden. Z. B. kann ein SOAP-Server
in ähnlicher
Weise wie der Web-Server 110 mit seinen eigenen Filterhaken (filter
hooks) und Hüllen
gestaltet werden.
-
4 ist
ein Ablaufdiagramm, das eine Ausführungsform eines Prozesses
zur Bestimmung einer Zuordnung zwischen einem Anwendungsbenutzer und
einem Prozess oder Ablauf veranschaulicht. Der Prozess beginnt bei 402,
wenn eine Kommunikation empfangen wird. Wie oben in Verbindung mit
Teil 2 von 2 beschrieben wurde, enthält ein Beispiel
einer empfangenen Kommunikation den Web-Anwendungs-Server 110,
der HTTP-Kommunikationen empfängt,
die POST/GET-Verfahren einschließen.
-
Bei 404 wird
eine eindeutige Zuordnung zwischen einem Anwendungsbenutzer, der
der Kommunikation zugeordnet ist, und einem Ablauf, um die Anforderung
abzuwickeln, bestimmt. Wie oben in Verbindung mit dem Teil 204 in 2 beschrieben
wurde, kann der Web-Anwendungs-Server 110 so gestaltet
werden, dass aus Kommunikationen ein Benutzername herausgezogen
wird.
-
Bei 406 wird
dem Ablauf ein Bezug (Datum) zugeordnet, der die bestimmte Zuordnung
zu einem stromabwärtigen
Leser der Daten anzeigt. Z. B. können
bei 406 örtliche
Ablauf-Variable verwendet werden, um einen Benutzernamen und einen
Ablauf zuzuordnen. Bei verschiedenen Ausführungsformen (z. B. auf der
Architektur beruhend) kann die Zuordnung auf andere Weise erfolgen,
z. B. durch derartige Gestaltung des Web-Anwendungs-Servers 110,
dass er Informationen speichert, die einen Benutzernamen und einen
Ablauf in einer von dem stromabwärtigen Leser
lesbaren Log-Datei zuordnen.
-
5 ist
ein Ablaufdiagramm, das eine Ausführungsform eines Prozesses
zur Lieferung einer Anzeige des Ursprungs von Datenbank-Aktivität veranschaulicht.
Bei einigen Ausführungsformen
wird der in 5 gezeigte Prozess durch eine
Anschlusshülle
ausgeführt,
z. B. die Anschlusshülle 306.
-
Der
Prozess beginnt bei 502, wenn eine Datenbankabfrage empfangen
wird. Z. B. empfängt
bei 502 die Anschlusshülle 506 eine
Datenbankabfrage von der Web-Anwendung 304. Bei 504 wird
der Ablauf bestimmt, dem die Abfrage zugeordnet wird. Bei 506 werden
Daten gelesen, die den Anwendungsbenutzer angeben, dem der Ablauf
zugeordnet ist. Z. B. macht bei 506 der Hüllen-Anschlussteil 306 Gebrauch
von dem Benutzernamen, der in einer örtlichen Ablauf-Variablen bei 406 in 4 gespeichert ist.
-
Bei 508 erfolgt
eine Angabe, dass die Abfrage einem Anwendungsbenutzer zugeordnet
ist. Zum Beispiel könnte
bei 508 die Anschlussteil-Hülle 306 die Abfrage
modifizieren, um einen Kommentar einzuschließen, dass die Abfrage einem
bestimmten Web-Anwendungsbenutzer zuschreibbar ist (und/oder andere
Informationen wie die IP-Adresse, die MAC-Adresse usw. des Web-Anwendungsbenutzers
als Namen-Wert-Paare vorzusehen, die auch herausgezogen werden können, wenn
zwischen einem Web-Anwendungsbenutzer
und dem Anwendungs-Server 110 eine Session errichtet wird).
In einem solchen Fall würde
die Datenbank 112 den kommentierten Teil der Abfrage ignorieren,
während
ein Modul wie der Datenbank-Sicherheits-Monitor 116 so gestaltet werden
könnte,
dass er die in solchen Kommentaren enthaltenen Informationen erkennt
und verarbeitet. Bei einigen Ausführungsformen werden Anzeigen
außer
Band vorgesehen. Wenn zum Beispiel die Anschlussteil-Hülle 306 die
Abfrage an das Datenbank-Anschlussteil 308 weiterleitet,
könnte
die Anschlussteil-Hülle 306 auch
so gestaltet werden, dass sie eine E-mail sendet, die die Abfrage
und den zugeordneten Benutzernamen enthält, an eine entfernte Log-Datei
schreibt, usw.
-
Bei
einigen Ausführungsformen
ist aus Gründen
der Leistungsfähigkeit
und Niedrighaltung der notwendigen System-Betriebsmittel die Zahl
von gleichzeitigen Verbindungen, die zwischen dem Web-Anwendungs-Server 110 und
einer Datenbank wie der Datenbank 112 geöffnet werden
können,
beträchtlich
kleiner als die Zahl von Anwendungsbenutzern, die Sessionen mit
dem Web-Anwendungs-Server 110 öffnen können. Während zum Beispiel der gleichzeitige
Zugriff von Hunderten oder Tausenden Benutzern zum Web-Anwendungs-Server 110 zugelassen
werden kann, könnte
für den
Web-Anwendungs-Server 110 die Öffnung von
nur zehn gleichzeitigen Verbindungen mit der Datenbank 112 zugelassen
werden. In einem solchen Fall könnte
die bei 508 vorgesehene Anzeige die Übertragung einer „Blind"-Abfrage durch die
Anschlussteil-Hülle 306 einschließen, die
anzeigt, dass alle folgenden Abfragen, die von dem Datenbank-Anschlussteil 308 über eine
bestimmte Verbindung (z. B. eine der zehn Verbindungen) gesendet
werden, einem bestimmten Benutzer zugeordnet werden (bis eine weitere
solche Blind-Nachricht gesendet wird). Die Blind-Abfragen könnten vollständig kommentiert
werden, so dass die Datenbank 112 sie ignoriert. Der Datenbank-Sicherheits-Modul 116 könnte entsprechend
gestaltet werden, um den Datenbankverkehr für solche Blind-Abfragen zu überwachen.
-
Nach
Lieferung an den Datenbank-Sicherheits-Modul 116 können die
Informationen für
zahlreiche Zwecke verwendet werden, wie ihre Einbeziehung in das
Profil des Datenbank-Sicherheits-Moduls für normale Datenbank-Aktivität, ihre
Verwendung zur Verbesserung der Einbruchserkennung und Überwachungsfunktionalität und/oder
um eine vollständigere
Merkmalsgruppe vorzusehen. Zum Beispiel kann durch Verwendung einer
Schnittstelle zum Datenbank-Sicherheits-Modul 116 ein Verwalter
in der Lage sein, nach Anomalien für das Auftreten von Aktivitäten eines
bestimmten Benutzers zu suchen; Lernen, welche Benutzer bestimmte
Abfragen ausgeführt
haben, Bestimmen von Bereichen von IP-Adressen, die zu Anomalien
gehören,
usw. Wenn verdächtige
Anomalien beurteilt werden und das Profil aktualisiert wird, kann
ein Verwalter in der Lage sein, das Profil mit einer besseren Granularität zu verfeinern,
wie Vermerken, dass bestimmte Benutzer Abfragen ausführen können oder
nicht, oder dass – wenn
von einer Schwellwertzahl von Benutzern dieselbe anormale Abfrage
vorgenommen wird – diese automatisch
je nach dem auf die weiße
oder schwarze Liste gesetzt werden sollte.
-
Die
vorangehenden Ausführungsformen wurden
zwar zwecks Klarheit und Verständnis
in Einzelheiten beschrieben, jedoch ist die Erfindung nicht auf
diese Einzelheiten beschränkt.
Es gibt viele alternative Wege zur Ausführung der Erfindung. Die offenbarten
Ausführungsformen
sind veranschaulichend und nicht einschränkend.