DE112014001949T5 - Spool-Betrieb bei Systemaufrufdaten zum Ermöglichen einer Datentransformation - Google Patents

Spool-Betrieb bei Systemaufrufdaten zum Ermöglichen einer Datentransformation Download PDF

Info

Publication number
DE112014001949T5
DE112014001949T5 DE112014001949.6T DE112014001949T DE112014001949T5 DE 112014001949 T5 DE112014001949 T5 DE 112014001949T5 DE 112014001949 T DE112014001949 T DE 112014001949T DE 112014001949 T5 DE112014001949 T5 DE 112014001949T5
Authority
DE
Germany
Prior art keywords
data
system call
transformation
destination
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE112014001949.6T
Other languages
English (en)
Inventor
Richard Ory Jerrell
Ury Segal
Galia Diamant
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112014001949T5 publication Critical patent/DE112014001949T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Abstract

Die hier beschriebenen Techniken stellen eine „Zeitverschiebung“ von abgefangenen Systemaufrufen bereit, um eine Eine-zu-Viele-(1:n)- oder eine Viele-zu-Eine-(n:1)-Zuordnung von abgefangenen zu echten Systemaufrufen zu ermöglichen. Jede Aktion, die an den logischen Grenzen der Daten (anstelle der physischen Grenzen) angewendet werden muss, die beim Abfangen von Systemaufrufen auftreten, zwischenspeichert (puffert) die Daten, bevor die Aktion erfolgt, und gibt das Ergebnis anschließend beim Beenden der Aktion frei (hebt das Zwischenspeichern auf). Die Aktion kann recht verschieden sein, z.B. Prüfen der Daten, Aufbereiten der Daten, Ändern der Daten, Einschränken der Daten, Verarbeiten der Daten und Aktualisieren der Daten. Diese Technik kann in einem System zur Datenbank-Zugangssteuerung realisiert werden.

