-
VERWEIS
-
Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
-
HINTERGRUND
-
Diese Beschreibung betrifft die sichere Datenspeicherung und insbesondere die sichere Datenspeicherung bei virtuellen Maschinen.
-
Cloud Computing ist eine Art der Datenverarbeitung auf Netzwerkbasis, bei der typischerweise große Sammlungen von Servern, die in Rechenzentren oder „Serverfarmen” untergebracht sind, entfernten Endbenutzern nach Bedarf Datenverarbeitungsressourcen und Datenspeicherplatz bereitstellen. Einige Cloud-Computing-Dienste ermöglichen es Endbenutzern, vom Benutzer bereitgestellte Server-Softwareanwendungen (z. B. E-Commerce-Serveranwendungen, Web-Server oder Dateiserver) in der Cloud auszuführen. Einige andere Cloud-Computing-Dienste bieten Zugriff auf Softwareanwendungen wie Textverarbeitungsprogramme und andere häufig verwendete Anwendungen für Endbenutzer, die die Anwendungen über Webbrowser oder andere clientseitige Software nutzen. Die elektronischen Dateien der Benutzer werden normalerweise in der Serverfarm und nicht auf den persönlichen Computergeräten der Benutzer gespeichert.
-
KURZDARSTELLUNG
-
Im Allgemeinen kann ein Aspekt des im vorliegenden Dokument beschriebenen Gegenstands in Verfahren verkörpert sein, die durch eine oder mehrere Datenverarbeitungsvorrichtungen realisiert sind, die ein Verfahren zur Datenverschlüsselung beinhalten. Das Verfahren umfasst ein Empfangen einer ersten Anforderung von einer ersten virtuellen Maschine, um Daten auf einem protokollstrukturierten Datenträger zu speichern. Das Verfahren umfasst ferner auf der Grundlage der ersten Anforderung ein Erhalten der Daten und einer Zugriffssteuerungsliste eines oder mehrerer Benutzer, die zum Zugriff auf die Daten berechtigt sind. Das Verfahren umfasst ferner ein Erhalten eines Datenschlüssels, der eine Datenschlüsselkennung aufweist. Das Verfahren umfasst ferner ein Verschlüsseln, unter Verwendung der einen oder mehreren Datenverarbeitungsvorrichtungen, des Datenschlüssels und der Zugriffssteuerungsliste, wobei ein Umhüllungsschlüssel verwendet wird, um ein umhülltes BLOB zu erzeugen. Das Verfahren umfasst ferner ein Verschlüsseln der Daten unter Verwendung der einen oder mehreren Datenverarbeitungsvorrichtungen, wobei der Datenschlüssel verwendet wird, um verschlüsselte Daten zu erzeugen. Das Verfahren umfasst ferner ein Speichern des umhüllten BLOB und der verschlüsselten Daten auf dem protokollstrukturierten Datenträger. Das Verfahren umfasst ferner ein Bereitstellen der Datenschlüsselkennung für einen oder mehrere Benutzer auf der Zugriffssteuerungsliste. Das Verfahren umfasst ferner ein Empfangen einer zweiten Anforderung von einer zweiten virtuellen Maschine, um eine Momentaufnahme der Daten zu erhalten. Das Verfahren umfasst ferner auf der Grundlage der zweiten Anforderung ein Erhalten eines nicht umhüllten BLOB, das den Datenschlüssel und die Zugriffssteuerungsliste enthält. Das Verfahren umfasst ferner ein Erhalten des Datenschlüssels und der Zugriffssteuerungsliste aus dem nicht umhüllten BLOB. Das Verfahren umfasst ferner ein Authentifizieren eines der zweiten Anforderung zugewiesenen Benutzers und ein Erteilen der Berechtigung anhand der Zugriffssteuerungsliste. Das Verfahren umfasst ferner nach einer Feststellung, dass der Benutzer authentifiziert und berechtigt ist, ein Entschlüsseln unter Verwendung der einen oder mehreren Datenverarbeitungsvorrichtungen, wobei die Daten den Datenschlüssel nutzen. Das Verfahren umfasst ferner ein Bereitstellen einer Momentaufnahme der Daten für die zweite virtuelle Maschine.
-
Realisierungsformen können eines oder mehrere der folgenden Merkmale beinhalten. Das Verfahren umfasst ferner ein Feststellen, dass eine Schwellenwertbedingung im Zusammenhang mit der Speicherung der Daten auf dem protokollstrukturierten Datenträger aufgetreten ist. Das Verfahren umfasst ferner ein Erhalten eines neuen Datenschlüssels, der durch eine neue Datenschlüsselkennung gekennzeichnet ist, Entschlüsseln der Daten unter Verwendung des Datenschlüssels, Verschlüsseln des neuen Datenschlüssels und der Zugriffssteuerungsliste unter Verwendung des Umhüllungsschlüssels, um ein neues umhülltes BLOB zu erzeugen, Verschlüsseln der Daten unter Verwendung des neuen Datenschlüssels, um verschlüsselte Daten zu erzeugen, Speichern des neuen umhüllten BLOB und der verschlüsselten Daten auf dem protokollstrukturierten Datenträger, Bereitstellen der neuen Datenschlüsselkennung für einen oder mehrere Benutzer auf der Zugriffssteuerungsliste und Verhindern einer anschließenden Verwendung des Datenschlüssels. Die Schwellenwertbedingung beinhaltet eine Datenmenge, die durch den Datenschlüssel geschützt ist. Die durch den Datenschlüssel geschützte Datenmenge ist eine kumulative Menge. Die durch den Datenschlüssel geschützte Datenmenge ist eine aktuelle Menge. Die Schwellenwertbedingung beinhaltet eine Zeitdauer, während der der Datenschlüssel in Gebrauch ist. Das Verfahren umfasst ferner einen Prüfzugriff auf die Daten und ein Feststellen, dass durch einen Benutzer auf die Daten zugegriffen wurde, der nicht auf der Zugriffssteuerungsliste steht, und dass der Datenschlüssel verletzt wurde. Das Verfahren umfasst ferner ein Erhalten eines neuen Datenschlüssels, der durch eine neue Datenschlüsselkennung gekennzeichnet ist, Entschlüsseln der Daten unter Verwendung des Datenschlüssels, Verschlüsseln des neuen Datenschlüssels und der Zugriffssteuerungsliste unter Verwendung des Umhüllungsschlüssels, um ein neues umhülltes BLOB zu erzeugen, Verschlüsseln der Daten unter Verwendung des neuen Datenschlüssels, um verschlüsselte Daten zu erzeugen, Speichern des neuen umhüllten BLOB und der verschlüsselten Daten auf dem protokollstrukturierten Datenträger, Bereitstellen der neuen Datenschlüsselkennung für einen oder mehrere Benutzer auf der Zugriffssteuerungsliste und Verhindern einer anschließenden Verwendung des Datenschlüssels. Das Speichern der verschlüsselten Daten beinhaltet ein Komprimieren der verschlüsselten Daten.
-
Bei einem weiteren Aspekt kann das System eine oder mehrere Datenverarbeitungsvorrichtungen umfassen, die zur Durchführung von Operationen programmiert sind. Die Operationen umfassen ein Empfangen einer ersten Anforderung von einer ersten virtuellen Maschine, um Daten auf einem protokollstrukturierten Datenträger zu speichern. Die Operationen umfassen ferner auf der Grundlage der ersten Anforderung ein Erhalten der Daten und einer Zugriffssteuerungsliste eines oder mehrerer Benutzer, die zum Zugriff auf die Daten berechtigt sind. Die Operationen umfassen ferner ein Erhalten eines Datenschlüssels, der eine Datenschlüsselkennung aufweist. Die Operationen umfassen ferner ein Verschlüsseln des Datenschlüssels und der Zugriffssteuerungsliste unter Verwendung eines Umhüllungsschlüssels, um ein umhülltes BLOB zu erzeugen. Die Operationen umfassen ferner ein Verschlüsseln der Daten unter Verwendung des Datenschlüssels, um verschlüsselte Daten zu erzeugen. Die Operationen umfassen ferner ein Speichern des umhüllten BLOB und der verschlüsselten Daten auf dem protokollstrukturierten Datenträger. Die Operationen umfassen ferner ein Bereitstellen der Datenschlüsselkennung für einen oder mehrere Benutzer auf der Zugriffssteuerungsliste. Die Operationen umfassen ferner ein Empfangen einer zweiten Anforderung von einer zweiten virtuellen Maschine, um eine Momentaufnahme der Daten zu erhalten. Die Operationen umfassen ferner auf der Grundlage der zweiten Anforderung ein Erhalten eines nicht umhüllten BLOB, das den Datenschlüssel und die Zugriffssteuerungsliste enthält. Die Operationen umfassen ferner ein Erhalten des Datenschlüssels und der Zugriffssteuerungsliste aus dem nicht umhüllten BLOB. Die Operationen umfassen ferner ein Authentifizieren eines der zweiten Anforderung zugewiesenen Benutzers und ein Erteilen der Berechtigung anhand der Zugriffssteuerungsliste. Die Operationen umfassen ferner nach einer Feststellung, dass der Benutzer authentifiziert und berechtigt ist, ein Entschlüsseln unter Verwendung des Datenschlüssels. Die Operationen umfassen ferner ein Bereitstellen einer Momentaufnahme der Daten für die zweite virtuelle Maschine.
-
Realisierungsformen können eines oder mehrere der folgenden Merkmale enthalten. Die Operationen umfassen ferner ein Feststellen, dass eine Schwellenwertbedingung im Zusammenhang mit der Speicherung der Daten auf dem protokollstrukturierten Datenträger aufgetreten ist. Die Operationen umfassen ferner: Erhalten eines neuen Datenschlüssels, der durch eine neue Datenschlüsselkennung gekennzeichnet ist, Entschlüsseln der Daten unter Verwendung des Datenschlüssels, Verschlüsseln des neuen Datenschlüssels und der Zugriffssteuerungsliste unter Verwendung des Umhüllungsschlüssels, um ein neues umhülltes BLOB zu erzeugen, Verschlüsseln der Daten unter Verwendung des neuen Datenschlüssels, um verschlüsselte Daten zu erzeugen, Speichern des neuen umhüllten BLOB und der verschlüsselten Daten auf dem protokollstrukturierten Datenträger, Bereitstellen der neuen Datenschlüsselkennung für einen oder mehrere Benutzer auf der Zugriffssteuerungsliste und Verhindern einer anschließenden Verwendung des Datenschlüssels. Die Schwellenwertbedingung beinhaltet eine Datenmenge, die durch den Datenschlüssel geschützt ist. Die durch den Datenschlüssel geschützte Datenmenge ist eine kumulative Menge. Die durch den Datenschlüssel geschützte Datenmenge ist eine aktuelle Menge. Die Schwellenwertbedingung beinhaltet eine Zeitdauer, während der der Datenschlüssel in Gebrauch ist. Die Operationen umfassen ferner einen Prüfzugriff auf die Daten und ein Feststellen, dass durch einen Benutzer auf die Daten zugegriffen wurde, der nicht auf der Zugriffssteuerungsliste steht, und dass der Datenschlüssel verletzt wurde. Die Operationen umfassen ferner ein Erhalten eines neuen Datenschlüssels, der durch eine neue Datenschlüsselkennung gekennzeichnet ist, Entschlüsseln der Daten unter Verwendung des Datenschlüssels, Verschlüsseln des neuen Datenschlüssels und der Zugriffssteuerungsliste unter Verwendung des Umhüllungsschlüssels, um ein neues umhülltes BLOB zu erzeugen, Verschlüsseln der Daten unter Verwendung des neuen Datenschlüssels, um verschlüsselte Daten zu erzeugen, Speichern des neuen umhüllten BLOB und der verschlüsselten Daten auf dem protokollstrukturierten Datenträger, Bereitstellen der neuen Datenschlüsselkennung für einen oder mehrere Benutzer auf der Zugriffssteuerungsliste und Verhindern einer anschließenden Verwendung des Datenschlüssels. Das Speichern der verschlüsselten Daten beinhaltet ein Komprimieren der verschlüsselten Daten.
-
Bei einem weiteren Aspekt weist ein Speichermedium darauf gespeicherte Anweisungen auf, die bei Ausführung bewirken, dass eine Datenverarbeitungsvorrichtung Operationen durchführt. Die Operationen umfassen ein Empfangen einer ersten Anforderung von einer ersten virtuellen Maschine, um Daten auf einem protokollstrukturierten Datenträger zu speichern, und auf der Grundlage der ersten Anforderung ein Erhalten der Daten und einer Zugriffssteuerungsliste eines oder mehrerer Benutzer, die zum Zugriff auf die Daten berechtigt sind. Die Operationen umfassen ferner ein Erhalten eines Datenschlüssels, der eine Datenschlüsselkennung aufweist. Die Operationen umfassen ferner ein Verschlüsseln des Datenschlüssels und der Zugriffssteuerungsliste unter Verwendung eines Umhüllungsschlüssels, um ein umhülltes BLOB zu erzeugen. Die Operationen umfassen ferner ein Verschlüsseln der Daten unter Verwendung des Datenschlüssels, um verschlüsselte Daten zu erzeugen. Die Operationen umfassen ferner ein Speichern des umhüllten BLOB und der verschlüsselten Daten auf dem protokollstrukturierten Datenträger. Die Operationen umfassen ferner ein Bereitstellen der Datenschlüsselkennung für einen oder mehrere Benutzer auf der Zugriffssteuerungsliste. Die Operationen umfassen ferner ein Empfangen einer zweiten Anforderung von einer zweiten virtuellen Maschine, um eine Momentaufnahme der Daten zu erhalten, und auf der Grundlage der zweiten Anforderung ein Erhalten eines nicht umhüllten BLOB, das den Datenschlüssel und die Zugriffssteuerungsliste enthält. Die Operationen umfassen ferner ein Erhalten des Datenschlüssels und der Zugriffssteuerungsliste aus dem nicht umhüllten BLOB. Die Operationen umfassen ferner ein Authentifizieren eines der zweiten Anforderung zugewiesenen Benutzers und ein Berechtigen des Benutzers anhand der Zugriffssteuerungsliste und nach einer Feststellung, dass der Benutzer authentifiziert und berechtigt ist, ein Entschlüsseln der Daten unter Verwendung des Datenschlüssels. Die Operationen umfassen ferner ein Bereitstellen einer Momentaufnahme der Daten für die zweite virtuelle Maschine.
-
Realisierungsformen können eines oder mehrere der folgenden Merkmale beinhalten. Die Operationen umfassen ferner ein Feststellen, dass eine Schwellenwertbedingung im Zusammenhang mit der Speicherung der Daten auf dem protokollstrukturierten Datenträger aufgetreten ist. Die Operationen umfassen ferner ein Erhalten eines neuen Datenschlüssels, der durch eine neue Datenschlüsselkennung gekennzeichnet ist, Entschlüsseln der Daten unter Verwendung des Datenschlüssels, Verschlüsseln des neuen Datenschlüssels und der Zugriffssteuerungsliste unter Verwendung des Umhüllungsschlüssels, um ein neues umhülltes BLOB zu erzeugen, Verschlüsseln der Daten unter Verwendung des neuen Datenschlüssels, um verschlüsselte Daten zu erzeugen, Speichern des neuen umhüllten BLOB und der verschlüsselten Daten auf dem protokollstrukturierten Datenträger, Bereitstellen der neuen Datenschlüsselkennung für einen oder mehrere Benutzer auf der Zugriffssteuerungsliste und Verhindern einer anschließenden Verwendung des Datenschlüssels. Die Schwellenwertbedingung beinhaltet eine Datenmenge, die durch den Datenschlüssel geschützt ist. Die durch den Datenschlüssel geschützte Datenmenge ist eine kumulative Menge. Die durch den Datenschlüssel geschützte Datenmenge ist eine aktuelle Menge. Die Schwellenwertbedingung beinhaltet eine Zeitdauer, während der der Datenschlüssel in Gebrauch ist. Die Operationen umfassen ferner einen Prüfzugriff auf die Daten und ein Feststellen, dass durch einen Benutzer auf die Daten zugegriffen wurde, der nicht auf der Zugriffssteuerungsliste steht, und dass der Datenschlüssel verletzt wurde. Die Operationen umfassen ferner ein Erhalten eines neuen Datenschlüssels, der durch eine neue Datenschlüsselkennung gekennzeichnet ist, Entschlüsseln der Daten unter Verwendung des Datenschlüssels, Verschlüsseln des neuen Datenschlüssels und der Zugriffssteuerungsliste unter Verwendung des Umhüllungsschlüssels, um ein neues umhülltes BLOB zu erzeugen, Verschlüsseln der Daten unter Verwendung des neuen Datenschlüssels, um verschlüsselte Daten zu erzeugen, Speichern des neuen umhüllten BLOB und der verschlüsselten Daten auf dem protokollstrukturierten Datenträger, Bereitstellen der neuen Datenschlüsselkennung für einen oder mehrere Benutzer auf der Zugriffssteuerungsliste und Verhindern einer anschließenden Verwendung des Datenschlüssels. Das Speichern der verschlüsselten Daten beinhaltet ein Komprimieren der verschlüsselten Daten.
-
Bestimmte Ausführungsformen des im vorliegenden Dokument beschriebenen Gegenstands können so realisiert sein, dass sie einen oder mehrere der folgenden Vorteile verwirklichen. Bei einigen Realisierungsformen können Basisdatenträgerschlüssel verwendet werden, um permanente Daten auf einer Basisdatenträgergrundlage zu speichern. Bei einigen Realisierungsformen kann jede Gruppe der den permanenten Daten zugewiesenen Momentaufnahmen einen der Gruppe zugewiesenen Momentaufnahmegruppenschlüssel aufweisen. Diese Arten von Schlüsseln einschließlich von Basisdatenträgerschlüsseln und Momentaufnahmegruppenschlüsseln (z. B. symmetrische Schlüssel) können als permanente Plattenschlüssel bzw. hierin als permanente Datenschlüssel bezeichnet werden. Bei einigen Realisierungsformen kann sich ein Zugriff auf beliebige Datenschlüssel auf zwei Authentifizierungen gründen: auf die erste Authentifizierung für den Cloud-Clusterzugriff und die zweite Authentifizierung für den Zugriff auf Benutzerebene, z. B. bei einem Benutzer oder Vorgesetzten, die in einer Zugriffssteuerungsliste (Acess Control List, ACL) gefunden wurden, die den Daten und dem Datenschlüssel zugewiesen ist. Bei einigen Realisierungsformen können diese Authentifizierungsmerkmale standardmäßig bei allen Platten wirksam sein, und die Merkmale können nicht deaktiviert werden, z. B. durch einen Benutzer, der unter Umständen versucht, unberechtigt oder ungeprüft auf Daten zuzugreifen.
-
Bei einigen Realisierungsformen können flüchtige Daten (z. B. Daten, bei denen nicht gewährleistet ist, dass sie zwischen Neustarts erhalten bleiben) unter Verwendung eines einzelnen, nach dem Zufallsprinzip erzeugten Schlüssel geschützt werden, der verwendet wird, um Daten auf allen Blockeinheiten eines beliebigen gegebenen VM-Hosts zu schützen. Datenschlüssel können beispielsweise bei flüchtigen Daten benötigt werden, die für den VM-Zustand verwendet werden, der bei Speicherungs- und Wiederherstellungsoperationen gespeichert wird. Die Schlüssel können nur im Arbeitsspeicher vorliegen und unter Umständen nicht auf die Platte geschrieben werden (z. B. bei einem Wechsel). Bei einigen Realisierungsformen können Prozesse auf der Ebene des Kernels den Speicher löschen, der Schlüsselmaterial enthält. Sobald ein Schlüssel nicht mehr in Gebrauch ist oder nicht mehr benötigt wird (z. B. beim Herunterfahren des VM-Prozesses) können Prozesse auf der Ebene des Kernels beispielsweise alle Schlüssel Informationen löschen, die sich zum Zeitpunkt der Beendigung des Prozesses im Prozessspeicher befinden. Bei einigen Realisierungsformen können diese Authentifizierungsmerkmale standardmäßig bei allen Platten wirksam sein und nicht deaktiviert werden.
-
Bei einigen Realisierungsformen kann die Verschlüsselung von Speicherinhalten erfolgen, die während einer Operation zur Speicherung des VM-Zustands geschrieben wurden. Schlüsselmaterial, das zum Schutz verschlüsselter Daten verwendet wird, die auf die Platte geschrieben wurden, kann beispielsweise durch ein Schlüsselverwaltungssystem (z. B. durch eine Schlüsselspeicherungskomponente) umhüllt werden. Das Schlüsselverwaltungssystem kann ferner Operationen zur Umhüllung von Schlüsseln und zur Aufhebung der Umhüllung von Schlüsseln verwalten, wenn Operationen durchgeführt werden, die ein Speichern von VM-Zustandsinformationen beinhalten.
-
Bei einigen Realisierungsformen können für jede Gruppe von Images, die auf dem protokollstrukturierten Datenträger verwaltet werden, eindeutige Gruppen von Datenschlüsseln erzeugt werden. Jeder Schlüssel kann beispielsweise mit einer Zugriffssteuerungsliste (ACL) für jeden Benutzer oder Vorgesetzten umhüllt werden, der Zugriff auf die Daten hat, und die Datenschlüssel können nur durch diese Benutzer freigegeben werden. Bei einigen Realisierungsformen kann jede Momentaufnahme von durch Verschlüsselung geschützten Daten einen Block (z. B. den ersten Block) beinhalten, der Metadaten enthält, die eine Umhüllungskomponente (Wrapper) für umhüllte Datenschlüssel und die zugewiesenen ACLs beinhalten. Einige Realisierungsformen können ferner einen „Masterschlüssel” nutzen, der Berechtigungsdienste außerhalb der Cloud-Cluster verarbeitet, die zum Zugriff auf verschlüsselte Daten verwendet werden.
-
Bei einigen Realisierungsformen kann das Schlüsselverwaltungssystem die gemeinsame Nutzung von Schlüsseln verarbeiten. Ein einzelner Datenschlüssel kann beispielsweise gleichzeitig von den VMs verwendet werden, die mehreren Benutzern zugewiesen sind, die laut ACL Zugriff auf die geschützten Daten haben. Bei einigen Realisierungsformen kann das Schlüsselverwaltungssystem andere Operationen wie beispielsweise Schlüsselrotation, -stilllegung und -annullierung durchführen, Prozesse, die im Folgenden unter Bezugnahme auf die 5A bis 5C beschrieben werden.
-
Die Details einer oder mehrerer Ausführungen des Gegenstands, der in dieser Spezifikation beschrieben wird, sind in den beigelegten Zeichnungen und der Beschreibung unten dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen deutlich.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 zeigt ein Beispiel eines verteilten Systems, das mehrere virtuelle Maschineninstanzen umfasst.
-
2A veranschaulicht einen exemplarischen Ablauf von Operationen zur Datenverschlüsselung von Daten, die durch virtuelle Maschinen erzeugt wurden und auf die durch virtuelle Maschinen zugegriffen wird.
-
DIE 2B, 2C und 3 sind Darstellungen, die exemplarische Abläufe von Operationen veranschaulichen, die bei Schlüsselverwaltungstechniken während der Verschlüsselung/Entschlüsselung verwendet werden.
-
4 ist ein Ablaufplan, der ein Beispiel einer Technik zur Aufhebung der Paketkapselung zeigt.
-
5A ist ein Ablaufplan, der einen exemplarischen Schlüsselrotationsprozess für Datenschlüssel zeigt, die auf virtuellen Maschinen verwendet werden.
-
5B ist ein Ablaufplan, der einen exemplarischen Schlüsselstilllegungsprozess für Datenschlüssel zeigt, die auf virtuellen Maschinen verwendet werden.
-
5C ist ein Ablaufplan, der einen exemplarischen Schlüsselannullierungsprozess für Datenschlüssel zeigt, die auf virtuellen Maschinen verwendet werden.
-
6 ist ein Beispiel einer Vernetzungsarchitektur für ein verteiltes System, das zur Ausführung virtueller Maschinen konfiguriert ist.
-
Gleiche Bezugsnummern und Benennungen in den verschiedenen Zeichnungen zeigen gleiche Elemente an.
-
DETAILLIERTE BESCHREIBUNG
-
Das vorliegende Dokument beschreibt Systeme, Verfahren und Vorrichtungen zum Verschlüsseln von Daten, die in einer Virtuelle-Maschine-Umgebung (VM-Umgebung) verwendet werden, z. B. bei der „Cloud-basierten” Datenverarbeitung oder „Cloud-Cluster”-Datenverarbeitung, bei der mehrere VMs vorliegen. Hierin beschriebene Verschlüsselungstechniken können beispielsweise verwendet werden, um permanente Daten (z. B. in der Cloud gespeicherte Daten), flüchtige Daten (z. B. Momentaufnahmen der in VMs verwendeten permanenten Daten) und im Speicher vorliegende Daten zu verschlüsseln. Permanenter Speicher kann beispielsweise Speicher beinhalten, der über die Lebensdauer einer VM hinaus bestehen bleibt, während flüchtiger Speicher Speicher beinhalten kann, der bei Beendigung der VM verloren geht. Bei einigen Realisierungsformen können die hierin beschriebenen Verschlüsselungstechniken bei Dateisystemen mit protokollstrukturierten Datenträgern (Log-structured Volume, LSV) verwendet werden, bei denen es sich um Dateisysteme handelt, die für einen hohen Schreibdurchsatz ausgelegt sind und bei denen Aktualisierungen von Daten und Metadaten nacheinander in einen fortlaufenden Datenstrom (z. B. in ein „Protokoll”) geschrieben werden.
-
Bei einigen Realisierungsformen können anstelle von oder zusätzlich zu LSV-Systemen andere Speichersysteme verwendet werden. Es können beispielsweise Speichersysteme verwendet werden, die ein Backend-Speichersystem als Blackbox behandeln. Andere Speichersysteme sind möglich.
-
Bei weiteren Realisierungsformen können Anforderungen von anderen Quellen als virtuellen Maschinen empfangen werden. Realisierungsformen können beispielsweise eine sichere Trennung zwischen Benutzeranwendungen und Schlüssel- bzw. Datenverwaltungssystemen bereitstellen, z. B. ein System, bei dem einem Client Speicher über ein Netzwerk zugeordnet ist, z. B. unter Verwendung von iSCSI-Protokollen (iSCSI = Internet Small Computer Systems Interface) oder anderer Mittel wie beispielsweise herkömmlicher Storage-Area-Networks (SANs). Bei diesem Beispiel können Client- und Serverkomponenten durch eine Netzwerkbarriere getrennt sein, es müssen jedoch keine virtuellen Maschinen verwendet werden.
-
1 zeigt ein Beispiel eines verteilten Systems 101, das mehrere Virtuelle-Maschine-Instanzen beinhaltet. Ein verteiltes System 101 kann virtuelle Maschinen (VMs) 110, 112, 114 auf Hostmaschinen 102, 104 ausführen. Elemente des verteilten Systems 101 können sich am selben oder an unterschiedlichen physischen Standorten befinden. Eine erste Hostmaschine 102 kann sich beispielsweise in einem ersten Rechenzentrum befinden, während sich eine zweite Hostmaschine 104 in einem zweiten Rechenzentrum befinden kann. Bei einigen Realisierungsformen können sich diese Rechenzentren in unterschiedlichen Bundesstaaten, Ländern oder in beidem befinden.
-
Bei einigen Realisierungsformen kann das verteilte System 101 den virtuellen Maschinen 110, 112, 114 ein virtuelles Netzwerk zum Datenaustausch auf der Grundlage des Internetprotokolls (IP) bereitstellen. Den VMs 110, 112, 114 sind Netzwerkadressen zugewiesen (z. B. eine IPv4-Adresse oder IPv6-Adresse), die in dem virtuellen Netzwerk weiterleitbar sind. Bei einigen Realisierungsformen beinhaltet das virtuelle Netzwerk ein privates Teilnetz (z. B. 192.168.0.0/16, 10.0.0.0/8).
-
Die Hostmaschinen 102, 104, die ein verteiltes System 101 beinhalten, können eine oder mehrere Datenverarbeitungsvorrichtungen wie beispielsweise Servereinschübe oder andere Datenverarbeitungseinheiten enthalten. Die Hostmaschinen 102, 104 können unterschiedliche Fähigkeiten und Computerarchitekturen aufweisen und sich am selben oder an unterschiedlichen geographischen Standorten befinden. Die Hostmaschinen 102, 104 können über ein Netzwerk wie beispielsweise ein privates Netzwerk 116 (z. B. Glasfaser- oder Kupferleitungen (Standleitungen oder gemietete Leitungen)) untereinander Daten austauschen. Die Hostmaschinen 102, 104 können auch mit Einheiten in externen Netzwerken wie beispielsweise dem Internet 122 über ein oder mehrere Gateways 120 Daten austauschen, bei denen es sich um Datenverarbeitungsvorrichtungen handelt, die für ein Weiterleiten von Datenaustauschverkehr zwischen dem privaten Netzwerk 116 und dem Internet 122 verantwortlich sind. Andere Arten von externen Netzwerken sind möglich.
-
Das private Netzwerk 116 kann beispielsweise ein oder mehrere drahtgebundene Netzwerke (z. B. Ethernet-Netzwerk oder drahtlose Netzwerke (z. B. Wi-Fi-Netzwerke) beinhalten. Bei einigen Realisierungsformen beinhaltet das private Netzwerk 116 physische Datenaustauschressourcen wie beispielsweise Glasfaser oder Kupferleitung, die zwei Rechenzentren miteinander verbinden. Bei einigen Realisierungsformen ist das private Netzwerk 116 über ein externes Netzwerk wie beispielsweise das Internet 122 realisiert. Bei einigen Realisierungsformen weisen Rechenzentren entsprechende lokale Netzwerke (LANs) auf, die zusammengefasst sind, um ein privates Netzwerk 116 zu bilden. IP-Verkehr zwischen Rechenzentren kann beispielsweise durch Verwendung von Multiprotocol Label Switching (MPLS) weitergeleitet werden. Andere Arten des Weiterleitens sind möglich.
-
Jede Hostmaschine 102, 104 führt ein Hostbetriebssystem aus (z. B. Hostbetriebssysteme 106 und 108). Jedes Hostbetriebssystem 106, 108 verwaltet Hostmaschinenressourcen. Bei diesem Beispiel führen die Hostbetriebssysteme 106, 108 Software aus, die die Hardware der unterlagerten Hostmaschine virtualisiert und die gleichzeitige Ausführung einer oder mehrerer VMs verwaltet. Das Hostbetriebssystem 106 verwaltet beispielsweise zwei VMs (VMs 110 und VM 112), während ein anderes Hostbetriebssystem 108 eine einzige VM 114 verwaltet. Eine Hostmaschine kann im Allgemeinen größere Anzahlen virtueller Maschinen verwalten, aber die Anzahl kann aufgrund physischer Ressourcen der Hostmaschine begrenzt sein.
-
Die VMs 110, 112, 114 verwenden eine simulierte Version der Hardware einer unterlagerten Hostmaschine, die als „virtuelle Hardware” bezeichnet werden kann (z. B. die virtuelle Hardware 110a, 112a und 114a). Durch die virtuelle Hardware ausgeführte Software kann als „Gastsoftware” bezeichnet werden. In einigen Implementierungen kann Gastsoftware nicht bestimmen, ob sie durch virtuelle Hardware oder durch eine physikalische Hostmaschine ausgeführt wird. Wenn Gastsoftware, die in einer VM ausgeführt wird, oder die VM selbst fehlerhaft funktioniert oder abbricht, werden andere VMs, die auf der Hostmaschine ausgeführt werden, nicht beeinflusst. Der Mikroprozessor oder die Mikroprozessoren einer Host-Maschine können Prozessor-Level-Mechanismen umfassen, um es virtueller Hardware zu ermöglichen, Softwareanwendungen effizient auszuführen, indem es ermöglicht, dass Gast-Software-Anweisungen direkt auf dem Mikroprozessor der Host-Maschine ausgeführt werden, ohne dass ein Neuschreiben des Kodes, eine Rekompilation oder Befehlsemulation erforderlich ist.
-
Jeder VM (z. B. VMs 110, 112 und 114) ist eine Gruppe von Seiten virtuellen Speichers vom virtuellen Speicher des zugrunde liegenden Hostbetriebssystems zugeordnet, und es sind virtuelle Plattenblöcke von einem oder mehreren virtuellen Plattenlaufwerken zugeordnet, die von der auf der VM ausgeführten Gastsoftware verwendet wird. So ordnet beispielsweise das Hostbetriebssystem 106 Speicherseiten und Plattenblöcke der VM 110 und VM 112 zu, und das Hostbetriebssystem 108 führt dasselbe mit der VM 114 durch. In einigen Implementierungen kann eine gegebene VM nicht auf die Seiten virtuellen Speichers zugreifen, die anderen VMs zugeordnet sind. So kann beispielsweise VM 110 nicht auf Speicherseiten zugreifen, die VM 112 zugeordnet wurden. Ein virtuelles Plattenlaufwerk kann über mehrere VM-Neustarts hinweg verbunden bleiben. Bei einigen Realisierungsformen sind die Blöcke virtueller Platten auf physischen Plattenlaufwerken mit Hostmaschinen verbunden. VMs können Netzwerkadressen zugeordnet sein, über die ihre jeweiligen Prozesse Daten über ein virtuelles Netzwerk mit anderen Prozessen austauschen können. So kann beispielsweise auf der VM 110 ausgeführte Gastsoftware unter Verwendung der zugeordneten Netzwerkadressen über ein virtuelles Netzwerk Daten mit Gastsoftware austauschen, die auf der VM 112 oder VM 114 ausgeführt wird.
-
Eine Gastsoftware einer VM kann ein Gastbetriebssystem (z. B. Gastbetriebssysteme 110b, 112b und 114b) beinhalten, bei dem es sich um Software handelt, die die Ausführung entsprechender Gastsoftwareanwendungen (z. B. Gastanwendungen 110c, 112c und 114c) innerhalb der VM steuert und diesen Anwendungen Dienste bereitstellt. So kann ein Gastbetriebssystem beispielsweise ein Betriebssystem wie etwa eine Variante des UNIX-Betriebssystems sein. Andere Betriebssysteme sind möglich. Jede VM kann dasselbe Gastbetriebssystem oder verschiedene Gastbetriebssysteme ausführen. Ein Booten einer VM kann ein Verwenden einer virtuellen Boot-Platte beinhalten, um ein Kernel-Image in den Arbeitsspeicher zu laden, das einem Gastbetriebssystem zugewiesen ist. Ein Zugriff des Gastbetriebssystems auf Ressourcen wie Netzwerke und virtuellen Plattenspeicher wird durch das zugrunde liegende Hostbetriebssystem gesteuert.
-
Zur Veranschaulichung und unter Bezugnahme auf die virtuelle Maschine 110 wird beispielsweise die virtuelle Hardware 110a unterbrochen, wenn die Gastanwendung 110c oder das Gastbetriebssystem 110b versucht, eine Eingabe-/Ausgabe-Operation auf einer virtuellen Platte durchzuführen, Netzwerkdatenaustausch einzuleiten oder eine vorrangige Operation durchzuführen, sodass das Hostbetriebssystem 106 die Aktion stellvertretend für die virtuelle Maschine 110 durchführen kann. Das Hostbetriebssystem 106 kann diese Handlungen mit einem Prozess durchführen, der in Kernelprozessraum 106b, Benutzerprozessraum 106a oder beiden ausgeführt wird.
-
Der Kernelprozessraum 106b ist virtueller Speicher, der für den Kernel 106d des Hostbetriebssystems 106 reserviert ist, der beispielsweise Kernelerweiterungen und Einheitentreiber beinhalten kann. Der Kernelprozessraum verfügt über erhöhte Berechtigungen (manchmal auch als „Supervisor-Modus” bekannt); D. h. der Kernel 106d kann bestimmte privilegierte Operationen ausführen, die für Prozesse, die im Benutzerprozessraum 106a laufen, ausgeschaltet sind. Beispiele für vorrangige Operationen umfassen Zugriff auf verschiedene Adressräume, Zugriff auf spezielle Funktionsprozessoreinheiten in der Hostmaschine wie Speicherverwaltungseinheiten usw. Der Benutzerprozessraum 106a ist ein separater Teil virtuellen Speichers, der für Prozesse des Benutzermodus reserviert ist. Prozesse des Benutzermodus können vorrangige Operationen nicht direkt durchführen.
-
Bei verschiedenen Realisierungsformen ist ein Abschnitt der Datenaustauschfunktionalität des VM-Netzwerks in einem Datenaustauschprozess (z. B. Datenaustauschprozess 106c) realisiert. In anderen Implementierungen wird der Kommunikationsprozess im Benutzerbereich (z. B. Prozessbereich 106a) eines Host-Betriebssystems (z. B. Host-Betriebssystem 106) ausgeführt. Bei anderen Realisierungsformen kann der Datenaustauschprozess im Kernelprozessraum (z. B. Kernelprozessraum 106d) des Hostbetriebssystems ausgeführt werden. Es ist möglich, entweder einen einzigen Kommunikationsprozess für alle VMs zu nutzen, die auf einer Host-Maschine ausgeführt werden, oder mehrere Kommunikationsprozesse, einen für jede VM, die auf einer Host-Maschine ausgeführt wird. In wieder anderen Implementierungen wird ein Teil des Kommunikationsprozesses im Benutzerbereich ausgeführt und ein Teil im Kernprozessbereich. Bei einigen Realisierungsformen kann der Datenaustauschprozess einen Kapselungsmechanismus auf Hardwareebene verwenden.
-
Ein Datenaustauschprozess 106c, 108c kann mit einem VM-Registrierungsdienst 118 Daten austauschen, um ein virtuelles Netzwerkpaar (VNP) zwischen zwei VMs einzurichten. Bei einem virtuellen Netzwerk kann ein VNP verwendet werden, um unter Verwendung einer oder mehrerer virtueller Verbindungen bzw. eines oder mehrerer Links Verkehr zwischen zwei Endpunkten weiterzuleiten. Dem VNP zugewiesener Netzwerkverkehr kann über eine lokale Schleife (z. B. wenn sich beide VMs auf derselben Hostmaschine befinden) oder über ein oder mehrere Netzwerke transportiert werden, beispielsweise über ein privates Netzwerk 116, das Internet 122 oder eine Kombination davon. Ein VNP zwischen der virtuellen Maschine 110 und der virtuellen Maschine 114 kann beispielsweise verwendet werden, um Pakete weiterzuleiten, die über das private Netzwerk 116 zwischen VNP-Endpunkten übertragen werden, die durch den ersten bzw. zweiten Datenaustauschprozess 106c, 108c verwaltet werden. Bei einigen Realisierungsformen realisiert ein Server wie beispielsweise ein VM-Registrierungsserver die Funktionalität des VM-Registrierungsdienstes. Der VM-Registrierungsdienst 118 kann Zuweisungen von Netzwerkadressen (z. B. IP-Adressen) zu VMs verwalten und Zuordnungen zwischen VM-Netzwerkadressen in einem virtuellen Netzwerk und den jeweiligen Netzwerkadressen der Hostmaschinen aufrechterhalten, die die VMs ausführen.
-
2A veranschaulicht einen exemplarischen Ablauf von Operationen bei einem System 200 zur Datenverschlüsselung von Daten, die durch virtuelle Maschinen erzeugt wurden und auf die durch VMs zugegriffen wird. Bei einigen Realisierungsformen beinhaltet das System 200 mehrere VMs, z. B. VM A 202 und VM B 204, und ein Servicesystem 206, das einen Zugriff auf die Daten bereitstellt. Bei einigen Realisierungsformen ist das Serversystem 206 so konfiguriert, dass VMs ausgeführt werden, die Daten in einem virtuellen Netzwerk austauschen. Den VMs sind beispielsweise Netzwerkadressen in dem virtuellen Netzwerk zugewiesen. Bei einigen Realisierungsformen verwendet das Serversystem 206 separate Tunnel, um zu bewirken, dass den jeweiligen virtuellen Maschinen Pakete im virtuellen Netzwerk bereitgestellt werden. Bei einigen Realisierungsformen beinhaltet die Umgebung 200 ein Schlüsselverwaltungssystem 208, das bei der Verschlüsselung/Entschlüsselung (z. B. unter Verwendung von Techniken zur Erzeugung von Schlüsseln nach dem Zufallsprinzip) verwendete Schlüssel zuweist, den Schlüsseln Datenschlüsselkennungen zuordnet und Schlüssel in Umhüllungskomponenten umhüllt. Die Begriffe „umhüllen” und „umhüllt” schließen im hierin verwendeten Sinne deren normale und gewöhnliche Bedeutung ein, einschließlich und ohne darauf beschränkt zu sein, des Vorgangs des Verschlüsselns eines Schlüssels. Wenn mehr als nur der Schlüssel verschlüsselt wird, wird die gesamte Struktur ferner oftmals als „umhülltes BLOB” bezeichnet. Verschlüsselte Benutzerdaten können „umhüllt” werden, indem Metadaten zugewiesen werden, die Einzelheiten der Verschlüsselung enthalten, die zum Verschlüsseln bestimmter Datenblöcke verwendet wurden (z. B. Verschlüsselungsalgorithmus, Verschlüsselungsschlüsselindex, Authentifizierungskennzeichen (Tags) usw.). Zur Klarstellung und ohne Einschränkung der Allgemeingültigkeit wird im Folgenden der Begriff „Datenumhüllungskomponente” verwendet, um eine derartige Kombination aus verschlüsselten Daten und Verschlüsselungsmetadaten zu bezeichnen, die zusammen gespeichert werden können oder auch nicht.
-
Bei einigen Realisierungsformen kann der Virtuelle-Maschine-Manager einer virtuellen Maschine Bibliotheken nutzen, um mit dem LSV-Teilsystem zusammenzuwirken, das beispielsweise in einem dritten Ring (oder in einer nicht vorrangigen Anwendungsdomäne) des Hosts ausgeführt wird. Der Code kann beispielsweise die Bereitstellung der Rolle des Serversystems 206 bewirken.
-
Im Allgemeinen kennzeichnet eine Datenschlüsselkennung einen Schlüssel eindeutig. Datenschlüsselkennungen können auf verschiedene Arten erzeugt werden. Bei einigen Realisierungsformen kann ein Verfahren des Schlüsselverwaltungssystems 208 unter Verwendung eines Hash-Werts und auf der Grundlage der Schlüsselart eine Schlüsselkennung erzeugen. Bei einigen Realisierungsformen können andere Arten des Erzeugens einer Schlüsselkennung verwendet werden.
-
Bei einigen Realisierungsformen wird durch das Serversystem 206 von einer ersten VM (z. B. VM A 202) eine erste Anforderung 210 empfangen, um Daten auf einem protokollstrukturierten Datenträger zu speichern. Auf der Grundlage der Anforderung erzeugt 212 a das Serversystem 206 einen Datenschlüssel und fordert an 213, dass der Datenschlüssel anhand einer Zugriffssteuerungsliste (ACL) eines oder mehrerer Benutzer umhüllt wird, die zum Zugriff auf die Daten berechtigt sind. Die ACL kann beispielsweise durch einen Benutzerberechtigungssystem (z. B. ein System mit Einmalanmeldung (Single-Sing-On)) bereitgestellt werden. Bei einigen Realisierungsformen stellt das Schlüsselverwaltungssystem 208 dem Serversystem 206 ein umhülltes BLOB bereit 214, das den umhüllten Schlüssel beinhaltet. Das Serversystem 206 verwendet den Datenschlüssel zur Verschlüsselung der Daten 216 und speichert die verschlüsselten Daten und das umhüllte BLOB auf dem protokollstrukturierten Datenträger. Das Serversystem 206 stellt einem oder mehreren Benutzern auf der Zugriffssteuerungsliste die Datenschlüsselkennung bereit 218, z. B. den Benutzern, die der VM A 202 und VM B 204 zugewiesen sind.
-
Das Serversystem 206 empfängt von einer zweiten virtuellen Maschine (z. B. VM B 204) eine zweite Anforderung 220, um eine Momentaufnahme der Daten zu erhalten. Auf der Grundlage der zweiten Anforderung sendet 221 das Serversystem 206 das umhüllte BLOB zusammen mit Berechtigungsnachweisen an das Schlüsselverwaltungssystem 208. Das Schlüsselverwaltungssystem 208 verwendet seinen Umhüllungsschlüssel, z. B. einen Masterschlüssel, um das BLOB zu entschlüsseln, ruft die Schlüssel und ihre zugewiesenen ACLs ab und stellt dem Serversystem 206 das nicht umhüllte BLOB bereit 222. Wenn die Berechtigungsnachweise für den angeforderten Schlüssel anhand einer Identität in der zugewiesenen ACL authentifiziert werden 224, gibt das Schlüsselverwaltungssystem 208 diesen Schlüssel 226 an das Serversystem 206 zurück, das die Daten 228 unter Verwendung des Datenschlüssels entschlüsselt und der zweiten virtuellen Maschine (z. B. VM B 204) eine Momentaufnahme 230 der Daten bereitstellt.
-
DIE 2B, 2C und 3 sind Darstellungen, die exemplarische Abläufe von Operationen 240a bis 240c veranschaulichen, die bei Schlüsselverwaltungstechniken während der Verschlüsselung/Entschlüsselung verwendet werden. Die Techniken können beispielsweise unter Verwendung symmetrischer Schlüssel verwendet werden, die zum direkten Schutz der Platte und des Inhalts der Speicherung des VM-Zustands dienen. Bei einigen Realisierungsformen können die Datenschlüssel unter Verwendung von Umhüllungs- und Umhüllungsaufhebungsfunktionen des Schlüsselverwaltungssystems verwaltet werden, z. B. unter Verwendung von Datenschlüsseln, die durch einen Schlüsselspeicher erzeugt und durch diesen aufrecht erhalten werden. Bei einigen Realisierungsformen wird durch einen Hash-Wert des Schlüsselmaterials auf Datenschlüssel verwiesen, der unter Verwendung eines Verfahrens erzeugt wurde, das auf der Schlüsselart beruht.
-
Die Operationen 240a können beispielsweise in einer Umgebung durchgeführt werden, die einen Benutzer 242, eine Anwendungsprogrammierschnittstelle (Application Programming Interface, API) 244 und eine Benutzerberechtigung 246 beinhaltet, die durch den Benutzer 242 verwendet wird, um sich z. B. unter Verwendung der API 244 bei der VM anzumelden. Bei einigen Realisierungsformen erzeugt und umhüllt ein Schlüsselgenerator 248 Datenschlüssel, die in einem Schlüsselspeicher 250 gespeichert werden.
-
Unter Bezugnahme auf den Ablauf 240a, der in 2B dargestellt ist, empfängt die API 244 nach Erzeugung von Daten (z. B. von permanenten Daten) durch den Benutzer 242 ein Zugriffstoken 258, z. B. von einer entfernten Einheit. Die Daten können beispielsweise in einer Anforderung von einer VM enthalten sein, die Daten auf einem protokollstrukturierten Datenträger zu speichern. Das Zugriffstoken 258 wird zur Benutzerberechtigung 246 weitergeleitet, die Benutzerberechtigungsnachweise 260 erzeugt, die zur API 244 zurückgegeben werden. Die Benutzerberechtigungsnachweise beinhalten beispielsweise eine Zugriffssteuerungsliste (ACL), die einen oder mehrere Benutzer bezeichnet, die zum Zugriff auf die Daten berechtigt sind. Der Schlüsselgenerator 248 empfängt die Benutzerberechtigungsnachweise 260 und erzeugt einen Benutzerschlüssel 262, der zur Verschlüsselung der Daten verwendet wird, bevor die Daten auf dem protokollstrukturierten Datenträger gespeichert werden. Der Schlüssel 262 wird anschließend umhüllt, um einen umhüllten Schlüssel 264 zu erzeugen. Eine Schlüsselressource 266 wird erzeugt, die eine Datenschlüsselkennung und eine Datenschlüsselumhüllungskomponente (z. B. den umhüllten Schlüssel 264) beinhaltet. Die Datenschlüsselumhüllungskomponente enthält einen Datenschlüssel, der durch die Datenschlüsselkennung gekennzeichnet ist. Die Datenschlüsselumhüllungskomponente enthält ferner die ACL, die die Benutzer bezeichnet, die zum Zugriff auf die Daten berechtigt sind.
-
Unter Bezugnahme auf 2C beinhaltet der Ablauf 240b ein Aufheben der Umhüllung mit Benutzerschlüssel, um auf die geschützten Daten innerhalb der Cloud zuzugreifen. Nach Erzeugung einer VM (z. B. durch denselben oder einen anderen Benutzer) empfängt die API 244 beispielsweise ein Zugrifftoken 270, z. B. von einer entfernten Einheit. Bei diesem Beispiel ist das Zugriffstoken 270 einer Anforderung durch den Benutzer 242 bezüglich des Zugriffs auf eine Momentaufnahme der Daten zugewiesen. Das Zugriffstoken 270 wird zur Benutzerberechtigung 246 weitergeleitet, die Benutzerberechtigungsnachweise 272 bereitstellt. Die Benutzerberechtigungsnachweise 272 und die Schlüsselressource 266 (einschließlich des umhüllten Schlüssels 264) werden an den Schlüsselgenerator 248 übergeben. Nach der Überprüfung, dass der Benutzer zum Zugriff auf die Daten berechtigt ist, wird die Umhüllung des umhüllten Schlüssels 264 aufgehoben (z. B. im Schlüsselspeicher 250), wodurch der Benutzerschlüssel 262 erzeugt wird. Cloud-basierte Benutzerberechtigungsnachweise 268 und ein Cloud-basierter Schlüssel 274 werden dem Schlüsselspeicher 250 bereitgestellt, der einen umhüllten Schlüssel 276 erzeugt.
-
Unter Bezugnahme auf 3 beinhaltet der Ablauf 240c ein Verwenden des Cloud-basierten umhüllten Schlüssels 272, um Zugriff auf die geschützten Daten in der Cloud zu erhalten. Der umhüllte Schlüssel 272 und die Cloud-basierten Berechtigungsnachweise 268 werden beispielsweise der Abgleicheinheit 252 bereitgestellt. Wenn der Benutzer 242, der Zugriff auf die geschützten Daten anfordert, zum Zugriff auf die Daten berechtigt ist, wird die Umhüllung des umhüllten Schlüssels 276 aufgehoben (z. B. durch den Schlüsselspeicher 250), um den nicht umhüllten Schlüssel 274 bereitzustellen. Bei einigen Realisierungsformen verwendet ein Prozess 278, bei dem Schlüssel verwendet werden, den nicht umhüllten Schlüssel 274, um die Daten für den Zugriff durch den Benutzer 242 auf der VM zu entschlüsseln.
-
Bei einigen Ausführungsformen beinhaltet die Abgleicheinheit 252 Prozesse, die langlebige Berechtigungs-Zugriffstoken aufrechterhalten, die dem Zugriff eines Benutzers auf Daten auf der VM entsprechen. Die Abgleicheinheit 252 kann nach Bedarf Zugriffstoken anfordern, um Umhüllungen von Schlüsseln aufzuheben. Die Abgleicheinheit 252 kann beispielsweise ihre Berichtigungsdienst-Rollenberechtigungsnachweise verwenden, um den Schlüsselspeicher 250 zu veranlassen, die Umhüllung eines Datenschlüssels aufzuheben, der anhand der Cloud-Cluster-Rolle umhüllt wurde.
-
Bei einigen Realisierungsformen verwendet der Schlüsselspeicher 250 die Berechtigungsdienst-Berechtigungsnachweise, um den Zugriff auf Masterschlüssel zu steuern. Masterschlüssel können beispielsweise verwendet werden, um einen umhüllten Schlüssel zu entschlüsseln und die den Schlüsseln zugewiesenen ACLs lokal sichtbar zu machen. Der Schlüsselspeicher 250 kann anschließend überprüfen, dass die Identität, die einem Zugriffstoken (z. B. dem Zugriffstoken 270) entspricht, einen Eintrag in der ACL aufweist, um den Zugriff auf dessen entsprechenden Schlüssel zuzulassen. Zu diesem Zeitpunkt kann der Schlüsselspeicher 250 den Schlüssel an einen Replikatorprozess zurückgeben, der den Schlüssel den Speichereinheiten zuweist, solange die VM aktiv ist. Der Replikator kann dasselbe Zugriffstoken weiterhin nutzen, solange er während des Zugreifens auf die permanente Platte den Zugriff auf neue Schlüssel benötigt. Wenn das Zugriffstoken abläuft, kann der Replikator ein neues Zugriffstoken anfordern. Alle Prozesse, die Schlüssel oder Token beinhalten, können dann den Speicher löschen, in dem sie enthalten sind, sobald die Schlüssel oder Token nicht mehr benötigt werden.
-
Bei einigen Realisierungsformen ermittelt der protokollstrukturierte Datenträger (LSV), ob die Daten bei Lesevorgängen zu entschlüsseln sind (wenn sie z. B. bereits entschlüsselt wurden), und verschlüsselt Daten bei Schreibvorgängen immer. Bei einigen Realisierungsformen hält der LSV innerhalb des Blocks von Metadaten Informationen über den Verschlüsselungszustand jedes Blocks aufrecht. LSV-Verwaltungstools verarbeiten ferner Änderungen bei ACL-Eigenschaften oder anderen kryptographischen Eigenschaften in Bezug auf Momentaufnahmegrenzen. Wenn sich beispielsweise kryptographische Eigenschaften von Momentaufnahmen ändern, werden die Änderungen in der neuen Momentaufnahme automatisch aktualisiert. Bei einigen Realisierungsformen befinden sich die einer bestimmten Momentaufnahme zugewiesenen kryptographischen Metadaten in einem Momentaufnahme-Metadatensegment, das innerhalb des Datenblocks gespeichert ist. Bei Momentaufnahmen, die Änderungen an einem Datenschlüssel beinhalten (z. B. bei Schlüsselrotation, -stilllegung usw.) erzeugen Schlüsselverwaltungstools einen neuen umhüllten Schlüssel. Bei einigen Realisierungsformen wird die Gruppe umhüllter Schlüssel aus der vorherigen Momentaufnahme in die Metadaten der aktuellen Momentaufnahme kopiert.
-
Einige Realisierungsformen übergeben geheimes Schlüsselmaterial unter Verwendung sicherer Aufrufe und/oder Transaktionen, die nicht protokolliert werden. Ein Verwenden sicherer Aufrufe kann beispielsweise verhindern, dass geheimes Schlüsselmaterial in Protokolle, Überwachungstools oder andere Ressourcen gelangt, die Standardaufrufen und -transaktionen zugewiesen sind. Ferner beinhalten bei Prozessen, die Schlüsselinformationen zu Platten zuweisen und aufrechterhalten (z. B. Schlüsselzustandspuffer), die Schlüsselinformationen kein geheimes Schlüsselmaterial, sondern stellen stattdessen lediglich Metadaten über den Schlüssel bereit, unter anderem die Schlüsselart und die Schlüsselkennung.
-
Bei einigen Realisierungsformen werden Schlüsselzustandsobjekte, die geheimes Schlüsselmaterial enthalten, in einem intern verwalteten Cache-Zwischenspeicher aufrechterhalten. Beim Start einer neuen VM-Instanz wird beispielsweise zuerst das gesamte geheime Schlüsselmaterial unter Verwendung eines sicheren Aufrufs als VM-Spezifikation an einen Cache-Zwischenspeicher übergeben. Ein Systemprozess fügt anschließend den Platten, die die VM bilden, Schlüsselzustandsobjekte hinzu, deren geheimes Schlüsselmaterial entfernt wurde. Wenn der Systemprozess die VM-Spezifikation als Teil einer VM-Erstellung sendet, wird das zuvor empfangene geheime Schlüsselmaterial unter Verwendung der Schlüsselkennungen in die VM-Spezifikation eingeschleust, um die Schlüsselmaterialien anzugleichen.
-
4 ist ein Ablaufplan, der einen exemplarischen Prozess 400 zum Verschlüsseln von Daten für virtuelle Maschinen zeigt. Der Prozess 400 kann beispielsweise durch das unter Bezugnahme auf 2A beschriebene Serversystem 206 durchgeführt werden.
-
Bei 402 wird eine erste Anforderung von einer ersten virtuellen Maschine empfangen, um Daten auf einem protokollstrukturierten Datenträger zu speichern. Das Serversystem 206 kann beispielsweise die Anforderung 210 von einer ersten VM (z. B. VM A 202) empfangen. Die Anforderung kann darin bestehen, Daten wie beispielsweise eine neu angelegte Datendatei (z. B. ein Abrechnungsarbeitsblatt) zu speichern, die der Benutzer (z. B. Benutzer A) auf der VM A 202 angelegt hat.
-
Bei 404 werden auf der Grundlage der Anforderung die Daten und eine Zugriffssteuerungsliste (ACL) eines oder mehrerer Benutzer empfangen, die zum Zugriff auf die Daten berechtigt sind. Das Serversystem 206 kann beispielsweise die zu speichernden Daten (z. B. das Abrechnungsarbeitsblatt) von der Benutzereinheit empfangen, die auf die VM zugreift. Gleichzeitig kann das Serversystem 206 die ACL empfangen, die die Benutzer bezeichnet, die zum Zugriff auf die Daten berechtigt sind (z. B. Benutzer A, B und C).
-
Bei 406 wird ein Datenschlüssel erhalten, der durch eine Datenschlüsselkennung gekennzeichnet ist. Das Schlüsselverwaltungssystem 208 kann beispielsweise einen Datenschlüssel (z. B. einen Verschlüsselungsschlüssel) erzeugen, der durch eine Datenschlüsselkennung gekennzeichnet ist, die durch das Schlüsselverwaltungssystem 208 zugewiesen wurde.
-
Bei 407 werden der Datenschlüssel und die Zugriffssteuerungsliste unter Verwendung eines Umhüllungsschlüssels verschlüsselt, um ein umhülltes BLOB zu erzeugen. Bei 408 werden die Daten unter Verwendung des Datenschlüssels verschlüsselt, um verschlüsselte Daten zu erzeugen. Bei 409 werden das umhüllte BLOB und die verschlüsselten Daten auf dem protokollstrukturierten Datenträger gespeichert. Das Serversystem 206 kann beispielsweise alle auf dem LSV speichern.
-
Bei 410 wird die Datenschlüsselkennung einem oder mehreren Benutzern auf der Zugriffssteuerungsliste bereitgestellt. Das Serversystem 206 kann beispielsweise den bereitgestellten Datenschlüssel allen Benutzern bereitstellen, die zum Zugriff auf die Daten berechtigt sind, z. B. allen Benutzern auf der ACL, die den Daten zugewiesen ist.
-
Bei 412 wird eine zweite Anforderung von einer zweiten virtuellen Maschine empfangen, um eine Momentaufnahme der Daten zu erhalten. Beispielsweise können derselbe Benutzer (z. B. Benutzer A) oder ein anderer Benutzer (z. B. Benutzer B) eine Anforderung senden, um eine Kopie des Abrechnungsarbeitsblatts zu erhalten. Die Anforderung kann die Datenschlüsselkennung und eine Bezeichnung des Benutzers beinhalten, der die Anforderung ausgelöst hat.
-
Bei 414 wird auf der Grundlage der zweiten Anforderung ein nicht umhülltes BLOB erhalten, das den Datenschlüssel und die Zugriffssteuerungsliste enthält. Bei 415 werden der Datenschlüssel und die Zugriffssteuerungsliste aus dem nicht umhüllten BLOB erhalten. Das Serversystem 206 kann beispielsweise unter Verwendung der Datenschlüsselkennung die Datenschlüsselumhüllungskomponente vom Schlüsselverwaltungssystem 208 anfordern und empfangen.
-
Bei 416 wird ein der zweiten Anforderung zugewiesener Benutzer authentifiziert, der Benutzer wird anhand der Zugriffssteuerungsliste berechtigt, und es wird ermittelt, ob der Benutzer authentifiziert und berechtigt ist. Das Serversystem 206 kann beispielsweise die der Anforderung zugewiesenen Benutzerberechtigungsnachweise (z. B. Benutzerkennung) anhand der ACL prüfen, um nachzuprüfen, dass der Benutzer (z. B. Benutzer B) zum Zugriff auf das Abrechnungsarbeitsblatt berechtigt ist.
-
Bei 418 werden nach einer Feststellung, dass der Benutzer authentifiziert und berechtigt ist, die Daten unter Verwendung des Datenschlüssels entschlüsselt. Wenn beispielsweise festgestellt wird, das Benutzer B in der ACL enthalten ist, kann das Serversystem 206 den Datenschlüssel verwenden, um das Abrechnungsarbeitsblatt zu entschlüsseln.
-
Bei 420 wird der zweiten virtuellen Maschine eine Momentaufnahme der Daten bereitgestellt. Das Serversystem 206 kann das Abrechnungsarbeitsblatt beispielsweise Benutzer B zur Verwendung auf der VM des Benutzers B bereitstellen.
-
Verschlüsselung und Entschlüsselung, die durch den Prozess 400 durchgeführt werden, können zusätzlich zur Verschlüsselung/Entschlüsselung von Schlüsselmaterial auf der Grundlage einzelner Blöcke stattfinden. Bei einigen Realisierungsformen kann die Verschlüsselung/Entschlüsselung unter Verwendung eines Multithread-Moduls realisiert sein, das Datenblöcke in paralleler Weise kryptographisch umsetzt.
-
Bei einigen Realisierungsformen kann ein feststehender Pool von Threads verwendet werden, um Blöcke parallel zu verschlüsseln und zu entschlüsseln. Eine Standardanzahl von Threads kann beispielsweise gleich der Anzahl von CPUs sein, die auf dem Host (z. B. dem Serversystem 206) erkannt wurden. Bei einigen Realisierungsformen können E/A-Threads feststehende Speichersegmente als Spiegelpuffer verwenden. Wenn es anschließend darum geht, die Daten kryptographisch umzusetzen, können die Segmente in Datenblöcke für einzelne Threads im Thread-Pool für die kryptographische Umsetzung unterteilt werden. Bei einigen Realisierungsformen kann die Standard-Datenblockgröße 512 kB betragen oder eine andere konfigurierbare Größe aufweisen.
-
Bei einigen Realisierungsformen können Bitmaps verwendet werden, um die Verschlüsselung von Platten auf einer Grundlage von Deltaplatten zu überwachen. Blöcke können beispielsweise unverschlüsselte Blöcke beinhalten, die keinerlei Daten enthalten (selten) oder Blöcke aus einem unverschlüsselten Basisimage enthalten. Wenn die Blöcke geschrieben und verschlüsselt werden, kann das Bitmap aktualisiert werden. Der Bitmapmechanismus kann beispielsweise nur bei zeitweiligen Images verwendet werden, sodass Dataplatten-Rohkomponenten von Deltaplatten verschlüsselt werden, während Basisplatten-Rohkomponenten nicht verschlüsselt werden. Bei einigen Realisierungsformen kann ein Öffnen eines unverschlüsselten Basisplatten-Rohimage zum Lesen/Schreiben bei aktivierter Verschlüsselung dazu führen, dass das Basisimage bei nachfolgenden Öffnen-Vorgängen anderer VMs beschädigt wird.
-
5A ist ein Ablaufplan, der einen exemplarischen Schlüsselrotationsprozess 500 für Datenschlüssel zeigt, die auf virtuellen Maschinen verwendet werden. Der Prozess 500 kann beispielsweise verwendet werden, um Datenschlüssel auf einer planmäßigen Grundlage rotieren zu lassen, z. B. alle sieben Tage oder in einem anderen Zeitraum. Bei einigen Realisierungsformen kann der Prozess 500 verwendet werden, um Cloud-Cluster-Masterschlüssel zu rollieren, wodurch ein vorheriger Schlüssel zu einem „aktiven” Schlüssel und der neue Schlüssel zu einem „primären” Schlüssel wird. Wenn bei einem Datenschlüssel die Umhüllung durch Verwendung einer aktiven Masterschlüsselversion aufgehoben wird, kann auch die primäre Masterschlüsselversion wieder umhüllt werden, wodurch der umhüllte aktive Schlüssel durch den neuen umhüllten primären Schlüssel ersetzt wird.
-
Bei 502 wird eine Schwellenwertbedingung eingerichtet, die einem Speicher der Daten auf dem protokollstrukturierten Datenträger zugewiesen ist, auf dem die Schwellenwertbedingung zur Rotation des Datenschlüssels verwendbar ist. Bei einigen Realisierungsformen weist die Schwellenwertbedingung eine Datenmenge auf, die durch den Datenschlüssel geschützt werden, beispielsweise eine Anzahl von Datenblöcken, eine Anzahl von Dateien oder ein anderes Maß der Datenmenge, die zum gegenwärtigen Zeitpunkt durch den Datenschlüssel geschützt werden. Bei einigen Realisierungsformen ist die Datenmenge, die durch den Schlüssel geschützt ist, eine kumulative Menge, beispielsweise die gesamte Datenmenge, die im Laufe der Zeit unter Verwendung desselben Datenschlüssels geschützt werden. Bei einigen Realisierungsformen beinhaltet die Schwellenwertbedingung eine Zeitdauer, während der der Datenschlüssel in Gebrauch ist. Die maximale Zeitdauer zur Verwendung eines Datenschlüssels kann beispielsweise auf eine beliebige Anzahl von Stunden, Tagen, Wochen usw. eingestellt werden.
-
Bei 504 wird eine Feststellung getroffen, dass die Schwellenwertbedingung aufgetreten und der Zeitpunkt gekommen ist, um den Datenschlüssel zu rotieren, wie in den folgenden Schritten beschrieben. Bei 506 wird ein neuer Datenschlüssel erhalten, der durch eine neue Datenschlüsselkennung gekennzeichnet ist. Bei einigen Realisierungsformen kann der neue Datenschlüssel vom Schlüsselverwaltungssystem 208 empfangen werden.
-
Bei 508 werden die Daten unter Verwendung des Datenschlüssels entschlüsselt, z. B., der Datenschlüssel muss stillgelegt werden. Dies ist die letzte Verwendung des Datenschlüssels vor dessen Stilllegung.
-
Bei 509 werden der neue Datenschlüssel und die Zugriffssteuerungsliste unter Verwendung des Umhüllungsschlüssels verschlüsselt, um ein neues umhülltes BLOB zu erzeugen. Bei 510 werden die Daten unter Verwendung des neuen Datenschlüssels verschlüsselt, um verschlüsselte Daten zu erzeugen. Bei 511 werden das neue umhüllte BLOB und die verschlüsselten Daten auf dem protokollstrukturierten Datenträger gespeichert. Bei 512 wird die neue Datenschlüsselkennung einem oder mehreren Benutzern auf der Zugriffssteuerungsliste bereitgestellt.
-
Bei 514 wird der stillzulegende Datenschlüssel zerstört. Bei einigen Realisierungsformen geschieht die Zerstörung des Datenschlüssels durch Überschreiben des Speicherplatzes des Datenschlüssels mit willkürlichen Daten, bei denen es sich nicht um Schlüsseldaten handelt.
-
5B ist ein Ablaufplan, der einen exemplarischen Schlüsselstilllegungsprozess 520 für Datenschlüssel zeigt, die auf virtuellen Maschinen verwendet werden. Bei einigen Realisierungsformen wird für alle umhüllten Schlüssel ein Verzeichnis aufrechterhalten, das Informationen darüber beinhaltet, welche Masterschlüsselversion zum Umhüllten der Schlüssel verwendet wurde. Einige Realisierungsformen halten ferner ein Verzeichnis aller aktiven Datenschlüssel aufrecht. Das Verzeichnis beinhaltet zum Beispiel Verweise auf die umhüllten Schlüssel, von denen sie erhalten wurden, und auf die VM-Instanzen, in denen sie gegenwärtig gehalten werden. Einige Realisierungsformen beinhalten Zeitstempel, die jedem Schlüssel zugewiesen sind und anzeigen, wann jeder Schlüssel angelegt wurde. Bei einigen Realisierungsformen können die Zeitstempel und/oder andere Informationen verwendet werden, um die Stilllegung von Datenschlüsseln auszulösen. Bei einigen Realisierungsformen geschieht die Stilllegung nach 120 Tagen, was bedeutet, dass jeder bestehende umhüllte Schlüssel anhand des aktuellen primären Masterschlüssels spätestens 120 Tage nach dem Zeitpunkt erneut verschlüsselt wird, an dem der umhüllte Schlüssel erzeugt wurde. Bei einigen Realisierungsformen sind Alarme gesetzt (z. B. 120 Tage ab dem Datum der Schlüsselerzeugung), durch die Auslöseereignisse auftreten, um den Zeitpunkt zur Schlüsselstilllegung anzuzeigen. Sobald alle umhüllten Schlüssel, die durch einen aktiven Masterschlüssel geschützt wurden, erneut umhüllt worden sind, wird der Masterschlüssel-Stilllegungsprozess durch Zerstören des aktiven Masterschlüssels abgeschlossen. Es folgen exemplarische Schritte zur Stilllegung.
-
Bei 522 wird eine Schwellenwertbedingung eingerichtet, die einem Speicher der Daten auf dem protokollstrukturierten Datenträger zugewiesen ist, auf dem die Schwellenwertbedingung zur Stilllegung des Datenschlüssels verwendbar ist. Bei einigen Realisierungsformen beinhaltet die Schwellenwertbedingung eine Zeitdauer, während der der Datenschlüssel in Gebrauch ist, z. B. zur Stilllegung von Datenschlüsseln, die das Alter von 120 Tagen erreichen.
-
Bei 524 wird eine Feststellung eingeleitet, dass die Schwellenwertbedingung aufgetreten ist, und es wird die Stilllegung des Datenschlüssels eingeleitet. Die Feststellung kann beispielsweise durch das Auftreten eines Alarms oder durch Vergleichen des aktuellen Datums mit dem Erzeugungsdatum des Datenschlüssels vorgenommen werden, um zu ermitteln, ob der Unterschied groß genug ist, um die Schwellenwertbedingung auszulösen.
-
Bei 526 wird ein neuer Datenschlüssel erhalten, der durch eine neue Datenschlüsselkennung gekennzeichnet ist. Beispielsweise kann das Schlüsselverwaltungssystem 208 den neuen Schlüssel erzeugen und die Schlüsselkennung für den neuen Schlüssel bereitstellen.
-
Bei 528 werden die Daten unter Verwendung des stillzulegenden Datenschlüssels entschlüsselt. Dies ist die letzte Verwendung des alten Datenschlüssels.
-
Bei 529 werden der neue Datenschlüssel und die Zugriffssteuerungsliste unter Verwendung des Umhüllungsschlüssels verschlüsselt, um ein neues umhülltes BLOB zu erzeugen. Bei 530 werden die Daten unter Verwendung des neuen Datenschlüssels verschlüsselt, um verschlüsselte Daten zu erzeugen. Bei 531 werden das neue umhüllte BLOB und die verschlüsselten Daten auf dem protokollstrukturierten Datenträger gespeichert. Bei 532 wird die neue Datenschlüsselkennung einem oder mehreren Benutzern auf der Zugriffssteuerungsliste bereitgestellt.
-
Bei 534 wird der stillzulegende Datenschlüssel zerstört. Bei einigen Realisierungsformen geschieht die Zerstörung des Datenschlüssels durch Überschreiben des Speicherplatzes des Datenschlüssels mit Nullwerten, Löschwerten, Einsen oder Nullen.
-
5C ist ein Ablaufplan, der einen exemplarischen Schlüsselannullierungsprozess 540 für Datenschlüssel zeigt, die auf virtuellen Maschinen verwendet werden. Falls beispielsweise eine Masterschlüsselversion verletzt wird, können der Masterschlüssel und alle Datenschlüssel rolliert werden, die durch den verletzten Masterschlüssel geschützt werden. Bei einigen Realisierungsformen beinhaltet das Rollieren der Datenschlüssel ein erneutes Verschlüsseln der Dateninhalte anhand des neu erzeugten Datenschlüssels. Der neu erzeugte Datenschlüssel kann mit dem neu erzeugten primären Masterschlüssel umhüllt werden. Bei einigen Realisierungsformen werden alle mit dem vorherigen Datenschlüssel verschlüsselten Daten zerstört.
-
Bei 542 wird ein Zugriff auf die Daten geprüft. Bei einigen Realisierungsformen geschieht das Prüfen des Datums durch Überwachen von Prozessen und Benutzern, die auf die Daten zugreifen. Bei 544 wird festgestellt, dass durch einen Benutzer auf die Daten zugegriffen wurde, der nicht auf der Zugriffssteuerungsliste steht, und dass der Datenschlüssel verletzt wurde.
-
Bei 546 werden Maßnahmen zum Ersatz des verletzten Datenschlüssels eingeleitet. Bei 548 wird ein neuer Datenschlüssel erhalten, der durch eine neue Datenschlüsselkennung gekennzeichnet ist.
-
Bei 550 werden die Daten unter Verwendung des stillzulegenden Datenschlüssels entschlüsselt. Dies ist die letzte Verwendung des alten Datenschlüssels.
-
Bei 551 werden der neue Datenschlüssel und die Zugriffssteuerungsliste unter Verwendung des Umhüllungsschlüssels verschlüsselt, um ein neues umhülltes BLOB zu erzeugen. Bei 552 werden die Daten unter Verwendung des neuen Datenschlüssels verschlüsselt, um verschlüsselte Daten zu erzeugen. Bei 553 werden das neue umhüllte BLOB und die verschlüsselten Daten auf dem protokollstrukturierten Datenträger gespeichert. Bei 554 wird die neue Datenschlüsselkennung einem oder mehreren Benutzern auf der Zugriffssteuerungsliste bereitgestellt.
-
Bei 556 wird der alte Datenschlüssel zerstört. Bei einigen Realisierungsformen geschieht die Zerstörung des Datenschlüssels durch Überschreiben des Speicherplatzes des Datenschlüssels mit Nullwerten, Löschwerten, Einsen oder Nullen.
-
Bei einigen Realisierungsformen geschieht die Umwandlung beim Rollieren eines Datenschlüssels in einer nicht unterbrechenden Weise, wenn sich der Datenschlüssel im aktiven Gebrauch durch eine VM befindet. Das Rollieren geschieht beispielsweise ohne Unterbrechung der Fähigkeit der VM, die Platte in einer normalen Weise zu verwenden.
-
6 ist ein Beispiel einer Vernetzungsarchitektur für ein verteiltes System, das zur Ausführung virtueller Maschinen konfiguriert ist. Ein verteiltes System kann Serversysteme enthalten, die Hostmaschinen 615a, 615b beinhalten, die so konfiguriert sind, dass eine oder mehrere virtuelle Maschinen 620a, 620b, 620c, 620d ausgeführt werden. Die Hostmaschinen 615a, 615b verwenden IP-Tunnel 660a, 660b, 660c, um IP-Verkehr zwischen den virtuellen Maschinen 620a bis d und IP-Verkehr zwischen den virtuellen Maschinen 620a bis d und VM-Gateways 640a, 640b zu übertragen. Die VM-Gateways 640a, b sind so konfiguriert, dass den virtuellen Maschinen 620a bis d Zugriff auf das Internet 650 bereitgestellt wird.
-
Die Hostmaschinen 615a, 615b können über jeweilige lokale Netzwerke (LANs) 655a, 655b Verbindungen zum Internet 650 herstellen. Bei einigen Realisierungsformen sind den Hostmaschinen 615a, 615b IP-Adressen (z. B. 134.130.78.11, 224.10.202.6) zugewiesen, die im Internet 650 sichtbar sind. Verkehr auf einem zwischen Hostmaschinen vorliegenden IP-Tunnel 660a (z. B. IP-Tunnelpakete) kann von der Hostmaschine 615 an einem ersten LAN 655a über das Internet 650 zu einer Hostmaschine 615b in einem zweiten LAN 655b weitergeleitet werden (Tunnel 660a überträgt Verkehr zwischen VM-1 620a und VM-13 620c). Verkehr auf einem zwischen Hostmaschinen vorliegenden IP-Tunnel 660b kann vollständig innerhalb einer Hostmaschine 615a weitergeleitet werden.
-
Das VM-Gateway 640a, 640b kann Verkehr zwischen dem Internet 650 und dem virtuellen Netzwerk 601 weiterleiten, indem Quell- oder Zieladressinformationen in Paket-Headern geändert werden, sodass der Adressraum des virtuellen Netzwerks 601 hinter der IP-Adresse des Gateways 640a, 640b verborgen ist. Insbesondere wird bei Paketen, die aus dem Internet 650 am Gateway 640a, 640b eintreffen und für das virtuelle Netzwerk 601 bestimmt sind, die Zieladresse ihres IP-Datagramms von der des Gateways 640a, 640b (z. B. 134.130.78.1 oder 224.10.202.1) in die IP-Adresse der Ziel-VM (z. B. 192.168.1.10) geändert. Bei Paketen, die aus dem virtuellen Netzwerk 601 am Gateway 640a, 640b eintreffen und für das Internet 650 bestimmt sind, wird die Quelladresse ihres IP-Datagramms von der einer VM (z. B. 192.168.1.10) in die IP-Adresse des VM-Gateways 640a, 640b geändert, die im Internet 650 sichtbar ist (z. B. 134.130.78.1, 224.10.202.1). Auf der Grundlage dessen, dass das virtuelle Netzwerk 601 ein privates Teilnetz verwendet, können die VM-Gateways 640a, b eine Netzwerkadressumsetzung (Network Address Translation, NAT) durchführen, um Umsetzungen zwischen privaten Teilnetzadressen und öffentlichen Adressen vorzunehmen.
-
Die virtuellen Maschinen 620a, 620b, 620c, 620d, die auf den Hostmaschinen 615a bis b ausgeführt werden, können Prozesse wie beispielsweise Webserverprozesse ausführen, die mit Browsersoftware zusammenwirken, die auf Clients 630a, 630b, 630c ausgeführt wird. Ein Client kann eine Datenverarbeitungsvorrichtung wie beispielsweise ein Server, ein Personal Computer, ein Notebook-Computer, ein Smartphone, ein Fernsehgerät mit einem oder mehreren darin integrierten oder mit diesem verbundenen Prozessoren, eine integrierte Einheit (z. B. ein intelligenter Stromzähler) oder ein Tablet-Computer sein. Bei diesem Beispiel tauscht der Client 630c Daten mit einer VM (z. B. VM-21 620d) aus, indem IP-Pakete an ein VM-Gateway 640b gesendet werden. Das VM-Gateway 640b wiederum kapselt die Pakete vom Client 630c und sendet die gekapselten Pakete über einen IP-Tunnel 660c an die Hostmaschine 615b, die die VM-21 620d ausführt. Die Hostmaschine 615b, die die VM-21 620d ausführt, kann die Pakete entkapseln und die Pakete zur VM-21 620d leiten.
-
IP-Verkehr im virtuellen Netzwerk 140 kann durch IP-Tunnel übertragen werden. Die Hostmaschinen 102, 104 können IP-Kapselung und -Entkapselung 142 bei IP-Verkehr zu und von jeder VM 110, 112, 114 durchführen. Gekapselter IP-Verkehr von einer VM kann über IP-Tunnelung an eine andere VM gesendet werden. Ein IP-Tunnel kann eine Transportschicht bereitstellen. IP Tunnelung kann beispielsweise ein Senden eines IP Tunnelpakets beinhalten, das ein gekapseltes Paket beinhaltet. Das gekapselte Paket kann ein IP-Paket sein. Andere Arten gekapselter Pakete sind möglich. In einigen Fällen kann ein IP-Tunnel an derselben Hostmaschine sowohl beginnen als auch enden (z. B., wenn sich Quell- und Ziel-VM auf derselben Hostmaschine befinden). In einigen Fällen kann ein IP-Tunnel an einer Hostmaschine beginnen und an einer anderen Hostmaschine enden (wenn sich z. B. Quell- und Ziel-VM auf unterschiedlichen Hostmaschinen befinden). IP-Tunnelverkehr zwischen den Hostmaschinen 102, 104 kann auf einem virtuellen privaten Netzwerk (VPN) über ein Netzwerk 150 wie beispielsweise das Internet übertragen werden.
-
Die Hostmaschinen 102, 104 können eine Weiterleitungstabelle für virtuelle Netzwerke verwenden, um die Endpunktpositionen der IP-Tunnel abzurufen. Bei einigen Realisierungsformen kann eine Weiterleitungstabelle für virtuelle Netzwerke auf der Grundlage einer eingegebenen VM-Kennung oder VM-IP-Adresse eine weiterleitungsfähige IP-Adresse im Netzwerk 150 bereitstellen, die der Hostmaschine entspricht, die die VM ausführt, die der eingegebenen VM-Kennung oder VM-IP-Adresse zugewiesen ist.
-
Ausführungsformen des Gegenstands und die in der vorliegenden Spezifikation beschriebenen Operationen können in digitalen Elektronikschaltungen oder in Computersoftware oder -firmware oder -hardware realisiert sein, einschließlich der in der vorliegenden Spezifikation offenbarten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen aus einer oder mehreren von ihnen. Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h. als ein oder mehrere Module von Computerprogrammanweisungen implementiert werden, die auf einem Computer-Speichermedium für die Ausführung durch oder die Steuerung des Betriebs des datenverarbeitenden Apparats kodiert werden. Alternativ oder zusätzlich können die Programmanweisungen auf einem künstlich erzeugten propagierten Signal, z. B. einem maschinell erzeugten elektrischen, optischen oder elektromagnetischen Signal künstlich kodiert werden, das erzeugt wird, um Informationen für die Übertragung auf einen geeigneten Empfängerapparat für die Durchführung durch einen datenverarbeitenden Apparat zu kodieren. Bei einem Computer-Speichermedium kann es sich um ein maschinell lesbares Speichergerät, einen maschinell lesbaren Speicherträger, ein zufälliges oder serielles Speicher-Array oder Speichergerät oder um eine Kombination aus einem oder mehreren dieser Geräte handeln oder in ihnen enthalten sein. Außerdem ist ein Computer-Speichermedium zwar kein verbreitetes Signal, aber ein Computer-Speichermedium kann eine Quelle oder ein Bestimmungsort von Computerprogrammanweisungen sein, die in einem künstlich erzeugten verbreiteten Signal kodiert werden. Bei dem Computer-Speichermedium kann es sich auch um eine oder mehrere unterschiedliche physische Komponenten oder Medien (z. B. mehrere CDs, Plattenlaufwerke oder andere Speichergeräte) handeln, bzw. kann das Speichermedium darin enthalten sein.
-
Die in der vorliegenden Spezifikation beschriebenen Operationen können als Operationen realisiert sein, die durch eine Datenverarbeitungsvorrichtung an Daten durchgeführt wird, die auf einer oder mehreren computerlesbaren Speichereinheiten gespeichert sind oder von anderen Quellen empfangen werden.
-
Der Begriff „Datenverarbeitungsvorrichtung” umfasst alle Arten von Vorrichtungen, Einheiten und Maschinen zum Verarbeiten von Daten, einschließlich beispielsweise eines programmierbaren Prozessors, eines Computers, eines Systems auf einem Chip oder mehreren oder Kombinationen des Vorstehenden. Die Vorrichtung kann spezielle zweckgebundene Logikschaltungen beinhalten, z. B. ein FPGA (Field Programmable Gate Array) oder eine anwendungsspezifische integrierte Schaltung (Application-specific Integrated Circuit, ASIC). Der Apparat kann neben der Hardware auch einen Code einschließen, der eine Ausführungsumgebung für das betreffende Computerprogramm in der Frage erstellt, z. B. einen Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbank-Managementsystem, ein Betriebssystem, eine plattformunabhängige Laufzeitumgebung, eine virtuelle Maschine oder eine Kombination einer oder mehrerer der genannten darstellt. Der Apparat und die Ausführungsumgebung können verschiedene unterschiedliche Rechnermodell-Infrastrukturen umsetzen, wie Webdienstleistungen, verteilte Rechen- und Grid-Computin-Infrastrukturen.
-
Ein Computerprogramm (auch als Programm, Software, Softwareanwendung, Script oder Code bezeichnet) kann in einer beliebigen Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder verfahrensorientierter Sprachen, und das Programm kann in jeder beliebigen Form installiert sein, darunter als unabhängiges Programm oder als Modul, Komponente, Unterroutine, Objekt oder eine andere Einheit, die zur Verwendung in einer Datenverarbeitungsumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert sein, die andere Programme oder Daten enthält (z. B. ein oder mehrere Scripts, die in einem Dokument in Markup-Sprache gespeichert sind), in einer einzelnen Datei speziell für das betreffende Programm oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern). Ein Computerprogramm kann auf einem Computer oder mehreren Computer eingerichtet sein oder ausgeführt werden, die an einem Standort angeordnet sind oder über mehrere Standorte verteilt sind und über ein Kommunikationsnetz verbunden sind.
-
Die in der vorliegenden Spezifikation beschriebenen Prozesse und logischen Abläufe können durch einen oder mehrere programmierbare Prozessoren durchgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Operationen an Eingangsdaten durchzuführen und Ausgabedaten zu erzeugen. Die Prozesse und die logischen Abläufe können auch durch logische Sonderzweckschaltungen durchgeführt werden, und der Apparat kann als Sonderzweckschaltungen implementiert werden, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung).
-
Zu Prozessoren, die zur Ausführung eines Computerprogramms geeignet sind, gehören beispielsweise sowohl Mehrzweck- als auch Spezialmikroprozessoren sowie alle Arten eines oder mehrerer Prozessoren von Digitalcomputern beliebiger Arten. Ganz allgemein nimmt ein Prozessor Anweisungen und Daten von einem Festwertspeicher oder einem Arbeitsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind ein Prozessor für das Durchführen von Handlungen gemäß Anweisungen und ein oder mehr Speichergeräte für das Speichern von Anweisungen und Daten. Ganz allgemein gehören zu einem Computer auch ein oder mehr Massenspeichergeräte für das Speichern von Daten, z. B. Magnet-, magnetooptische oder optische Disketten, um Daten entgegenzunehmen und/oder zu übertragen, bzw. ist ein Computer operativ an ein solches Speichergerät gekoppelt. Jedoch muss ein Computer solche Geräte nicht haben. Außerdem kann ein Computer in einem anderen Gerät eingebettet sein, z. B. in einem Mobiltelefon, einem Organizer (PDA), einem mobilen Audio- oder Videoplayer, einer Spielkonsole, einem Funknavigationsempfänger oder einem tragbaren Speichergerät (z. B. in einem USB-Stick), um nur einige zu nennen. Geräte, die für das Speichern von Computerprogrammanweisungen und -daten geeignet sind, schließen alle Formen von Dauerspeichern, Medien- und Speichergeräten ein, einschließlich beispielsweise Halbleiter-Speichergeräte, z. B. EPROM, EEPROM und USB-Flash-Speicher; Magnetplatten, z. B. interne Festplatten oder herausnehmbare Platten; magnetooptische Platten; und CD-ROMs und DVD-ROMs. Der Prozessor und der Speicher können durch logische Sonderzweckschaltungen ergänzt werden oder darin eingebaut sein.
-
Zur Bereitstellung der Interaktion mit einem Benutzer können Ausführungsformen des in der vorliegenden Spezifikation beschriebenen Gegenstands auf einem Computer realisiert sein, der eine Anzeigeeinheit aufweist, z. B. einen Kathodenstrahlröhrenmonitor (CRT-Monitor (CRT = Cathode Ray Tube)) oder einen Flüssigkeitskristallanzeige-Monitor (LCD-Monitor (LCD = Liquid Crystal Display), um den Benutzer Informationen anzuzeigen, und eine Tastatur und eine Anzeigeeinheit, z. B. eine Maus oder einen Trackball, mit deren Hilfe der Benutzer dem Computer Eingaben bereitstellen kann. Es können auch andere Arten von Einrichtungen verwendet werden, um für eine Interaktion mit einem Nutzer zu sorgen; beispielsweise kann eine dem Benutzer gelieferte Rückkopplung beliebiger Form von sensorischer Rückkopplung vorliegen, z. B. eine visuelle Rückkopplung, auditive Rückkopplung oder taktile Rückkopplung; und die Eingabe von dem Nutzer kann in beliebiger Form empfangen werden, einschließlich akustischer, Sprach- oder taktiler Eingabe. Darüber hinaus kann ein Computer über das Senden von Dokumenten an und das Empfangen von Dokumenten von einer Einrichtung, die vom Benutzer verwendet wird, mit einem Benutzer interagieren; beispielsweise über das Senden von Webpages an einen Webbrowser auf dem Clientgerät des Benutzers als Antwort auf die vom Webbrowser empfangenen Aufforderungen.
-
Ausführungsformen des in der vorliegenden Spezifikation beschriebenen Gegenstands können in einem Computersystem realisiert sein, das eine Backend-Komponente, z. B. einen Datenserver, oder eine Middleware-Komponente, z. B. einen Anwendungsserver, oder eine Frontend-Komponente, z. B. einen Client-Computer mit grafischer Benutzeroberfläche oder einen Webbrowser) beinhaltet, über die der Benutzer mit einer Realisierungsform des in der vorliegenden Spezifikation beschriebenen Gegenstands interagieren kann, oder eine beliebige Kombination aus einer oder mehreren derartigen Backend-, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, z. B. ein Kommunikationsnetz. Zu Beispielen für Kommunikationsnetze zählen ein lokales Netzwerk („LAN”), ein Fernnetzwerk („WAN”), eine netzübergreifende Verbindung (z. B. das Internet) und Peer-to-Peer-Netzwerke (z. B. Ad-Hoc Peer-to-Peer Netzwerke).
-
Das Computersystem kann Clients und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben. In einigen Ausführungsformen überträgt ein Server Daten (z. B. eine HTML-Seite) an ein Client-Gerät (z. B. zum Anzeigen von Daten auf und zum Empfangen von Benutzereingaben von einem Benutzer, der mit dem Client-Gerät interagiert). Am Client-Gerät erzeugte Daten (z. B. infolge der Benutzerinteraktion) können vom Client-Gerät am Server empfangen werden.
-
Obwohl die vorliegende Spezifikation viele konkrete Realisierungsdetails enthält, sollten diese nicht als Einschränkungen des Schutzbereichs beliebiger Erfindungen oder der Ansprüche ausgelegt werden, sondern vielmehr als Beschreibungen konkreter Merkmale bestimmter Ausführungsformen bestimmter Erfindungen. Bestimmte Merkmale, die in dieser Spezifikation im Kontext der unterschiedlichen Ausführungsformen beschrieben werden, können auch in Kombination in einer einzelnen Ausführungsform implementiert werden. Andererseits können verschiedene Merkmale, die im Kontext einer einzelnen Ausführungsform beschrieben werden, in mehreren Ausführungsformen oder in jeder geeigneten Unterkombination implementiert werden. Außerdem können ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden, auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar als eine Kombination beansprucht werden, und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden.
-
Ebenso sind Operationen Tätigkeiten in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, dies sollte aber nicht so verstanden werden, dass diese Operationen in der konkret dargestellten Reihenfolge oder der Reihe nach durchzuführen sind oder dass alle dargestellten Operationen durchzuführen sind, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und eine Parallelbearbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den oben beschriebenen Ausführungsformen nicht in allen Ausführungsformen erforderlich aufgefasst werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in ein einziges Softwareprodukt integriert oder zu mehreren Softwareprodukten verkapselt werden können.
-
Daher wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Weitere Ausführungsformen gehören zum Umfang der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen beschriebenen Handlungen in einer anderen Reihenfolge ausgeführt werden und dennoch erwünschte Ergebnisse erzielen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder aufeinanderfolgende Reihenfolge, um erwünschte Ergebnisse zu erzielen. Bei bestimmten Implementierungen können Multitasking und eine Parallelbearbeitung vorteilhaft sein.