Description

  • GEBIET DER ERFINDUNG
  • Die bevorzugte Ausführungsform bezieht sich allgemein auf ein Sicherstellen von Ressourcen in einer verteilten Datenverarbeitungsumgebung wie beispielsweise eine Umgebung zum Verarbeiten von Transaktionen.
  • HINTERGRUND DER ERFINDUNG
  • In einer Datenverarbeitungsumgebung handelt es sich bei einem „Systemaufruf“ um einen Mechanismus, durch den ein Programm oder Prozess einen Dienst vom Kern eines Betriebssystems anfordert. Bei einem typischen Betriebssystem (BS) wie beispielsweise Linux (bei Linux handelt es sich um ein eingetragenes Warenzeichen von Linus Torvals in den Vereinigten Staaten, anderen oder allen Ländern) wird der virtuelle Speicher vom Betriebssystem in einen Kernbereich und einen Benutzerbereich unterteilt, wobei der zuerst genannte Bereich zum Ausführen des BS-Kerns, Kernerweiterungen und Einheitentreibern reserviert ist, und es sich bei dem zuletzt genannten um den Bereich handelt, in dem alle Anwendungen der Benutzerbetriebsart ausgeführt werden. Systemaufrufe stellen die Schnittstelle zwischen Programmen oder Prozessen dar, die in dem Benutzerbereich ausgeführt werden, und dem Kern des Betriebssystems, das im Kernbereich ausgeführt wird.
  • Aus Gründen der Sicherheit kann es vorteilhaft sein, Daten zu analysieren und zu modifizieren, die durch ein Programm gelesen oder geschrieben werden. Wenn ein Filtern oder Aufbereiten (oder allgemeiner bestimmte andere Transformationen) erforderlich ist, müssen Daten, die das System durchlaufen, abgefangen werden, und es muss auf sie reagiert werden. Wenn Systemaufrufe abgefangen werden, können diese Daten zum Zweck der Analyse versendet und sogar gemäß im Voraus festgelegten Regeln modifiziert werden. Wenn ein Aufbereiten erforderlich ist, besteht der einfachste Ansatz darin, das Aufbereiten bei einer Eins-zu-Eins-(1:1-)Zuordnung von abgefangenen zu echten Systemaufrufen anwenden. Mehrere existierende handelsübliche Produkte führen diese Funktion aus.
  • Häufig können jedoch Daten einer einzigen Transaktion über mehrere Systemaufrufe verteilt sein. Wenn Systemaufrufe abgefangen werden, beispielsweise für den Zweck des Anwendens von Transformationen auf die Daten, die über das Betriebssystem gesendet und empfangen werden, gibt es keine Garantie, dass die Menge der abgefangenen Daten das gesamte logische Paket beinhaltet. Beispielsweise wird eine MySQL-Datenbank betrachtet, die TCP-Pakete empfängt. Die Pakete werden in zwei Teilen empfangen: zuerst wird der Vorsatz und dann der Paketkörper empfangen. Üblicherweise wird der Vorsatz des Pakets zuerst empfangen und gibt eine Anzahl von Bytes in dem nachfolgenden Paket an. Nun wird angenommen, dass es erwünscht ist, Anfragen an eine Datenbank aufzubereiten, um die Ergebnisse auf eine bestimmte Spalte zu beschränken (z.B. eine SQL-Anweisung wie beispielsweise „where EMPLOYEE = 20“). Zu diesem Zweck wird die Datenbankanfrage modifiziert, damit sie die zusätzliche Bedingung einhält. Bei einer 1:1-Zuordnung von abgefangenen zu echten Systemaufrufen ist jedoch der Vorsatz bereits zu der Datenbank weitergeleitet worden, und es ist dann zu spät, die Größe des Pakets zu ändern. Allgemeiner ausgedrückt, eine einzige Abfrage (z.B. zum Lesen von der Datenbank) könnte über mehrere Systemaufrufe aufgeteilt sein. Wenn die Daten, die in dem Systemaufruf gelesen oder geschrieben werden, an den Benutzerprozess zurückgegeben wurden, ist es unabhängig von der Art der Abfrage oder der geforderten Funktion, zu spät, sie zu modifizieren. Diese Einschränkung hat bei vorhandenen Lösungen verhindert, dass abgefangene Daten neu geschrieben oder aufbereitet werden, die sich über mehr als einen einzigen Systemaufruf erstrecken.
  • OFFENBARUNG DER ERFINDUNG
  • Die bevorzugte Ausführungsform stellt ein Verfahren zum Verarbeiten eines Systemaufrufs in einem Datenverarbeitungssystem mit einem Speicher bereit, wobei der Systemaufruf eine zugehörige Quelle und ein Ziel aufweist, wobei das Verfahren aufweist: beim Abfangen eines Systemaufrufs Anwenden einer Funktion, die in einem Hardware-Element ausgeführt wird, um Daten, die zwei oder mehr echten Systemaufrufen zugehörig sind, in einer Datenablage zu lagern (spooling), bis sich ein vollständiger Satz von Daten, die dem Systemaufruf zugehörig sind, in der Datenablage befindet; und in Reaktion auf ein Empfangen eines Ergebnisses des Anwendens einer Transformation auf den vollständigen Datensatz Freigeben des Systemaufrufs durch Auslagern des Ergebnisses aus der Datenablage (unspooling) zum Ziel.
  • Vorzugsweise handelt es sich bei der Quelle um den Systemaufruf und bei dem Ziel um einen Benutzerbereich des Arbeitsspeichers. Es ist stärker bevorzugt, dass es sich bei der Quelle um einen Benutzerbereich des Arbeitsspeichers und bei dem Ziel um den Systemaufruf handelt. Es ist noch stärker bevorzugt, dass das Verfahren des Weiteren den Schritt des Anwendens einer Transformation auf den vollständigen Datensatz aufweist. Es ist noch stärker bevorzugt, dass es sich bei der Transformation um eines der folgenden handelt: Prüfen, Analysieren, Aufbereiten, Verhindern, Verarbeiten oder Aktualisieren.
  • Vorzugsweise bewirken die zwei oder mehreren echten Systemaufrufe, dass Daten gelesen werden, und die Transformation wird auf den vollständigen Datensatz angewendet, bevor er an eine Anwendung zurückgegeben wird, die den Lesevorgang fordert. Vorzugsweise bewirken die zwei oder mehreren echten Systemaufrufe, dass Daten von einer Anwendung geschrieben werden, und die Transformation wird angewendet, bevor ein erster Schreibvorgang von Systemaufrufen ausgelöst wird.
  • Die hier genannten Techniken stellen eine „Zeitverschiebung (timeshifting)“ von abgefangenen Systemaufrufen bereit, um eine Eine-zu-Viele-(1:n-) oder eine Viele-zu-Eine(n:1-)Zuordnung von abgefangenen zu echten Systemaufrufen zu ermöglichen. Jede Aktion, die an den logischen Grenzen der Daten (anstelle der physischen Begrenzungen), die beim Abfangen von Systemaufrufen auftreten, angewendet werden muss, legt die Daten in einer Datenablage ab (puffert sie), bevor die Aktion ausgeführt wird, und lagert das Ergebnis beim Beenden aus der Datenablage aus. Die Aktion kann recht verschieden sein, z.B. unter anderem Prüfen der Daten, Aufbereiten der Daten, Ändern der Daten, Einschränken der Daten, Verarbeiten der Daten und Aktualisieren der Daten.
  • Bei dem hier beschriebenen Ansatz wird angenommen, dass ein Systemaufruf eine zugehörige Quelle und ein Ziel aufweist. Bei einem „Lesevorgang“ handelt es sich bei der Quelle um den ursprünglichen Systemaufruf und bei dem Ziel um den Benutzerbereich. Bei einem „Schreibvorgang“ handelt es sich bei der Quelle um den Benutzerbereich und bei dem Ziel um den ursprünglichen Systemaufruf. Gemäß dieser Offenbarung wird tatsächlich ein „Hold-Befehl“ auf die Daten angewendet, die dem Systemaufruf zugehörig sind. Insbesondere und bei einem Lesevorgang lagert der „Hold-Befehl“ die Daten in einer Datenablage und gibt sie nicht an den Benutzerbereich zurück, bevor alle Daten gelesen wurden. Bei einem Schreibvorgang lagert der Hold-Befehl die Daten in einer Datenablage, bis alle Daten, die geschrieben werden, von dem Benutzerbereich gelesen wurden. Das Halten der Daten auf diese Weise ermöglicht, dass eine Anwendung einer Transformation für die Benutzerprozesse transparent erfolgt, die die abgefangenen Systemaufrufe aufrufen. Außerdem ermöglicht die Verwendung dieses Ansatzes, dass ein Verarbeiten der Daten und ein Anwenden der Transformation aus der Ferne erfolgen, beispielsweise um Speichereinschränkungen zu vermeiden, so dass unterschiedliche Datensätze miteinander korreliert werden können.
  • Im Vorhergehenden wurden einige der in stärkerem Maße relevanten Merkmale des offenbarten Gegenstands hervorgehoben. Diese Merkmale sollten so ausgelegt werden, dass sie rein veranschaulichend sind. Viele weitere nützliche Ergebnisse können erreicht werden durch Anwenden des offenbarten Gegenstands auf andere Weise oder durch Modifizieren des Gegenstands wie nachfolgend beschrieben.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Für ein vollständigeres Verständnis der vorliegenden Erfindung und deren Vorteile wird auf die nachfolgenden Beschreibungen Bezug genommen, die in Verbindung mit den angefügten Zeichnungen erfolgen, in denen:
  • 1 eine beispielhafte Blockdarstellung einer verteilten Datenverarbeitungsumgebung zeigt, in der beispielhafte Aspekte der veranschaulichenden Ausführungsformen umgesetzt werden können;
  • 2 eine beispielhafte Blockdarstellung eines Datenverarbeitungssystems ist, in dem beispielhafte Aspekte der veranschaulichenden Ausführungsformen umgesetzt werden können;
  • 3 zeigt als Übersicht eine Operation eines bekannten Local Database Access Control System (LDACS), bei dem die Technik dieser Offenbarung in einer nicht einschränkenden Ausführungsform realisiert werden kann;
  • 4 veranschaulicht einen Speicher einer Datenverarbeitungs-Entität, bei der die Funktionsweise des Spooling-Mechanismus dieser Offenbarung umgesetzt werden kann;
  • 5 veranschaulicht einen Prozessablauf zum Verarbeiten eines ersten Typs des Systemaufrufs (z.B. „Lesen“) gemäß dieser Offenbarung;
  • 6 veranschaulicht einen Prozessablauf zum Verarbeiten eines zweiten Typs des Systemaufrufs (z.B. „Schreiben“) gemäß dieser Offenbarung.
  • GENAUE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Unter Bezugnahme auf die Zeichnungen und insbesondere auf die 1 bis 2 werden beispielhafte Darstellungen von Datenverarbeitungsumgebungen bereitgestellt, bei denen veranschaulichende Ausführungsformen der Offenbarung umgesetzt werden können. Es sollte beachtet werden, dass die 1 bis 2 lediglich beispielhaft sind und nicht vorgesehen sind, um Einschränkungen in Bezug auf die Umgebungen geltend zu machen oder einzuführen, bei denen Aspekte oder Ausführungsformen des offenbarten Gegenstands umgesetzt werden können. Viele Modifikationen an den dargestellten Umgebungen können erfolgen, ohne vom Umfang der vorliegenden Erfindung abzuweichen.
  • In den Zeichnungen zeigt 1 eine bildliche Darstellung eines beispielhaften verteilten Datenverarbeitungssystems, bei dem Aspekte der veranschaulichenden Ausführungsformen umgesetzt werden können. Das verteilte Datenverarbeitungssystem 100 kann ein Netzwerk von Computern enthalten, in dem Aspekte der veranschaulichenden Ausführungsformen umgesetzt werden können. Das verteilte Datenverarbeitungssystem 100 enthält wenigstens ein Netzwerk 102, bei dem es sich um das Medium handelt, das zum Bereitstellen von Datenübertragungsverbindungen zwischen zahlreichen Einheiten und Computern verwendet wird, die in dem verteilten Datenverarbeitungssystem 100 miteinander verbunden sind. Das Netzwerk 102 kann Verbindungen wie beispielsweise Leitungen, drahtlose Datenübertragungsverbindungen oder Lichtwellenleiterkabel enthalten.
  • Bei dem gezeigten Beispiel sind der Server 104 und der Server 106 mit dem Netzwerk 102 samt Speichereinheit 108 verbunden. Außerdem sind zusätzlich Clients 110, 112 und 114 mit dem Netzwerk 102 verbunden. Bei diesen Clients 110, 112 und 114 kann es sich beispielsweise um Personal Computer, Netzwerk-Computer oder dergleichen handeln. Bei dem gezeigten Beispiel stellt der Server 104 Daten wie beispielsweise Boot-Dateien, Betriebssystem-Abbilder und Anwendungen für die Clients 110, 112 und 114 bereit. Bei den Clients 110, 112 und 114 handelt es sich in dem gezeigten Beispiel um Clients des Servers 104. Das verteilte Datenverarbeitungssystem 100 kann zusätzliche Server, Clients und weitere nicht gezeigte Einheiten enthalten.
  • In dem gezeigten Beispiel handelt es sich bei dem verteilten Datenverarbeitungssystem 100 um das Internet, wobei das Netzwerk 102 eine weltweite Sammlung von Netzwerken und Gateways darstellt, die die Transmission Control Protocol/Internet Protocol-(TCP/IP-)Protokoll-Suite verwenden, um untereinander Daten auszutauschen. Im Zentrum des Internet befindet sich ein Backbone aus schnellen Datenübertragungsleitungen zwischen Hauptknoten oder Host-Computern, das aus Tausenden kommerzieller, staatlicher, Bildungs- und anderen Computersystemen besteht, die die Weglenkung von Daten und Nachrichten ausführen. Das verteilte Datenverarbeitungssystem 100 kann natürlich so umgesetzt sein, dass es mehrere unterschiedliche Typen von Netzwerken enthält wie beispielsweise ein Intranet, ein Lokalbereichsnetz (LAN), ein Weitverkehrsnetz (WAN) oder dergleichen. Wie oben angegeben ist 1 als Beispiel und nicht als architektonische Einschränkung für verschiedene Ausführungsformen des offenbarten Gegenstands vorgesehen, und deshalb sollten die in 1 gezeigten bestimmten Elemente in Bezug auf die Umgebungen, in denen die veranschaulichenden Ausführungsformen der vorliegenden Erfindung umgesetzt werden können, nicht als einschränkend betrachtet werden.
  • In 2 ist eine Blockdarstellung eines beispielhaften Datenverarbeitungssystems gezeigt, in dem Aspekte der veranschaulichenden Ausführungsformen umgesetzt werden können. Bei dem Datenverarbeitungssystem 200 handelt es sich um ein Beispiel eines Computers wie beispielsweise der Client 110 in 1, in dem sich von einem Computer nutzbarer Code oder Befehle befinden können, der bzw. die die Prozesse für veranschaulichende Ausführungsformen der Offenbarung umsetzen kann bzw. können.
  • In 2 ist eine Blockdarstellung eines Datenverarbeitungssystems gezeigt, in dem veranschaulichende Ausführungsformen umgesetzt werden können. Bei dem Datenverarbeitungssystem 200 handelt es sich um ein Beispiel eines Computers wie beispielsweise der Server 104 oder der Client 110 in 1, in dem sich für die veranschaulichenden Ausführungsformen auf einem Computer nutzbarer Programmcode oder Befehle befinden können, der bzw. die die Prozesse umsetzen können. Bei diesem veranschaulichenden Beispiel enthält das Datenverarbeitungssystem 200 eine Datenübertragungsstruktur 202, die den Datenaustausch zwischen Prozessoreinheit 204, Arbeitsspeicher 206, dauerhaftem Speicher 208, Datenübertragungseinheit 210, Eingabe/Ausgabe-(E/A-)Einheit 212 und Anzeige 214 gewährleistet.
  • Die Prozessoreinheit 204 dient zum Ausführen von Befehlen für die Software, die in den Arbeitsspeicher 206 geladen werden kann. Bei der Prozessoreinheit 204 kann es sich um eine Gruppe aus einem oder mehreren Prozessoren oder in Abhängigkeit von der speziellen Umsetzung um einen Mehrprozessor-Kern handeln. Des Weiteren kann die Prozessoreinheit 204 unter Verwendung eines oder mehrerer heterogener Prozessorsysteme umgesetzt werden, bei denen sich ein Hauptprozessor mit Sekundärprozessoren auf einem einzigen Chip befindet. Als weiteres veranschaulichendes Beispiel kann es sich bei der Prozessoreinheit 204 um ein symmetrisches Mehrprozessor-(SMP-)System handeln, das mehrere Prozessoren desselben Typs enthält.
  • Bei dem Arbeitsspeicher 206 und dem dauerhaften Speicher 208 handelt es sich um Beispiele von Speichereinheiten. Bei einer Speichereinheit handelt es sich um einen Teil der Hardware, die in der Lage ist, Daten vorübergehend und/oder dauerhaft zu speichern. Bei dem Arbeitsspeicher 206 kann es sich bei diesen Beispielen beispielhaft um einen Direktzugriffsspeicher oder jede andere geeignete flüchtige oder nichtflüchtige Speichereinheit handeln. Der dauerhafte Speicher 208 kann in Abhängigkeit von der bestimmten Umsetzung zahlreiche Formen annehmen. Der dauerhafte Speicher 208 kann z.B. eine oder mehrere Komponenten oder Einheiten enthalten. Bei dem dauerhaften Speicher 208 kann es sich z.B. um ein Festplattenlaufwerk, einen Flash-Speicher, eine wiederbeschreibbare optische Platte, ein wiederbeschreibbares Magnetband oder eine bestimmte Kombination der oben genannten handeln. Bei den in dem dauerhaften Speicher 208 verwendeten Medien kann es sich außerdem um Wechseldatenträger handeln. Beispielsweise kann ein austauschbares Festplattenlaufwerk als dauerhafter Speicher 208 verwendet werden.
  • Die Datenverarbeitungseinheit 210 dient bei diesen Beispielen dem Datenaustausch mit anderen Datenverarbeitungssystemen oder -einheiten. Bei diesen Beispielen handelt es sich bei der Datenverarbeitungseinheit 210 um eine Netzwerk-Schnittstellenkarte. Die Datenverarbeitungseinheit 210 kann den Datenaustausch durch die Verwendung von physischen und/oder drahtlosen Datenübertragungsverbindungen bereitstellen.
  • Die Eingabe/Ausgabe-Einheit 212 ermöglicht ein Eingeben und Ausgeben von Daten bei weiteren Einheiten, die gegebenenfalls mit dem Datenverarbeitungssystem 200 verbunden sind. Die Eingabe/Ausgabe-Einheit 212 kann beispielsweise eine Verbindung für eine Benutzereingabe über Tastatur oder Maus bereitstellen. Des Weiteren kann die Eingabe/Ausgabe-Einheit 212 Ausgaben zu einem Drucker senden. Die Anzeige 214 stellt einen Mechanismus bereit, um einem Benutzer Informationen anzuzeigen.
  • Befehle für das Betriebssystem und Anwendungen oder Programme befinden sich in dem dauerhaften Speicher 208. Diese Befehle können in den Arbeitsspeicher 206 für eine Ausführung durch die Prozessoreinheit 204 geladen werden. Diese Prozesse der verschiedenen Ausführungsformen können durch die Prozessoreinheit 204 unter Verwendung von durch einen Computer umgesetzten Befehlen ausgeführt werden, die sich in einem Arbeitsspeicher wie beispielsweise dem Arbeitsspeicher 206 befinden. Diese Befehle werden als Programmcode, auf einem Computer nutzbarer Programmcode oder computerlesbarer Programmcode bezeichnet, der durch einen Prozessor in der Prozessoreinheit 204 gelesen und ausgeführt werden kann. Der Programmcode in den verschiedenen Ausführungsformen kann auf unterschiedlichen physischen oder materiellen computerlesbaren Datenträgern enthalten sein, beispielsweise im Arbeitsspeicher 206 oder im dauerhaften Speicher 208.
  • Der Programmcode 216 befindet sich in einer funktionsfähigen Form auf einem computerlesbaren Medium 218, das selektiv entnommen und für eine Ausführung durch die Prozessoreinheit 204 in das Datenverarbeitungssystem 200 geladen oder zu diesem übertragen werden kann. Der Programmcode 216 und das computerlesbare Medium 218 bilden bei diesen Beispielen ein Computerprogrammprodukt. Zum Übertragen in eine Speichereinheit kann bei einem Beispiel das computerlesbare Medium 218 in einer materiellen Form vorliegen wie beispielsweise eine optische oder magnetische Platte, die in ein Laufwerk oder eine andere Einheit eingesetzt oder darin angeordnet werden kann, die Teil des dauerhaften Speichers 208 ist, wie beispielsweise ein Festplattenlaufwerk, das Teil der dauerhaften Speichereinrichtung 208 ist. In einer materiellen Form kann das computerlesbare Medium 218 außerdem die Form eines dauerhaften Speichers annehmen wie beispielsweise ein Festplattenlaufwerk, ein USB-Laufwerk oder ein Flash-Speicher, der mit dem Datenverarbeitungssystem verbunden ist. Die materielle Form des computerlesbaren Mediums 218 wird auch als durch einen Computer beschreibbares Speichermedium bezeichnet. In einigen Fällen kann ein durch einen Computer beschreibbares Medium 218 möglicherweise nicht gewechselt werden.
  • Alternativ kann Programmcode 216 vom computerlesbaren Medium 218 über eine Datenübertragungsverbindung zu der Datenübertragungseinheit 210 und/oder über eine Verbindung zur Eingabe/Ausgabe-Einheit 212 zum Datenverarbeitungssystem 200 übertragen werden. Die Datenübertragungsverbindung und/oder die Verbindung können in den veranschaulichenden Beispielen physisch oder drahtlos sein. Das computerlesbare Medium kann außerdem die Form eines nichtmateriellen Datenträgers aufweisen wie beispielsweise Datenübertragungsverbindungen oder drahtlose Übertragungen, die den Programmcode enthalten. Die verschiedenen Komponenten, die für das Datenverarbeitungssystem 200 dargestellt sind, bedeuten keine architektonischen Einschränkungen an der Art, wie die unterschiedlichen Ausführungsformen umgesetzt werden können. Die verschiedenen veranschaulichenden Ausführungsformen können in einem Datenverarbeitungssystem umgesetzt werden, das zusätzlich zu den für das Datenverarbeitungssystem 200 dargestellten Komponenten oder anstelle von diesen weitere Komponenten enthält. Weitere Komponenten, die in 2 gezeigt sind, können von dem gezeigten veranschaulichenden Beispiel abweichen. Bei einer Speichereinheit in dem Datenverarbeitungssystem 200 handelt es sich in einem Beispiel um jede Hardware-Vorrichtung, die Daten speichern kann. Bei dem Arbeitsspeicher 206, dem dauerhaften Speicher 208 und dem computerlesbaren Medium 218 handelt es sich um Beispiele von Speichereinheiten in einer materiellen Form.
  • Bei einem weiteren Beispiel kann ein Bussystem zum Umsetzen der Datenverarbeitungsstruktur 202 verwendet werden und kann einen oder mehrere Busse beinhalten wie beispielsweise einen Systembus oder einen Eingabe/Ausgabe-Bus. Das Bussystem kann natürlich unter Verwendung eines geeigneten Architekturtyps umgesetzt werden, das eine Übergabe von Daten zwischen verschiedenen Komponenten und Einheiten gewährleistet, die an das Bussystem angeschlossen sind. Außerdem kann eine Datenübertragungseinheit eine oder mehrere Einheiten enthalten, die zum Senden und Empfangen von Daten verwendet werden wie beispielsweise ein Modem oder ein Netzwerkadapter. Des Weiteren kann ein Arbeitsspeicher vorhanden sein, z.B. der Arbeitsspeicher 204 oder ein Cache-Speicher, der beispielsweise in einem Schnittstellen- und Speicher-Steuereinheitenknoten vorkommt, der möglicherweise in der Datenübertragungsstruktur 202 vorhanden ist.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java (bei Java und allen auf Java beruhenden Warenzeichen und Logos handelt es sich um Warenzeichen oder eingetragene Warenzeichen von Oracle und/oder dessen Tochtergesellschaften), Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache "C" oder ähnliche Programmiersprachen. Der Programmcode kann nur auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als ein eigenständiges Software-Paket, teilweise auf dem Computer eines Benutzers und teilweise auf einem fernen Computer oder nur auf dem fernen Computer oder Server ausgeführt werden. In dem zuletzt genannten Szenario kann der ferne Computer mit dem Computer des Benutzers durch jeden Netzwerktyp verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer (z.B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
  • Ein Fachmann wird erkennen, dass die Hardware in den 1 bis 2 in Abhängigkeit von der Umsetzung variieren kann. Eine andere interne Hardware oder andere periphere Einheiten wie beispielsweise Flash-Speicher, gleichartige nichtflüchtige Speicher oder optische Plattenlaufwerke und dergleichen können zusätzlich zu oder anstelle der in den 1 bis 2 gezeigten Hardware verwendet werden. Außerdem können die Prozesse der veranschaulichenden Ausführungsformen auf ein Multiprozessor-Datenverarbeitungssystem angewendet werden, das von dem zuvor erwähnten symmetrischen Mehrfachverarbeitungs-(SMP-)System verschieden ist, ohne vom Umfang des offenbarten Gegenstands abzuweichen.
  • Wie ersichtlich ist, funktionieren die hier beschriebenen Techniken im Zusammenhang mit der üblichen Client-Server-Anordnung, die beispielsweise in 1 dargestellt ist, bei der Client-Maschinen mit einem über das Internet zugänglichen webgestützten Portal Daten austauschen, das in einer Gruppe aus einer oder mehreren Maschinen ausgeführt wird. Endanwender betreiben mit dem Internet verbindbare Einheiten (z.B. Desktop-Computer, Notebook-Computer, internetfähige mobile Einheiten oder dergleichen), die in der Lage sind, auf das Portal zuzugreifen und mit diesem zu interagieren. Üblicherweise handelt es sich bei jeder Client- oder Server-Maschine um ein Datenverarbeitungssystem wie beispielsweise in 2 dargestellt, das Hardware und Software aufweist, und diese Entitäten tauschen über ein Netzwerk wie beispielsweise das Internet, ein Intranet, ein Extranet, ein privates Netzwerk oder jedes andere Datenübertragungsmedium oder jede andere Datenübertragungsverbindung Daten aus. Ein Datenverarbeitungssystem enthält üblicherweise einen oder mehrere Prozessoren, ein Betriebssystem, eine oder mehrere Anwendungen und ein oder mehrere Dienstprogramme. Die Anwendungen in dem Datenverarbeitungssystem stellen einen nativen Support für Web-Dienste bereit, darunter einen Support für HTTP, SOAP, XML, WSDL, UDDI und WSFL, ohne darauf beschränkt zu sein. Informationen bezüglich SOAP, WSDL, UDDI und WSFL sind von dem World Wide Web-Konsortium (W3C) verfügbar, das für Entwicklung und Unterhaltung dieser Standards verantwortlich ist; weitere Informationen bezüglich HTTP und XML sind von der Internet Engineering Task Force (IETF) verfügbar. Eine Vertrautheit mit diesen Standards wird vorausgesetzt.
  • Bei einer repräsentativen, nicht einschränkenden Umsetzung werden die hier genannten Techniken im Kontext eines Verarbeitungssystems oder einer Umgebung für Transaktionen, das bzw. die verteilte und Mainframe-Komponenten aufweist, die zusammenwirken, um auf Client-Endanwender-Dienst- oder Transaktionsanforderungen bei HTTP- und Web-Diensten zu reagieren. Ein derartiges System oder eine derartige Umgebung weist üblicherweise mehrere Komponenten auf, die verteilt eingerichtet sind. Eine verteilte Komponente einer größeren Mehrkomponenten-Transaktionsverarbeitungsumgebung weist üblicherweise wenigstens einen Computer, eine Betriebssystem-Plattform, Anwendungen, eine Vernetzungs- und zugehörige Sicherheitsmaschine auf, die verteilte Transaktionsverarbeitungsfunktionen bereitstellt wie beispielsweise Vernetzungs-Interaktionen mit dem Client-Endanwender und Identifizierungs- und Identitätsprüffunktionen bei Szenarien von HTTP- und Web-Diensten. Das Transaktionsverarbeitungssystem oder die Umgebung dieses Typs enthält üblicherweise eine Mainframe-Komponente, die wenigstens einen Computer, eine Betriebssystem-Plattform, Anwendungen, eine Vernetzungs- und zugehörige Sicherheitsmaschine enthält, die eine leistungsstarke Backend-Transaktionsverarbeitung und eine große Datenbankfunktionalität bereitstellt.
  • Die Techniken dieser Offenbarung (die nachfolgend genauer beschrieben werden) können in einer bekannten Database-Access-Control-System-(LDACS-)Architektur umgesetzt werden, ohne dass eine Einschränkung vorgesehen ist. Ein LDACS ermöglicht außerdem Prüf- und Anmeldeoperationen in Bezug auf eine Datenbank, auf die über ein Netzwerk zugegriffen werden kann. Bei diesem Ansatz ist üblicherweise eine Interprozess-Datenübertragungs-(IPC-)Erfassung definiert, um einen Zugangspunkt zu identifizieren, der für lokale und ferne Datenbank-(DB-)Zugangsversuche gemeinsam ist. Lokale Zugangsversuche auf die Datenbank werden abgefangen und zu einer Datensicherheitseinheit transportiert, die für eine Netzwerküberwachung der Zugangsversuche betrieben werden kann. Da es sich bei der Datensicherheitseinheit um eine ferne Einheit handelt, wird sie gelegentlich als eine „externe Sicherheitseinheit“ (oder „ESD“) bezeichnet. Die ICP-Abfangeinrichtung führt ein Abfangen der lokalen Zugangsversuche durch ein Umsetzungsobjekt mit minimaler Präsenz aus, um den Ressourcenaufwand gering zu halten. Auf diese Weise überwacht die ferne Netzwerk-Datensicherheitseinheit sowohl die lokalen Zugangsversuche über ein Abfangen am DB-Host und eine Übertragung der abgefangenen Zugangsversuche zu der Datensicherheitseinheit als auch die fernen Zugangsversuche über das Netzwerk, wodurch ein Analysen und ein Protokollieren der Datenzugangsversuche auf die Datenbank-Ressourcen über die Datensicherheitseinheit zusammengeführt werden.
  • 3 veranschaulicht die Architektur und den Betrieb eines LCADS, bei dem die Techniken dieser Offenbarung realisiert werden können. In 3 stellt die Umgebung einen fernen Benutzer 302 mit einem Datenbank-(DB-)Host 304 für Datenspeicherung und Abrufoperationen (DB-Operationen) bereit. Der Benutzer 302 verbindet sich mit dem Host 304 über ein Zugangsnetzwerk 306, bei dem es sich um jede geeignete Internetworking-Infrastruktur handeln kann wie beispielsweise ein LAN, Intranet, Extranet oder das Internet. Der DB-Host 304 enthält einen Datenbank-Server 308, der mit der Datenbank 310 verbunden ist, üblicherweise ein Platten-Array oder eine Gruppe von Massenspeichereinheiten wie beispielsweise Plattenlaufwerke. Die Datenbank 308 enthält ein DB-Zugangs-Gateway 312, das als Anwendungs-Programmierschnittstelle (API) für den Zugang des Benutzers 302 über eine Vielzahl von Zugangsverfahren betrieben wird.
  • Ein Benutzer initiiert einen Zugriff auf die Datenbank in Form einer Benutzeranfrage 314, die das Netzwerk 306 für eine Zustellung an das DB-Zugangs-Gateway 312 als eine ankommende Anfrage 316 durchläuft. Eine Datensicherheitseinheit 320 ist über einen Switch e22 oder eine andere Konnektivitätseinheit wie beispielsweise ein Abgriff, ein Router oder eine Brücke auf dem Weg vom Netzwerk 306 zum Host geschaltet. Die Datensicherheitseinheit 320 enthält einen DB-Monitor 324 zum Empfangen von Benutzeranfragen 314, die durch den Switch 322 gesendet werden. Der DB-Monitor empfängt und analysiert die ankommende Benutzeranfrage 314 als einen abgefangenen Zugangsversuch 318, den der DB-Monitor 324 gemäß einer im Voraus festgelegten Sicherheits- oder Zugangsstrategie analysiert. Die Datensicherheitseinheit 320 leitet dann den abgefangenen Zugangsversuch 318 als eine ankommende Anfrage 116 zu dem Zugangs-Gateway (AG) 312.
  • Der Datenbank-Server 308 erwartet üblicherweise, dass ein wesentlicher Teil des DB-Verkehrs (Benutzeranfrage 314) an einem fernen Ort über das Netzwerk 306 eintrifft und somit eine Prüfung durch die Datensicherheitseinheit 320 durchlaufen wird. Jedoch geht ein Teil der Datenbankzugriffversuche lokal von einem lokalen Client 330, der im Host 304 ausgeführt wird, als lokale Zugriffsversuche 332 aus. Die lokalen Zugriffsversuche 332 treffen am Zugangs-Gateway 312 über einen Inter-Process Communication-(IPC-)Mechanismus 334 ein. Derartige lokale Zugangsversuche 332 verlaufen nicht durch den Switch 322 und können deswegen auf andere Weise betrieben werden, um eine Prüfung durch die Datensicherheitseinheit 320 zu umgehen. Um dieses Problem zu lösen, verwendet eine bekannte LDACS-Lösung eine IPC-Abfangeinrichtung 340 zum Abfangen des lokalen Zugangsversuchs 332 und Transportieren des abgefangenen Zugangsversuchs 342 zu einem lokalen Agenten 350. Der lokale Agent 350 ermittelt durch Abfragen des IPC-Mechanismus 334 einen Datenbankbefehl 352, der den lokalen Zugangsversuchen 332 entspricht. Der lokale Agent 350 überträgt dann den ermittelten Datenbankbefehl 352 zu der Datensicherheitseinheit 320 für eine Analyse und weitere Operationen durch den DB-Monitor 324. Auf diese Weise empfängt die Datensicherheitseinheit 320 alle lokalen und fernen Zugangsversuche auf den DB-Server 308, um Zugangsversuche, die möglicherweise unerwünscht sind, vollständiger zu analysieren, zu überwachen und vor diesen zu schützen. Auch wenn die oben beschriebene Konfiguration bevorzugt ist, muss der Agent 350 nicht lokal sein, sondern kann stattdessen an anderen Orten oder Konfigurationen positioniert sein, die mit einem Datenbank-Host oder -System verbunden sind.
  • Bei einem typischen DB-Host 304 kann der lokale Client eine Vielzahl von IPC-Mechanismen 334 verwenden, um lokale Zugangsversuche 332 zu dem DB-Server 308 zu übertragen. IPC ist üblicherweise nicht sicher. Alternative Konfigurationen können andere Datenübertragungsmechanismen verwenden wie beispielsweise kryptografischer Verfahrenfernaufruf (remote method invocation).
  • Wie oben dargestellt soll die Beschreibung von LCADS nicht einschränkend sein. Die Techniken, die nun beschrieben werden, können bei anderen Lösungstypen umgesetzt werden, beispielsweise Prüf- und Konformitätssysteme, Steuerungsänderungssysteme, Schwachstellen-Managementlösungen, Missbrauch-Verhinderungslösungen, Datenbankleck-Verhinderungslösungen und andere.
  • Die hier beschriebenen Techniken können im Allgemeinen in jeder Datenverarbeitungsumgebung umgesetzt werden, bei der ein Programm oder Prozess einen Dienst (z.B. einen Lesevorgang, einen Schreibvorgang oder dergleichen) vom Kern eines Betriebssystem beispielsweise unter Verwendung eines Systemaufrufs anfordert und eine bestimmte Aktion an den logischen Grenzen der Daten, die dem Dienst zugeordnet sind, angewendet werden muss.
  • Spooling von Systemaufrufdaten
  • 4 veranschaulicht eine Speicherspeicherarchitektur einer repräsentativen Datenverarbeitungsentität, bei der die hier beschriebenen Techniken umgesetzt werden können. Die Datenverarbeitungsentität kann möglicherweise von dem Typ sein, der oben bei Bezugnahme auf 2 beschrieben wurde. Sie enthält einen (nicht gezeigten) Prozessor und einen Speicher 400, der so organisiert ist, dass er einen virtuellen Speicher 402 enthält, der seinerseits in einen Kernbereich 404 und einen Benutzerbereich 406 unterteilt ist. Prozesse oder Programme 410 werden im Benutzerbereich 406 ausgeführt. Systemaufrufe wie beispielsweise der Systemaufruf 412 stellen die Schnittstelle zwischen den Programmen oder Prozessen 410, die im Benutzerbereich 406 ausgeführt werden, und dem Betriebssystemkern 408 bereit, der im Kernbereich 404 ausgeführt wird.
  • Gemäß der bevorzugten Ausführungsform wird ein Mechanismus 414 zum Spooling von Systemaufrufdaten bereitgestellt, beispielsweise für eine Datentransformation wie beispielsweise zum Analysieren und Aufbereiten. Der Spooling-Mechanismus 414 dient zur „Zeitverschiebung“ von abgefangenen Systemaufrufen, um eine Eine-zu-Viele-(1:n) oder eine Viele-zu-Eine-(n:1)Zuordnung von abgefangenen-zu-echten Systemaufrufen zu ermöglichen. Bei diesem Ansatz zwischenspeichert (puffert) jede Aktion, die an den logischen Grenzen der Daten (anstelle der physischen Grenzen) angewendet werden muss, die bei der Systemaufruferfassung auftreten, die Daten, bevor die Aktion erfolgt, und gibt nach Abschluss das Ergebnis wieder frei. Die Aktion kann recht verschieden sein, z.B. unter anderem Prüfen der Daten, Aufbereiten der Daten, Ändern der Daten, Einschränken der Daten, Verarbeiten der Daten und Aktualisieren der Daten und kann lokal oder entfernt ausgeführt werden. Eine beispielhafte Ausführungsform des Fernverarbeitungsansatzes ist jene, die oben unter Bezugnahme auf 3 beschrieben wurde.
  • Wie beschrieben wird bei dem Ansatz angenommen, dass ein Systemaufruf 411 eine zugehörige Quelle und ein Ziel aufweist. Im Fall eines „Lesevorgangs“ ist die Quelle der ursprüngliche Systemaufruf selbst, und das Ziel ist der Benutzerbereich 406. Bei einem „Schreibvorgang“ ist die Quelle der Benutzerbereich, und das Ziel ist der ursprüngliche Systemaufruf. Der Spooling-Mechanismus 414 wird betrieben, um die Daten, die einem Systemaufruf 411 zugehörig sind, mit einem „Halten“ zu belegen. Insbesondere und im Fall eines Lesevorgangs zwischenspeichert der Spooling-Mechanismus 414 die Daten und gibt sie nicht an den Benutzerbereich zurück, bevor sämtliche Daten gelesen wurden. Im Fall eines Schreibvorgangs zwischenspeichert der Spooling-Mechanismus 414 die Daten, bis sämtliche Daten, die geschrieben werden sollen, von dem Benutzerbereich 406 gelesen wurden. Das Halten der Daten auf diese Weise ermöglicht, dass ein Anwenden einer Transformation transparent für die Benutzerprozesse 410 erfolgen kann, die die abgefangenen Systemaufrufe aufrufen. Außerdem ermöglicht eine Verwendung dieses Ansatzes, dass ein Verarbeiten der Daten und ein Anwenden der Transformation aus der Ferne erfolgt, beispielsweise zum Vermeiden von Speicherbeschränkungen, und so dass verschiedene Datensätze miteinander korreliert werden können.
  • Der Spooling-Mechanismus wirkt durch Abfangen eines Systemaufrufs. Der Mechanismus enthält eine Analysator-Funktion, wie nachfolgend genauer beschrieben wird. Wenn ein Systemaufruf 412 abgefangen wird, wird die Adresse der Funktion des Spooling-Mechanismus anstelle der Adresse der ursprünglichen Funktion eingesetzt, und diese Adresse (der ursprünglichen Funktion) wird durch das Betriebssystem gespeichert. Wenn es später erforderlich ist, den ursprünglichen Systemaufruf aufzurufen (zu diesem zurückzukehren), wird die Adresse des ursprünglichen Systemaufrufs verwendet, die während des Abfangprozesses gespeichert wurde. Für Erläuterungszwecke werden ein oder mehrere Datenkonstrukte oder Strukturen geführt und durch den Spooling-Mechanismus verarbeitet, wenn der Ansatz der Zeitverschiebung dieser Offenbarung ausgeführt wird. Diese Datenstrukturen werden gelegentlich als „Puffer“ bezeichnet. Bei der Verwendung an dieser Stelle bezieht sich somit ein „ursprünglicher Puffer“ auf die Daten, die ursprünglich den Betriebssystem-Kern 408 durchlaufen und die über einen oder mehrere Systemaufrufe entdeckt werden. Diese Daten werden als durchlaufend betrachtet, da die Daten im Sinn des Lesens und aus der Sicht des Abfangens des Systemaufrufs von dem ursprünglichen Systemaufruf des Kerns stammen, wohingegen die Daten im Sinn des Schreibens von dem Benutzer stammen. Ein „Puffer geänderter Daten“ bezeichnet die Daten von dem ursprünglichen Puffer oder den Puffern, nachdem auf sie eine Transformation angewendet wurde. Ein „Erinnerungszähler“ bezeichnet eine Menge von Daten, die in dem ursprünglichen Puffer verblieben sind, die noch entweder zu dem ursprünglichen Systemaufruf (für einen Lesevorgang) oder zu dem Benutzer (für einen Schreibvorgang) übertragen werden müssen. Daher werden beim Betrieb des Spooling-Mechanismus Daten (die ursprünglichen Puffer) gesammelt, (in einem Arbeitspuffer) miteinander verknüpft, die Transformation wird angewendet und das Ergebnis in dem Puffer geänderter Daten gespeichert, und der Puffer geänderter Daten wird dann dorthin zurückgeleitet (oder aus dem Puffer geholt), wohin die ursprünglichen Puffer gehen sollten (und zwar zu dem ursprünglichen Systemaufruf für einen Lesevorgang oder zu dem Benutzer für einen Schreibvorgang).
  • Bei einem abgefangenen Systemaufruf handelt es sich bei den Daten, die von Interesse sind, um die Daten, die mit Aufruf verbunden sind. Für einen Systemaufruf Lesen (z.B. empf, lies oder dergleichen) sind die Daten lediglich verfügbar, nachdem der ursprüngliche Systemaufruf aufgerufen wurde. Für einen Systemaufruf Schreiben (z.B. sende, schreibe oder dergleichen) werden die Daten als ein Argument eingeleitet. In beiden Fällen gibt es keine Möglichkeit zum Steuern der Größe des Puffers, der für den Systemaufruf bereitgestellt wird. Wegen der verschiedenen Arten, wie diese Daten vorhanden sind, müssen die Systemaufrufe Lesen und Schreiben unterschiedlich verarbeitet werden, obwohl das allgemeine Konzept ähnlich ist. Insbesondere die Anwendung des Verfahrens zum Spooling/Unspooling ist in beiden Fällen sehr ähnlich, die sich hauptsächlich darin unterscheiden, wo die (1:n)-Zuordnung (der abgefangenen Systemaufrufe zu den tatsächlichen Systemaufrufen) erfolgt. Im Fall eines Systemaufrufs Lesen müssen logische Paketdaten (z.B. eine Datenbankabfrage) gesammelt werden (bevor Daten an den Benutzer zurückgegeben werden), so dass eine Transformation angewendet werden kann. Insbesondere der Benutzerprozess, der den Systemaufruf aufruft, stellt einen Puffer bereit, der mit Daten gefüllt werden soll. Da eine Notwendigkeit besteht, eine Transformation an den Daten anzuwenden, bevor der Benutzerprozess sie empfängt, werden die gelesenen Daten gehalten, bis die Transformation angewendet werden kann. Da es keine Garantie gibt, dass das gesamte logische Paket von Daten in den bereitgestellten Puffer passt (oder dass die transformierten Daten passen werden), werden die Daten gemäß dieser Offenbarung gespeichert, bis das gesamte Paket von ursprünglichen Daten empfangen wird, werden die Daten für eine Analyse und Modifikation (oder eine weitere Transformation) versendet, und die transformierten Daten werden zurück zu dem Benutzer geleitet (unspooled). Zu diesem Zweck und wie in 5 beschrieben wird das realisiert, indem der ursprüngliche Systemaufruf in dem erfassten Systemaufruf wiederholt aufgerufen wird, bis eine Analysatorfunktion (in dem Spooling-Mechanismus) erkannt hat, dass das Paket vollständig ist. Dann wird die Transformation (z.B. durch den Analysator) angewendet und die geänderten Daten werden an den abgefangenen Systemaufruf zurückgegeben. Der bereitgestellte Puffer wird mit den transformierten Daten gefüllt und an den Benutzer zurückgegeben. Wenn das gesamte transformierte Paket nicht in den bereitgestellten Puffer passt, wird der Puffer bis zu seiner Kapazität gefüllt, und nachfolgende Systemaufrufe durch den Benutzerprozess rufen den ursprünglichen Systemaufruf nicht erneut auf, sondern füllen stattdessen die bereitgestellten Puffer mit weiteren Daten von dem transformierten Paket, bis die Gesamtheit des Pakets zurückgegeben wurde, wobei der Zyklus an diesem Punkt erneut beginnt.
  • 5 veranschaulicht diesen Prozess genauer für den Fall des abgefangenen Lesesystems beim Abfangen. Die Routine beginnt am Schritt 500 durch Prüfen, ob bei einer Sitzung ein Auslagern (unspooling) erfolgt. Wenn das Ergebnis des Prüfens beim Schritt 500 negativ ist, wird die Routine fortgesetzt, indem der ursprüngliche Systemaufruf im Schritt 502 analysiert wird. Im Schritt 504 werden Daten in dem ursprünglichen Systemaufruf gespeichert. Anschließend wird im Schritt 506 ein Prüfen ausgeführt, um zu ermitteln, ob die Daten vollständig sind. Wenn das Ergebnis des Prüfens im Schritt 506 negativ ist, geht dieser Abschnitt der Routine zurück zum Schritt 502, um zusätzliche Daten von dem ursprünglichen Systemaufruf zu erhalten. Wenn jedoch das Ergebnis des Prüfens im Schritt 506 positiv ist, was anzeigt, dass alle Daten vollständig sind, wird die Routine im Schritt 508 fortgesetzt, um eine Datentransformation anzuwenden. Das Wesen der Transformation kann recht verschieden sein, z.B. Prüfen, Aufbereiten, Ändern, Beschränken, Verarbeiten, Aktualisieren und dergleichen. Es gibt keine Beschränkung in Bezug auf das Wesen und den Umfang der Transformation, wobei es sich dabei um eine bekannte Funktion/Operation handelt. Nachdem die Transformation angewendet wurde, wird die Routine im Schritt 510 fortgesetzt, um einen Restzähler auf die Größe eines Puffers für geänderte Daten zu setzen. Die Routine wird dann im Schritt 512 fortgesetzt, um die Sitzung als Unspooling (Auslagern) zu markieren. Die Steuerung wird dann im Schritt 514 fortgesetzt, wobei dieser Schritt auch erreicht wird, wenn das Ergebnis des Prüfens im Schritt 500 positiv ist. Im Schritt 514 werden so viele der verbleibenden geänderten Daten kopiert wie in den ursprünglichen Puffer passen, und der Restzähler wird dekrementiert. Dann wird im Schritt 516 ein Prüfen ausgeführt, um zu ermitteln, ob der Restzähler auf null ist. Wenn das der Fall ist, wird die Markierung der Sitzung als Unspooling im Schritt 518 aufgehoben. Die Routine wird dann im Schritt 520 fortgesetzt mit der Rückgabe an den Benutzer, und dieser Schritt wird ebenfalls erreicht bei einem negativen Ergebnis des Prüfens im Schritt 516. Dadurch wird die Verarbeitung im Fall eines abgefangenen Systemaufrufs Lesen abgeschlossen.
  • Im Fall eines Systemaufrufs Schreiben muss das gesamte logische Paket von Daten gesammelt werden, bevor der ursprüngliche Systemaufruf aufgerufen wird, so dass eine Transformation angewendet werden kann. In diesem Kontext hat der den Systemaufruf aufrufende Benutzerprozess einen Puffer mit den zu sendenden Daten bereitgestellt. Da eine Notwendigkeit besteht, an diesen Daten eine Transformation anzuwenden, bevor sie übertragen werden, müssen sämtliche ursprüngliche Paketdaten gesammelt werden, bevor die Transformation angewendet werden kann. Wie oben angemerkt ist es möglich, dass das Paket über mehrere Systemaufrufe aufgeteilt ist. Es ist außerdem möglich, dass das neue Paket, nachdem die Transformation angewendet wurde, nicht in den durch den Benutzerprozess bereitgestellten Puffer passt. Bis der Analysator feststellt, dass ein vollständiges Paket empfangen wurde, sammelt der Mechanismus daher die Daten von dem Benutzerprozess und springt von dem erfassten Systemaufruf zurück, als ob die Daten erfolgreich übertragen wurden. Der Analysator wendet dann die Transformation an und sendet die modifizierten Daten zurück zu dem ursprünglichen Systemaufruf (bei dem es sich um den Aufruf von dem Benutzerprozess handelt, der den letzten Abschnitt des ursprünglichen Pakets gesendet hat). Wenn das neue Paket nicht in den durch den Aufrufprozess bereitgestellten Puffer passt, wird der Systemaufruf bei Bedarf wiederholt aufgerufen, ohne zu dem Benutzer zurückzukehren, bis der letzte Teil des transformierten Pakets gesendet wurde.
  • 6 veranschaulicht den genauen Prozessablauf für den Fall eines Systemaufrufs Schreiben beim Abfangen. Die Routine beginnt am Schritt 600 durch Speichern und Analysieren von Daten. Im Schritt 602 wird eine Prüfung ausgeführt, um zu ermitteln, ob die Daten vollständig sind. Wenn das Ergebnis der Prüfung im Schritt 602 positiv ist (die Daten sind vollständig), wird die Routine im Schritt 604 fortgesetzt, um die Markierung der Sitzung als Spooling aufzuheben. Die Routine wird dann im Schritt 606 fortgesetzt, um wie oben beschrieben eine Transformation anzuwenden. Im Schritt 608 wird der Restzähler auf eine Größe des Puffers geänderter Daten gesetzt. Die Routine wird dann im Schritt 610 fortgesetzt, in dem so viele der verbleibenden geänderten Daten kopiert werden, wie in den ursprünglichen Puffer passen, und der Restzähler dekrementiert wird. Nach dem Schritt 610 kehrt die Routine zu dem ursprünglichen Systemaufruf zurück. Dabei handelt es sich um den Schritt 612. Dann wird im Schritt 614 eine Prüfung ausgeführt, um zu ermitteln, ob der Restzähler null ist. Wenn das nicht der Fall ist, kehrt die Steuerung zum Schritt 610 zurück. Wenn jedoch der Restzähler auf null ist, kehrt die Steuerung zu dem Benutzer im Schritt 616 zurück. Der Schritt 616 wird auch erreicht, wenn das Ergebnis der Prüfung im Schritt 602 negativ ist, wobei in diesem Fall die Sitzung im Schritt 618 als Spooling markiert wird und die Rückgabe an dem Benutzer umgesetzt wird. Dadurch endet die Verarbeitung im Fall des abgefangenen Systemaufrufs Schreiben.
  • Anders ausgedrückt, im Fall Lesen gibt es eine (1:n)-Zuordnung von abgefangenen zu echten Systemaufrufen, wobei der einzelne abgefangene Systemaufruf in mehrere abgesendete Aufrufe umgesetzt wird, bis der vollständige Datensatz abgerufen wurde, und wird anschließend (über eine Zahl m von abgefangenen Abrufen) zurückgegeben, wenn kein entsprechender gesendeter Systemaufruf vorhanden ist. Im Fall Schreiben gibt es eine (n:1)-Zuordnung von abgefangenen zu echten Systemaufrufen, wobei die b-1 abgefangenen Aufrufe keinen entsprechenden gesendeten Aufruf aufweisen und der n-te abgefangene Aufruf einen letzten Abschnitt des Datensatzes enthält, so dass die Anzahl m von abgesendeten Aufrufen ausgeführt werden, bevor der letzte abgefangene Aufruf zurückkehrt. Nachdem die Daten gespoolt wurden, kann jede Transformation angewendet werden (darunter keine Transformation). Als Beispiel wird der einfache Fall einer SQL-gestützten Datenbankabfrage „select * from employee where dept = 20“ angenommen. Wenn die Daten, die dem Systemaufruf präsentiert werden, auf zwei Puffer aufgeteilt werden, die die Zeichenfolgen „select * from employee“ und „where dept = 20“ enthalten, sind diese beiden Zeichenfolgen wirklich Teil derselben Abfrage; des Weiteren wird angenommen, dass die Transformation eine Regel enthält, die besagt „Replace dept = 20 durch dept = 21 when object = employee“. Eine weitere mögliche Transformation könnte lauten: „Drop a session when attempting to access object ‘employee’ from dept. ‘20’”. Wenn an dieser Stelle der Ansatz genutzt wird, können diese Typen von Transformationen auf die durch die Benutzeranwendung bereitgestellten Daten ohne die Unterbrechungen, die durch das Zustellungsprotokoll oder andere Anwendungseinschränkungen eingefügt werden, angewendet werden.
  • Wie beschrieben handelt es sich bei dem Spooling-Mechanismus um eine Zeitverschiebungseinheit für abgefangene Systemaufrufe mit einer optionalen Modifikation an den ursprünglichen Daten, die gesendet oder empfangen wurden. Wie in der Problemstellung beschrieben gibt es, wenn abgefangene Systemaufrufe für den Zweck des Anwendens von Transformationen an den Daten über das Betriebssystem gesendet und empfangen werden, keine Garantie dafür, dass die Menge von abgefangenen Daten das gesamte logische Paket umfassen. Wenn zum Beispiel TCP-Verkehr für eine Datenbank erfasst wird, könnte eine einzige Abfrage über mehrere Aufrufe zum Lesen verteilt sein. Gemäß dem Ansatz dieser Offenbarung und anstelle des Ausführens einer 1:1-Zuordnung von abgefangenen zu echten Systemaufrufen werden während eines Lesevorgangs die abgefangenen Daten analysiert, und der ursprüngliche Systemaufruf wird bei Bedarf erneut aufgerufen, bis alle Daten gelesen wurden; dann kann eine Transformation angewendet werden, indem sie an diesem vervollständigten Satz bewirkt wird und anschließend zu dem ursprünglichen Aufrufer durch erneutes Füllen des ursprünglichen Puffers zurückgegeben werden, möglicherweise über mehrere Systemaufrufe. Dadurch kann die Anwendung der Transformation transparent für die Benutzerprozesse erfolgen, die die abgefangenen Systemaufrufe aufrufen.
  • Außerdem können die Verarbeitung der Daten und die Anwendung einer Transformation aus der Ferne erfolgen, um Speicherbeschränkungen zu vermeiden, so dass verschiedene Datensätze miteinander korreliert werden können. Dieser Ansatz kann in der LDACS-Lösung von 3 verwendet werden. Somit ist beispielsweise eine Anwendung dieser Datenkorrelation der Schutz einer Host-Datenbank gegen unberechtigten Zugang. Die Informationen werden verwendet, um Datenelemente zu schützen, bei denen es ansonsten schwierig oder unmöglich wäre, sie unter Verwendung von Standard-Zugangssteuerungen zu sichern. Durch Korrelieren der Daten könnte beispielsweise eine gesamte Sitzung eines Benutzers bei der Datenbank beobachtet werden, indem sie vom Öffnen bis zum Schließen verfolgt wird. Dieser berechtigte Benutzer kann Zugang zu Tabellen fordern, die Daten-Teilmengen enthalten, bei denen keine Berechtigung zum Betrachten oder Modifizieren besteht. Durch Transformieren der Anfragen können die geschützten Daten automatisch gesichert werden (z.B. anstelle von ‚select * from table‘ ‚select * from table where...‘). Es ist jedoch bekannt, dass die Korrelations- und Transformationsschritte kompliziert sind und ein Verfolgen der Vorgeschichte erfordern, was während einer Sitzung passiert ist. Das ist zu kompliziert, um es inline in den abgefangenen Systemaufruf einzufügen, deswegen ermöglicht die LDACS-Lösung ein Bereitstellen eines separaten Kollektors/Analysators zum Verarbeiten der Daten und Weiterleiten dieser Informationen zurück zu dem Systemaufruf. Da dieser Prozess für den Benutzer transparent sein muss, wird die Technik dieser Offenbarung dann verwendet, um den bzw. die ursprünglichen Systemaufrufe „anzuhalten“, bis die Verarbeitung abgeschlossen ist.
  • Der hier beschriebene Mechanismus ist nicht nur für ein Aufbereiten von Datenbank-Abfragen nützlich. Er könnte nützlich sein für ein Firewalling von Daten auf der Grundlage des Inhalts der Daten, selektives Prüfen oder dergleichen. Der Ansatz kann im Allgemeinen verwendet werden, um alle Transformationen zu ermöglichen, die an den logischen Grenzen der Daten (anstelle der physischen Grenzen) angewendet werden müssen, die beim Abfangen von Systemaufrufen auftreten und bei denen eine Notwendigkeit besteht, die Daten zwischenzuspeichern (spool), bevor die Transformation angewendet wird (wobei das Ergebnis dann nach Beendigen aus dem Speicher entladen wird (unspool)).
  • Die hier genannte Technik stellt viele Vorteile bereit. Durch Erzeugen der Eine-zu-Viele (gemultiplexten) Zuordnung von abgefangenen zu echten Systemaufrufen können Transformationen effektiver angewendet werden, selbst wenn sich die abgefangenen Daten ansonsten über mehr als einen einzigen Systemaufruf erstrecken würden. Bei der 1:n-Zuordnung (der Fall Lesen) wird der echte Systemaufruf so oft neu aufgerufen, wie es erforderlich ist, bevor er an den Benutzerbereich zurückgegeben wird. Insbesondere wird bei der Technik gelesen, bis das gesamte Paket gesammelt wurde, dann wird die Transformation angewendet, und anschließend werden die modifizierten Daten (darunter ein modifizierter Paketvorsatz) an den Benutzerbereich zurückgegeben.
  • Die oben beschriebene Funktionalität des Spooling-Mechanismus kann als eine Kern-Modifikation, ein selbständiger Ansatz oder eine bestimmte Kombination hiervon umgesetzt werden. In jedem Fall kann die Transformation als eine softwaregestützte Funktion umgesetzt werden, die durch einen Prozessor ausgeführt wird, oder sie kann als ein verwalteter Dienst verfügbar sein (darunter ein Web-Dienst über eine SOAP/XML-Schnittstelle). Die hier beschriebenen Einzelheiten der bestimmten Hardware- und Softwareumsetzung dienen lediglich zu Erläuterungszwecken und sollen den Umfang des beschriebenen Gegenstands nicht einschränken.
  • Ohne das Vorhergehende einzuschränken, handelt es sich bei einer repräsentativen LDACS-Lösung, bei der der Ansatz verwendet werden kann, um IBM® InfoSphere® Guardium, Version 8.0 (IBM, InfoSphere und Guardium sind eingetragene Warenzeichen der International Business Machine Corporation). Diese Lösung weist eine skalierbare Architektur auf und enthält Kollektor, Aggregator und Geräte zum zentralen Management sowie Software-Tap-(S-Tap-)Agenten, die in den Datenbankservern installiert sind, und Kern-Tap-(K-Tap-)Agenten, die in Verbindung mit dem Kern installiert sind. Der K-Tap sammelt die Daten, und der S-Tap transportiert die Daten zu dem Punkt, an dem die Transformation angewendet wird (und empfängt das Ergebnis).
  • Die hier beschriebene Technik kann unter Bezugnahme auf andere Typen von Systemaufrufen neben Lesevorgängen und Schreibvorgängen umgesetzt werden.
  • Bei den Datenverarbeitungseinheiten im Kontext der offenbarten Erfindung handelt es sich jeweils um ein Datenverarbeitungssystem (wie beispielsweise in 2 gezeigt), das Hardware und Software aufweist, und diese Entitäten tauschen über ein Netzwerk wie beispielsweise das Internet, ein Intranet, ein Extranet, ein privates Netzwerk oder jedes andere Datenübertragungsmedium oder jede andere Verbindung untereinander Daten aus. Die Anwendungen in dem Datenverarbeitungssystem stellen einen nativen Support für Web- und andere bekannte Dienste und Protokolle bereit, darunter ein Support für HTTP, FTP, SMTP, SOAP, XML, WSDL, UDDI und WSFL, ohne auf diese beschränkt zu sein. Informationen bezüglich SOAP, WSDL, UDDI und WSFL sind vom World Wide Web-Konsortium (W3C) verfügbar, das für Entwicklung und Unterhaltung dieser Standards verantwortlich ist; weitere Informationen bezüglich HTTP, FTP, SMTP und XML sind von der Internet Engineering Task Force (IETF) verfügbar. Eine Vertrautheit mit diesen bekannten Standards und Protokollen wird vorausgesetzt.
  • Das hier beschriebene Konzept kann in oder in Verbindung mit verschiedenen serverseitigen Architekturen umgesetzt werden, darunter einfache n-fache Architekturen, Web-Portale, ähnliche Systeme und dergleichen. Wie angegeben können die hier genannten Techniken bei einer Umgebung mit lose gekoppeltem Server (darunter eine „Cloud“-gestützte Umgebung) realisiert werden. Der eigentliche Sicherheitsserver (oder dessen Funktionen wie beispielsweise der Monitorprozess) können in der Cloud beherbergt sein.
  • Noch allgemeiner ausgedrückt, der hier beschriebene Gegenstand kann die Form einer reinen Hardwareausführungsform, einer reinen Softwareausführungsform oder einer Ausführungsform annehmen, die sowohl Hardware- als auch Softwareelemente enthält. Bei einer bevorzugten Ausführungsform wird die Funktion in Software umgesetzt, darunter Firmware, residente Software, Mikrocode und dergleichen, ist jedoch nicht auf diese beschränkt ist. Des Weiteren kann wie oben angegeben die Funktionalität der Analytikmaschine die Form eines Computerprogrammprodukts annehmen, auf das von einem durch einen Computer nutzbaren oder computerlesbaren Medium zugegriffen werden kann, das Programmcode zur Verwendung durch oder in Verbindung mit einem Computer oder einem Befehlsausführungssystem bereitstellt. Für die Zwecke dieser Beschreibung kann es sich bei einem durch einen Computer nutzbaren oder computerlesbaren Medium um jede Vorrichtung handeln, die das Programm zur Verwendung durch oder in Verbindung mit dem System, der Einrichtung oder der Einheit zur Befehlsausführung enthalten oder speichern kann. Bei dem Medium kann es sich um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder ein Halbleitersystem (oder -Vorrichtung oder -Einheit) handeln. Zu Beispielen eines computerlesbaren Mediums gehören ein Halbleiter- oder Festkörperspeicher, ein Magnetband, eine Wechsel-Computerdiskette, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), eine magnetische Festplatte und eine optische Platte. Zu aktuellen Beispielen von optischen Platten gehören Compactdisk-Festwertspeicher (CD-ROM), Compactdisk-Lese/Schreibspeicher (CD-R/W). Bei dem computerlesbaren Medium handelt es sich um ein materielles Element.
  • Bei dem Computerprogrammprodukt kann es sich um ein Produkt handeln, das Programmbefehle (oder Programmcode) aufweist, um eine oder mehrere der beschriebenen Funktionen umzusetzen. Diese Befehle oder dieser Code kann in einem computerlesbaren Speichermedium in einem Datenverarbeitungssystem gespeichert werden, nachdem sie bzw. er über ein Netzwerk von einem fernen Datenverarbeitungssystem heruntergeladen wurden bzw. wurde. Andererseits können diese Befehle oder dieser Code in einem computerlesbaren Speichermedium in einem Server-Datenverarbeitungssystem gespeichert sein und so eingerichtet sein, dass sie über ein Netzwerk zu einem fernen Datenverarbeitungssystem zur Verwendung in einem computerlesbaren Speichermedium in dem fernen System heruntergeladen werden.
  • Bei einer repräsentativen Ausführungsform sind die Komponenten des Spooling-Mechanismus in einem Spezialcomputer umgesetzt, vorzugsweise in Software, die durch einen oder mehrere Prozessoren ausgeführt wird. Die Software wird in einem oder mehreren Datenspeichern oder Arbeitsspeichern vorgehalten, die dem einen oder den mehreren Prozessoren zugehörig sind, und die Software kann als ein oder mehrere Computerprogramme umgesetzt sein. Gemeinsam und in einer Ausführungsform weisen diese Spezial-Hardware und -Software den oben beschriebenen Spooling-Mechanismus auf.
  • Obwohl das Obige eine bestimmte Reihenfolge von Operationen beschreibt, die durch bestimmte Ausführungsformen der Erfindung ausgeführt werden, sollte klar sein, dass diese Reihenfolge beispielhaft ist, da alternative Ausführungsformen die Operationen in einer anderen Reihenfolge ausführen können, bestimmte Operationen verknüpfen können, bestimmte Operationen überlagern können oder dergleichen. Bezugnahmen in der Beschreibung auf eine vorgegebene Ausführungsform geben an, dass die beschriebene Ausführungsform ein spezielles Merkmal, eine spezielle Struktur oder eine spezielle Charakteristik enthalten kann, jedoch muss nicht notwendigerweise jede Ausführungsform das spezielle Merkmal, die spezielle Struktur oder die spezielle Charakteristik aufweisen.
  • Abschließend bemerkt, wurden vorgegebene Komponenten des Systems zwar separat beschrieben, ein Fachmann wird jedoch erkennen, dass einige der Funktionen in vorgegebenen Befehlen, Programmsequenzen, Codeabschnitten und dergleichen verknüpft oder gemeinsam genutzt werden können.
  • Die hier offenbarten Techniken sind nicht auf eine Mehrkomponenten-Transaktionsverarbeitungsumgebung beschränkt, diese stellt jedoch eine typische Umsetzungsform dar. Wie angegeben kann die oben beschriebene Funktion bei jedem System, jeder Einheit, jedem Portal, jeder Stelle oder dergleichen verwendet werden, wobei durch einen Server eingestellte Sitzungs-Managementdaten (entweder durch einen ursprünglichen Benutzer in einer anderen Sitzung oder durch einen anderen Benutzer) über denselben Client-Browser wiederverwendet werden.

Claims (21)

  1. Verfahren zum Verarbeiten eines Systemaufrufs in einem Datenverarbeitungssystem, das einen Arbeitsspeicher aufweist, wobei der Systemaufruf eine zugehörige Quelle und ein Ziel aufweist, wobei das Verfahren aufweist: beim Abfangen eines Systemaufrufs Anwenden einer Funktion, die in einem Hardware-Element ausgeführt wird, um Daten zwischenzuspeichern (spooling), die einem oder mehreren echten Systemaufrufen zugehörig sind, bis ein vollständiger Datensatz, der dem Systemaufruf zugehörig ist, zwischengespeichert wurde; und in Reaktion auf ein Empfangen eines Ergebnisses eines Anwendens einer Transformation auf den vollständigen Datensatz Freigeben des Systemaufrufs, indem das Ergebnis aus dem Zwischenspeicher zu dem Ziel geliefert wird (unspooling).
  2. Verfahren nach Anspruch 1, wobei es sich bei der Quelle um den Systemaufruf handelt und es sich bei dem Ziel um einen Benutzerbereich des Arbeitsspeichers handelt.
  3. Verfahren nach Anspruch 1, wobei es sich bei der Quelle um einen Benutzerbereich des Arbeitsspeichers handelt und es sich bei dem Ziel um den Systemaufruf handelt.
  4. Verfahren nach einem der vorhergehenden Ansprüche, das ferner ein Anwenden einer Transformation auf den vollständigen Datensatz aufweist.
  5. Verfahren nach Anspruch 4, wobei es sich bei der Transformation um eines der folgenden handelt: Prüfen, Analysieren, Aufbereiten, Verhindern, Verarbeiten oder Aktualisieren.
  6. Verfahren nach Anspruch 4, wobei die zwei oder mehreren echten Systemaufrufe bewirken, dass Daten gelesen werden sollen und die Transformation auf den vollständigen Datensatz angewendet wird, bevor sie an eine Anwendung zurückgegeben werden, die den Lesevorgang anfordert.
  7. Verfahren nach Anspruch 4, wobei die zwei oder mehreren echten Systemaufrufe bewirken, dass Daten von einer Anwendung geschrieben werden und die Transformation angewendet wird, bevor ein Schreibvorgang eines ersten Systemaufrufs ausgelöst wird.
  8. Vorrichtung zum Verarbeiten eines Systemaufrufs, der eine zugehörige Quelle und ein Ziel aufweist, wobei die Vorrichtung aufweist: einen Computer-Arbeitsspeicher zum Speichern von Computerprogrammbefehlen, die, wenn sie durch einen Prozessor ausgeführt werden, bewirken: beim Abfangen des Systemaufrufs Anwenden einer Funktion, um Daten zwischenzuspeichern, die zwei oder mehreren echten Systemaufrufen zugehörig sind, in Reaktion auf ein Empfangen eines Ergebnisses eines Anwendens einer Transformation auf den vollständigen Datensatz Freigeben des Systemaufrufs, indem das Ergebnis aus dem Zwischenspeicher zu dem Ziel geliefert wird (unspooling).
  9. Vorrichtung nach Anspruch 8, wobei es sich bei der Quelle um den Systemaufruf handelt und es sich bei dem Ziel um einen Benutzerbereich des Computer-Arbeitsspeichers handelt.
  10. Vorrichtung nach Anspruch 8, wobei es sich bei der Quelle um einen Benutzerbereich des Computer-Arbeitsspeichers handelt und es sich bei dem Ziel um den Systemaufruf handelt.
  11. Vorrichtung nach einem der Ansprüche 8 bis 10, wobei die Befehle des Weiteren bewirken: Anwenden einer Transformation auf den vollständigen Datensatz.
  12. Vorrichtung nach Anspruch 11, wobei es sich bei der Transformation um eines der folgenden handelt: Prüfen, Analysieren, Aufbereiten, Verhindern, Verarbeiten oder Aktualisieren.
  13. Vorrichtung nach Anspruch 11, wobei die zwei oder mehreren echten Systemaufrufe bewirken, dass Daten gelesen werden sollen und die Transformation auf den vollständigen Datensatz angewendet wird, bevor sie an eine Anwendung zurückgegeben werden, die den Lesevorgang anfordert.
  14. Vorrichtung nach Anspruch 11, wobei die zwei oder mehreren echten Systemaufrufe bewirken, dass Daten von einer Anwendung geschrieben werden und die Transformation angewendet wird, bevor ein Schreibvorgang eines ersten Systemaufrufs ausgelöst wird.
  15. Computerprogramm, das in einem computerlesbaren Medium gespeichert ist, für eine Verwendung in einem Datenverarbeitungssystem zum Verarbeiten eines Systemaufrufs, der eine zugehörige Quelle und ein Ziel aufweist, wobei das Computerprogrammprodukt Computerprogrammbefehle aufweist, die beim Ausführen durch das Datenverarbeitungssystem die folgenden Schritte ausführen: beim Abfangen des Systemaufrufs Anwenden einer Funktion, um Daten zwischenzuspeichern (spool), die zwei oder mehreren echten Systemaufrufen zugehörig sind, bis ein vollständiger Datensatz zwischengespeichert (spooled) wurde, der dem Systemaufruf zugehörig ist, in Reaktion auf ein Empfangen eines Ergebnisses des Anwendens einer Transformation auf den vollständigen Datensatz Freigeben des Systemaufrufs, indem das Ergebnis aus dem Zwischenspeicher zu dem Ziel geliefert wird (unspooling).
  16. Computerprogramm nach Anspruch 15, wobei es sich bei der Quelle um den Systemaufruf handelt und es sich bei dem Ziel um einen Benutzerbereich eines Arbeitsspeichers handelt.
  17. Computerprogramm nach Anspruch 15, wobei es sich bei der Quelle um einen Benutzerbereich eines Arbeitsspeichers handelt und es sich bei dem Ziel um den Systemaufruf handelt.
  18. Computerprogramm nach einem der Ansprüche 15 bis 17, wobei die Befehle des Weiteren ausführen: Anwenden einer Transformation auf den vollständigen Datensatz.
  19. Computerprogramm nach Anspruch 18, wobei es sich bei der Transformation um eines der folgenden handelt: Prüfen, Analysieren, Aufbereiten, Verhindern, Verarbeiten oder Aktualisieren.
  20. Computerprogramm nach Anspruch 18, wobei die zwei oder mehreren echten Systemaufrufe bewirken, dass Daten gelesen werden und die Transformation auf den vollständigen Datensatz angewendet wird, bevor sie an eine Anwendung zurückgegeben werden, die den Lesevorgang anfordert.
  21. Computerprogramm nach Anspruch 18, wobei die zwei oder mehreren echten Systemaufrufe bewirken, dass Daten von einer Anwendung geschrieben werden und die Transformation angewendet wird, bevor ein Schreibvorgang eines ersten Systemaufrufs ausgelöst wird.
DE112014001949.6T 2013-04-10 2014-03-11 Spool-Betrieb bei Systemaufrufdaten zum Ermöglichen einer Datentransformation Withdrawn DE112014001949T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/860,000 2013-04-10
US13/860,000 US9069628B2 (en) 2013-04-10 2013-04-10 Spooling system call data to facilitate data transformation
PCT/IB2014/059621 WO2014167430A1 (en) 2013-04-10 2014-03-11 Spooling system call data to facilitate data transformation

Publications (1)

Publication Number Publication Date
DE112014001949T5 true DE112014001949T5 (de) 2015-12-31

Family

ID=51687719

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014001949.6T Withdrawn DE112014001949T5 (de) 2013-04-10 2014-03-11 Spool-Betrieb bei Systemaufrufdaten zum Ermöglichen einer Datentransformation

Country Status (4)

Country Link
US (1) US9069628B2 (de)
CN (1) CN105103159B (de)
DE (1) DE112014001949T5 (de)
WO (1) WO2014167430A1 (de)

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2067650C (en) * 1991-07-24 1996-10-22 Eric Jonathan Bauer Method and apparatus for operating a computer-based file system
US6006214A (en) 1996-12-04 1999-12-21 International Business Machines Corporation Database management system, method, and program for providing query rewrite transformations for nested set elimination in database views
US6732211B1 (en) * 2000-09-18 2004-05-04 Ensim Corporation Intercepting I/O multiplexing operations involving cross-domain file descriptor sets
JP4129819B2 (ja) * 2003-10-06 2008-08-06 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース検索システム及びその検索方法並びにプログラム
US7437362B1 (en) 2003-11-26 2008-10-14 Guardium, Inc. System and methods for nonintrusive database security
US7506371B1 (en) 2004-01-22 2009-03-17 Guardium, Inc. System and methods for adaptive behavior based access control
US7426512B1 (en) 2004-02-17 2008-09-16 Guardium, Inc. System and methods for tracking local database access
GB0505297D0 (en) 2005-03-15 2005-04-20 Level 5 Networks Ltd Redirecting instructions
US7748027B2 (en) * 2005-05-11 2010-06-29 Bea Systems, Inc. System and method for dynamic data redaction
US8635660B2 (en) 2005-12-06 2014-01-21 Oracle International Corporation Dynamic constraints for query operations
US8590034B2 (en) 2006-06-21 2013-11-19 Basit Hussain Method, system and apparatus for providing stateful information redaction
CN100504792C (zh) 2006-10-06 2009-06-24 国际商业机器公司 在用户空间中进行系统调用截取的方法和系统
WO2009104720A1 (ja) * 2008-02-22 2009-08-27 日本電気株式会社 リソース利用制御システム、リソース利用制御方法及びリソース利用制御用プログラム
US20100030737A1 (en) * 2008-07-29 2010-02-04 Volker Gunnar Scheuber-Heinz Identity enabled data level access control
US20100128866A1 (en) 2008-11-26 2010-05-27 Microsoft Corporation Modification of system call behavior
CN102904889B (zh) * 2012-10-12 2016-09-07 北京可信华泰信息技术有限公司 支持跨平台统一管理的强制访问控制系统及方法
CN103020257B (zh) * 2012-12-21 2016-12-07 曙光信息产业(北京)有限公司 数据操作的实现方法和装置
CN103605930B (zh) * 2013-11-27 2016-04-13 湖北民族学院 一种基于hook和过滤驱动的双重文件防泄密方法及系统

Also Published As

Publication number Publication date
US9069628B2 (en) 2015-06-30
US20140310727A1 (en) 2014-10-16
WO2014167430A1 (en) 2014-10-16
CN105103159A (zh) 2015-11-25
CN105103159B (zh) 2018-06-26

Similar Documents

Publication Publication Date Title
DE112011101831B4 (de) Schutz vor websiteübergreifenden Scripting-Attacken
DE112014001229B4 (de) Verfahren, Datenverarbeitungssystem und Computerprogrammprodukt zum Verarbeiten einer Datenbank-Client-Anforderung
EP1559038B1 (de) Verfahren zum vorabübertragen strukturierter datenmengen zwischen einer clienteinrichtung und einer servereinrichtung
DE69724877T2 (de) Verfahren und Vorrichtung zum Betrieb einer Aggregation von Serverrechnern mittels eines Doppelzweck-Proxy-Servers
DE69531112T2 (de) Mechanismus zum verknüpfen von dateien auf einem emulierten system mit dem zentralsystem für den zugriff durch emulierte systembenutzer
DE202017106594U1 (de) Bereitstellen von Zugriff auf eine in einem Datenspeichersystem gespeicherte Datei
DE112019006367T5 (de) Verfahren und System zur Sicherung von Cloud-Speichern und -Datenbanken vor Insider-Bedrohungen und zur Optimierung der Leistung
DE112014002789T5 (de) Netzwerksicherheitssystem
EP3314806B1 (de) Verschlüsselungsfilter
DE112016004896T5 (de) Bereitstellung von Remote-Befehlsausführung mit fein abgestimmtem Zugriff für Instanzen von virtuellen Maschinen in einer verteilten Datenverarbeitungsumgebung
DE102013200159A1 (de) Management von Sicherheitsrichtlinien unter Verwendung einer Störungsanalyse
DE69723432T2 (de) Informationsauffindungssystem mit einer cachedatenbank
DE112012002889T5 (de) Authentifizieren eines Rich Clients aus einer bestehenden Browser-Sitzung heraus
DE202020005715U1 (de) Dynamische Maskierung geteilter Datenobjekte
DE102012216028A1 (de) Webseiten-skriptverwaltung
DE112006003004T5 (de) Kommunikation zwischen Partitionen in einer Virtualisierungsumgebung
DE112012004247T5 (de) Passives Überwachen virtueller Systeme unter Verwendung einer erweiterbaren Indexierung
DE112011103273T5 (de) Weitergabe von Identitäten über Anwendungsebenen unter Verwendung von kontextabhängiger Zuordnung und gesetzten Werten
DE102012218699A1 (de) Passives überwachen virtueller systeme mittels agentenlosem offline-indexieren
DE112010004530T5 (de) Transaktionsaktualisierung bei Dynamischen Verteilten Arbeitslasten
DE202021004266U1 (de) Anfügbare-und-abtrennbare Datenbank-Sessions
DE10024347B4 (de) Sicherheitsservice-Schicht
DE10146361A1 (de) Vorrichtung und Verfahren zur Etablierung einer Sicherheitspolitik in einem verteilten System
DE112021004695T5 (de) Umgang mit zurückstellbaren netzwerkanforderungen
DE112021000455T5 (de) Deep packet analyse

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R016 Response to examination communication
R120 Application withdrawn or ip right abandoned