-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft ein Verfahren zum Erstellen einer Container-Instanz in einer Container-Laufzeitumgebung auf einem Gerät, ein zugehöriges Computerprogrammprodukt und ein zugehöriges computerlesbares Medium.
-
Beschreibung des Stands der Technik
-
Eine Software kann abhängig von Lizenzen verschiedene Merkmale und Anwendungen unterstützen. Diese Lizenzen können auch aufeinander aufbauen. Beispielsweise werden mit einer günstigsten Lizenz einem Kunden Basisfeatures zur Verfügung gestellt, weitere aufeinander aufbauende Funktionalitäten wie z.B. bessere grafische Ausarbeitungen werden mit einer erweiterten Lizenz bei gleichbleibender Applikation zugeschaltet. Ein solches Verfahren wird beispielsweise in Betriebssystemen für Firewalls angewandt und ist im Speziellen auch für containerbasierte IoT-Geräte interessant.
-
Wird die Software in einem Container bereitgestellt, erfolgt die Übergabe der Software in einem Container-Image, welches in einem standardisierten Format ausgeliefert wird. Container-Images, welche dem Standard folgen sind schichtbasiert (layer-based) und bauen aufeinander auf. Schichtbasiert oder auch als „Layer-basiert“ bezeichenbar, bedeutet in diesem Kontext, dass jede Operation (z.B. Hinzufüge einer Datei, Installieren eines Pakets), die auf einem Container-Image bei dessen Bauen angewandt wird, durch einen eigenen Layer im Container-Dateisystem repräsentiert wird. Hierdurch besteht die Möglichkeit, dass ein Container-Image nicht komplett gestartet/ausgeführt werden muss, sondern bei einem Start nur eine Teilmenge, der auf das Image angewandten Operationen, verwendet wird. Dies wird erreicht, indem bei einem Container-Image nur die ersten X Layer gestartet werden und die letzten/folgenden Y Operationen auf dem Container-Image ausgelassen werden. Starten eines Container-(Teil-)Images bedeutet in diesem Kontext, dass eine Container-Instanz gestartet wird, dessen Dateisystem das besagte Container-(Teil-)Image ist. Die Container-Instanz sieht somit nur die in dem (Teil-)Image enthaltenen Dateien und nicht das vollständige Image.
-
Wird Software in einer Container- Instanz bereitgestellt, muss diese die Lizenz, auch als Lizenzierung bezeichenbar, wie im nicht-containerisierten Umfeld innerhalb der Container-Instanz auswerten. Folglich muss die für die Lizenzierung erforderliche Information im Container-Image selbst zur Verfügung gestellt werden oder über Lizenzserver bezogen werden. Problem ist hierbei, dass Container-Instanzen ohne zusätzliche Maßnahmen nicht an die darunterliegende Hardware gebunden sind und somit das Thema Lizenzierung innerhalb einer Container-Instanz nicht die unberechtigte Benutzung auf nicht lizenzierter Hardware berücksichtigt.
-
Alternativ können containerisierte Anwendungen ebenfalls lizenziert werden, indem Hardware-spezifische Informationen der darunterliegenden Laufzeitumgebung über Umgebungsvariablen an die Container-Instanzen durchgereicht und von der Applikation ausgewertet werden, oder Applikationen Zugriff auf Hardware-spezifische Schnittstellen zum Verifizieren einer Lizenzierung innerhalb der Container-Instanz zur Verfügung gestellt werden.
-
Allgemein sind unterschiedliche Ausprägungen einer Softwarelizenzierung bekannt. Die Verwendung einer Software, oder bestimmter Features, kann beispielsweise an ein Gerät (nodelocking), ein Benutzerkonto (user-based), oder an autorisierte Teilnehmer eines Netzwerks (floating license), gebunden werden. Lizenzen können dabei unter anderem zeitlich, sowie auf bestimmte Features oder eine begrenzte Zahl an Anwendern eingeschränkt werden.
-
Gängige Mechanismen zum Schutz von Software gegenüber unautorisiertem Kopieren, reverse Engineering, oder Verwendung von kostenpflichtigen Features, verschlüsseln oder instrumentieren die Software so, dass sie nur unter Bereitstellung einer gültigen Lizenzierung verwendet werden kann. Die Lizenzdatei kann dabei unter anderem lokal auf dem Gerät, einem Server, oder in einem Smartcard Chip gespeichert werden. Zum Schutz einzelner Features können beispielsweise die entsprechenden Funktionen individuell verschlüsselt werden, so dass die Verwendung nur mit einer gültigen Lizenzierung möglich ist.
-
Die Aufgabe der Erfindung besteht darin, eine Lösung zur Lizenzierung von Container-Instanzen bereitzustellen.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die Erfindung ergibt sich aus den Merkmalen der unabhängigen Ansprüche. Vorteilhafte Weiterbildungen und Ausgestaltungen sind Gegenstand der abhängigen Ansprüche. Ausgestaltungen, Anwendungsmöglichkeiten und Vorteile der Erfindung ergeben sich aus der nachfolgenden Beschreibung und den Zeichnungen.
-
Die Erfindung betrifft ein Verfahren zum Erstellen einer Container-Instanz in einer Container-Laufzeitumgebung auf einem Gerät. Das Verfahren beinhaltet die Schritte:
- - Laden eines Container-Images in die Container-Laufzeitumgebung, wobei das Container-Image mindestens eine erste Schicht und mindestens eine zweite Schicht aufweist, wobei die mindestens eine zweite Schicht auf die mindestens eine erste Schicht aufbaut,
- - Laden einer Lizenzierungskomponente in die Container-Laufzeitumgebung, wobei die Lizenzierungskomponente eine gerätespezifische Bindung zu dem Gerät aufweist,
- - Laden einer Lizenzinformation in die Container-Laufzeitumgebung, wobei die Lizenzinformation erste gerätespezifische Daten zu dem Gerät aufweist, und wobei die Lizenzinformation erste schichtspezifische Daten aufweist, wobei die ersten schichtspezifischen Daten eine Lizenzierung der mindestens einen zweite Schicht beinhalten,
- - Spezifizieren zweiter schichtspezifischer Daten, wobei die zweiten schichtspezifischen Daten auf die mindestens eine erste Schicht und die mindestens eine zweite Schicht Bezug nehmen,
- - Laden zweiter gerätespezifische Daten zu dem Gerät durch die Lizenzierungskomponente,
- - Abgleichen der ersten gerätespezifischen Daten mit den zweiten gerätespezifischen Daten durch die Lizenzierungskomponente,
- - Abgleichen der ersten schichtspezifischen Daten mit den zweiten schichtspezifischen Daten durch die Lizenzierungskomponente und
- - Erstellen der Container-Instanz durch Ausführen der mindestens einen ersten Schicht und der mindestens einen zweiten Schicht des Container-Images.
-
Ein Aspekt der Erfindung besteht darin, ein Verfahren bereitzustellen, welches ein schrittweises Freischalten lizenzierungspflichtiger Merkmale in einer Container-Instanz ermöglicht und welches ein Starten nicht lizenzierter Schichten eines Container-Images verhindert.
-
Ein Container-Image wird generell in einem standardisierten Format ausgeliefert. Container-Images beinhalten in diesem standardisierten Format mehrere Schichten, das heißt sie sind schichtbasiert und bauen aufeinander auf. Schichtbasiert oder auch als „Layer-basiert“ bezeichenbar, bedeutet in diesem Kontext, dass jede Operation (z.B. Hinzufügen einer Datei, Installieren eines Pakets), die auf einem Container-Image bei dessen Bauen angewandt wird, durch einen eigenen Layer im Container-Dateisystem repräsentiert wird. Hierdurch besteht die Möglichkeit, dass ein Container-Image nicht komplett gestartet/ausgeführt werden muss, sondern bei einem Start nur eine Teilmenge, der auf das Image angewandten Operationen, verwendet wird. Dies wird erreicht, indem bei einem Container-Image nur die ersten X Layer gestartet werden und die letzten/folgenden Y Operationen auf dem Container-Image ausgelassen werden.
-
In der mindestens einen ersten Schicht sowie in der mindestens einen zweiten Schicht des Container-Images können jeweils mehrere Schichten enthalten sein. Die ersten Schichten (mindestens eine erste Schicht) kann unverschlüsselt sein oder verschlüsselt sein. Die weiteren Schichten (mindestens eine zweite Schicht) ist verschlüsselt. Auf die mindestens eine erste Schicht können wiederrum Schichten aufbauen (insbesondere mindestens eine dritte Schicht), diese können verschlüsselt oder unverschlüsselt sein.
-
Die Lizenzierungskomponente kann auch als Lizenzierungssoftware bezeichnet werden. Die Lizenzierungskomponente kann von einem Geber der Lizenzinformation und/oder Geber des Container-Images bereitgestellt werden. Die Lizenzierungskomponente ist an das Gerät gebunden, insbesondere durch eine hardware-spezifische Bindung. Die hardware-spezifische Bindung führt dazu, dass die Lizenzierungskomponente nur auf dem Gerät verwendbar ist, für welche sie spezifiziert ist.
-
Die Lizenzinformation kann auch als Lizenzdatei bezeichnet werden. Die Lizenzierung kann auch als Lizenz bezeichnet werden. Durch die ersten gerätespezifischen Daten spezifiziert die Lizenzinformation für welches Gerät sie bestimmt ist, d.h. für welches Gerät sie lizensiert. Durch die ersten schichtspezifischen Daten spezifiziert die Lizenzinformation für welche Schichten des Container-Images sie lizensiert. Da zumindest die mindestens eine zweite Schicht verschlüsselt ist, lizensiert die Lizenzinformation zumindest die mindestens eine zweite Schicht durch die ersten schichtspezifischen Daten. Falls auch die mindestens eine erste Schicht verschlüsselt ist, beziehen sich die ersten schichtspezifischen Daten auch auf die mindestens eine erste Schicht. Die Lizenzinformation kann in der Container-Laufzeitumgebung, auf dem Gerät, in einer Applikation und/oder auf einem Server hinterleget sein.
-
Die zweiten schichtspezifischen Daten können insbesondere nach Verarbeiten einer Benutzereingabe spezifiziert werden. Die Benutzereingabe kann eine Auswahl einer Schicht (insbesondere die mindestens eine erste Schicht oder die mindestens eine zweite Schicht) des Container-Images enthalten, welche ausgeführt werden soll. Wird eine Schicht ausgewählt, so soll diese Schicht und alle ihr vorangegangenen Schichten ausgeführt werden. Anschließend wird die Benutzereingabe vom Verfahren in den zweiten schichtspezifischen Daten spezifiziert.
-
Die Lizenzierungskomponente lädt zweite gerätespezifische Daten zu dem Gerät. Die zweiten gerätespezifischen Daten enthalten Daten dazu, auf welchem Gerät die Schichten des Container-Images ausgeführt werden soll und/oder auf welchem Gerät die Lizenzierungskomponente läuft. So kann die Lizenzierungskomponente durch das Abgleichen der ersten gerätespezifischen Daten (enthalten in der Lizenzinformation) mit den zweiten gerätespezifischen Daten feststellen, ob das Gerät lizensiert ist. Die ersten gerätespezifischen Daten beinhalten insbesondere eine maximale Anzahl an Container-Instanzen, welche erstellt und/oder laufen dürfen und/oder Laufzeitparameter für das Gerät (z.B. CPU-ID).
-
Außerdem führt die Lizenzierungskomponente ein Abgleichen der ersten schichtspezifischen Daten (enthalten in der Lizenzinformation) mit den zweiten schichtspezifischen Daten (durch Verarbeiten einer Benutzereingabe spezifiziert) durch. So kann festgestellt werden, ob für die insbesondere von einem Benutzer ausgewählten Schichten eine gültige Lizenzierung vorliegt.
-
Anschließend wird ein Erstellen der Container-Instanz durch Ausführen der mindestens einen ersten Schicht und der mindestens einen zweiten Schicht des Container-Images durch geführt. Dieser Schritt kann abhängig von Ergebnissen des Abgleichens der ersten gerätespezifischen Daten (enthalten in der Lizenzinformation) mit den zweiten gerätespezifischen Daten und/oder des Abgleichens der ersten schichtspezifischen Daten (enthalten in der Lizenzinformation) mit den zweiten schichtspezifischen Daten (durch Verarbeiten einer Benutzereingabe spezifiziert) durchgeführt werden. Insbesondere kann das Erstellen der Container-Instanz auch durchgeführt werden, wenn keine gültige Lizenzierung vorliegt, eine gültige Lizenzierung bereitgestellt werden und insbesondere eine Lizenzgebühr anschließend erhoben werden.
-
Die Erfindung bietet den Vorteil, dass zusätzliche Merkmale und Anwendungen der in der Container-Instanz befindlichen Software direkt durch Einspielen einer (neuen) Lizenzinformation auf dem darunterliegenden System, insbesondere Gerät, freigeschaltet werden können. Das hat den Vorteil, dass keine Neuerstellung eines weiteren Container-Images erforderlich ist, welches die für den Kunden ausgestellte Lizenzinformation enthält.
-
Die Erfindung bietet den weiteren Vorteil, dass unabhängig von freigeschalteten Merkmalen und Anwendungen immer das gleiche Container-Image an jeden Kunden ausgeliefert werden kann. Ein Kompromiss ist hierbei allerdings, dass insbesondere die Lizenzierungskomponente und Container-Laufzeitumgebung vertrauenswürdig sein müssen.
-
Die Erfindung bietet den weiteren Vorteil, dass die Lizenzinformation auch im Container-Umfeld gerätespezifisch ausgestellt werden können. Das Kopieren der Lizenzinformation inklusive entsprechendem Container-Image von dem Gerät auf ein anderes Gerät, dessen Lizenzierungskomponente und Container-Laufzeitumgebung nicht modifiziert wurde, wird somit verhindert.
-
Die Erfindung bietet den weiteren Vorteil, dass, da bestimmte Geräte für das Ausführen einer Applikation der Container-Instanz autorisiert werden können, können Container-Instanzen nicht kopiert werden und auf nicht-autorisierten Geräten laufen. Auch hier wird angenommen, dass insbesondere die Lizenzierungskomponente und Container-Laufzeitumgebung vertrauenswürdig sind.
-
Die Erfindung bietet den weiteren Vorteil, dass das im Container-Umfeld übliche Hoch- und Runterskalieren von Container-Instanzen durch das vorgeschlagene Verfahren auf lizenzierten Plattformen möglich ist. Das hat den Vorteil, dass auf variable Lasten reagiert werden kann.
-
Die Erfindung bietet den weiteren Vorteil, dass die ersten gerätespezifischen Daten (enthalten in der Lizenzinformation) in einer erweiterten Variante auch komplette Cluster von Geräten, auch als Gruppen von Geräten bezeichenbar, spezifizieren und lizensieren können. In diesem Fall bezieht sich die Lizenzinformation nicht nur auf ein Gerät, auf dem die Container-Instanz laufen soll, sondern auf den gesamten Cluster von Geräten. In diesem Fall können auch Cluster-weite Parameter (insbesondere Gesamtanzahl der Container-Instanzen über den gesamten Cluster) eingeschränkt werden.
-
In einer Weiterbildung der Erfindung weist die mindestens eine zweite Schicht eine Verschlüsselung auf. In einer weiteren Weiterbildung der Erfindung weist die mindestens eine erste Schicht eine Verschlüsselung auf. Eine Verschlüsselung der mindestens einen ersten Schicht und der mindestens einen zweiten Schicht hat den Vorteil, dass mindestens ein gesamter erster Teil des Container-Images verschlüsselt ist. Weisen die mindestens eine erste Schicht und/oder die mindestens eine zweite Schicht die Verschlüsselung auf, so beinhaltet in einer Weiterbildung der Erfindung der Schritt des Erstellens der Container-Instanz durch Ausführen der mindestens einen ersten Schicht und der mindestens einen zweiten Schicht des Container-Images ein Entschlüsseln der mindestens einen ersten Schicht und/oder der mindestens einen zweiten Schicht.
-
In einer Weiterbildung der Erfindung beinhalten die ersten schichtspezifischen Daten eine Lizenzierung der mindestens einen ersten Schicht. Das hat den Vorteil, dass zusätzlich zu der Lizenzierung der mindestens einen zweiten Schicht auch eine Lizenzierung der mindestens einen ersten Schicht vorliegt. Die Lizenzierung der mindestens einen ersten Schicht und die Lizenzierung der mindestens einen zweiten Schicht ermöglichen, dass die mindestens eine erste Schicht und die mindestens eine zweite Schicht des Container-Images ausgeführt werden kann und eine darauf basierende Container-Instanz erstellt werden kann.
-
In einer weiteren Weiterbildung der Erfindung weist die Lizenzinformation und/oder Schlüssel und/oder Zertifikate zum Validieren der Lizenzinformation und/oder die Lizenzierungskomponente und/oder das Container-Image eine kryptographische Signatur auf.
-
Dies hat den Vorteil, dass die Lizenzierungskomponente, sowie die zur Validierung der Lizenzinformation verwendeten öffentlichen Schlüssel und/oder Zertifikate integer und authentisch sind. Außerdem wird angenommen, dass insbesondere die Container-Laufzeitumgebung (Container-Runtime) integer und authentisch ist. Dies kann insbesondere durch Mechanismen wie Secure-Boot während dem Start des Gerätes verifiziert werden. Weiterhin kann die Integrität und Authentizität der Lizenzinformation und/oder Schlüssel und/oder Zertifikate zum Validieren der Lizenzinformation und/oder die Lizenzierungskomponente zur Laufzeit der Container-Instanz verifiziert werden (Runtime Health Check).
-
Es wird dabei angenommen und sichergestellt, dass die Lizenzierungskomponente, Container-Laufzeitumgebung, ein sicherer Speicher und öffentlicher Schlüssel des Lizenzgebers auf dem Gerät nicht manipuliert wurden.
-
In einer weiteren Weiterbildung der Erfindung weist das Verfahren den weiteren Schritt eines Validierens der Lizenzinformation durch die Lizenzierungskomponente auf. Die Lizenzierungskomponente validiert hierzu insbesondere mit Hilfe eines fest in der Software oder auf einem Dateisystem hinterlegten Zertifikats und/oder öffentlichen Schlüssels (analog zu X509-Root-CAs) die signierten Lizenzierungsinformationen (Lizenz).
-
Die im Container befindlichen Komponenten der Validierung (die zur Validierung der Lizenzierung und/oder der Lizenzinformation verwendeten öffentlichen Schlüssel und/oder Zertifikate) können entweder direkt in einer Applikation der Container-Instanz implementiert sein oder als von der Applikation eingebundene Bibliothek angesprochen werden.
-
In einer weiteren Weiterbildung der Erfindung weisen die ersten gerätespezifischen Daten und/oder die zweiten gerätespezifischen Daten eine Gerätekennung des Geräts und/oder eine Hardwareseriennummer des Geräts und/oder eine Chip-Identifizierkennung des Geräts und/oder Daten eines Trusted Platform Moduls (TPM) / vertrauenswürdigen Betriebssystemmoduls des Geräts und/oder Daten eines Hardwaresicherheitsmoduls (HSM) des Geräts auf. Das hat den Vorteil, dass durch die Lizenzierungskomponente, eine hardware-bezogene Lizenzprüfung/Prüfung der Lizenzierungsinformation durchführbar ist.
-
In einer weiteren Weiterbildung der Erfindung weist die Lizenzinformation eine Konfigurationsdatei auf, wobei die Konfigurationsdatei Lizenzierungsparameter spezifiziert. Die Lizenzierungsparameter beinhalten
- - mindestens eine erste Schichtkennung und/oder
- - mindestens ein Container-Tag (kurz: Tag), wobei das mindestens eine Container-Tag mit mindestens einer zweiten Schichtkennung verknüpft ist und/oder
- - einen Bezeichner des Container-Images und/oder
- - einen Arbeitsspeicherressourcenparameter und/oder
- - eine Anzahl an auf dem Gerät möglichen Container-Instanzen und/oder
- - einen Gültigkeitswert der Lizenzinformation und/oder
- - Parameter des Container-Images und/oder
- - Parameter des Gerätes.
-
Die erste Schichtkennung und/oder zweite Schichtkennung können auch als erste Schicht-ID und/oder zweite Schicht-ID bezeichnet werden. Die erste Schichtkennung und/oder zweite Schichtkennung haben den Vorteil, dass sie für eine Spezifikation der lizensierten Schichten verwendet werden können.
-
In einer alternativen Variante ist es möglich, dass die Lizenzierungskomponente statt der erlaubten Schichtkennung/Layer-ID ein mit der Schichtkennung/Layer-ID verknüpftes Tag validiert. Dies hat den Vorteil, dass die Lizenzinformation nicht für neue Versionen des Container-Images neu ausgestellt werden muss. Die Lizenzierungskomponente überprüft dann zusätzlich, ob das Container-Image von dem vorgesehenen Hersteller bereitgestellt wurde und die Signatur des Container-Images.
-
Die Erfindung bietet den weiteren Vorteil, dass die Lizenzierung in einer erweiterten Variante Tag-basiert erfolgen kann. Der Vorteil hiervon ist, dass Container-Images mit unterschiedlichen Schichtkennung/Layer-IDs (unterschiedliche Software-Versionen des gleichen Container-Images) an die gleiche Lizenz/Lizenzinformation gebunden werden können. Dies hat den Vorteil, dass die Lizenzinformation nicht für jede neue Version des Container-Images neu ausgestellt werden muss.
-
Der Bezeichner des Container-Images ist auch als Name des Container-Images bezeichenbar. Der Arbeitsspeicherressourcenparameter gibt insbesondere maximal zulässige RAM- oder CPU-Ressourcen für die Container-Instanz an. Die Parameter des Container-Images spezifizieren insbesondre weitere Parameter, die auf der Container-Laufzeitumgebung für das Container-Image beschränkt werden sollen. Die Parameter des Gerätes spezifizieren insbesondere gerätespezifische Merkmale, wie eine MAC-Adresse und/oder eine Seriennummer.
-
In einer weiteren Weiterbildung der Erfindung wird das Erstellen der Container-Instanz in Abhängigkeit von Ergebnissen des Abgleichens der ersten gerätespezifischen Daten mit den zweiten gerätespezifischen Daten durch die Lizenzierungskomponente und/oder des Abgleichens der ersten schichtspezifischen Daten mit den zweiten schichtspezifischen Daten durch die Lizenzierungskomponente durchgeführt. Das hat den Vorteil, dass falls keine gültige Lizenzinformation vorliegt, die Container-Instanz nicht gestartet/erstellt wird.
-
In einer weiteren Weiterbildung der Erfindung ist die Lizenzierungskomponente als Plugin in die Container-Laufzeitumgebung eingebunden und/oder in eine Bibliothek der Container-Laufzeitumgebung eingebunden und/oder als Daemon/Hintergrundprogramm in die Container-Laufzeitumgebung eingebunden. Das Hintergrundprogramm, insbesondere eigenständiger Daemon, kann beim Start der Container-Instanz von der Container-Laufzeitumgebung kontaktiert werden.
-
In einer weiteren Weiterbildung der Erfindung werden die Schritte des Abgleichens der ersten gerätespezifischen Daten mit den zweiten gerätespezifischen Daten durch die Lizenzierungskomponente und/oder des Abgleichens der ersten schichtspezifischen Daten mit den zweiten schichtspezifischen Daten durch die Lizenzierungskomponente nach dem Schritt des Erstellens der Container-Instanz periodisch und/oder eventgesteuert wiederholt.
-
Das hat den Vorteil, dass zur Laufzeit von der Lizenzierungskomponente überwacht wird, ob nicht-lizenzierte Container-Images, bzw. nicht-lizenzierte Konfigurationen (eine nicht-lizenzierte Auswahl an Layern/Schichten) von Container-Images auf der Plattform des Gerätes/in der Container-Laufzeitumgebung laufen bzw. Container-Instanzen vorhanden sind (laufende Container-Images sind Container-Instanzen). Diese Überprüfung kann stattfinden, indem auf dem Gerät ausschließlich Container-Instanzen mit entsprechend bekannten Container-Images erlaubt werden und nicht-bekannte Schichtkenner/Schichtkennungen/Layer-IDs gestoppt werden.
-
Die Erfindung bietet den weiteren Vorteil, dass kompromittierte Lizenzschlüssel zurückgezogen werden können.
-
Periodisch wiederholt bedeutet, dass die genannten Schritte des Abgleichens zu definierten Zeitpunkten, insbesondere zyklisch oder nach Ablauf bestimmter zeitlichen Perioden wiederholt werden. Eventgesteuert wiederholt bedeutet, dass die genannten Schritte des Abgleichens bei Eintreten definierter und/oder detektierter Events/Ereignisse wiederholt werden. Ein solches Event/Ereignis kann insbesondere das Aufrufen einer Applikation der Container-Instanz sein. Die Eventsteuerung kann insbesondere durch Interaktion mit der Container-Laufzeitumgebung oder mit Hilfe entsprechender eBPF-Programme umgesetzt werden.
-
In einer weiteren Weiterbildung der Erfindung wird der Container-Instanz, bei dem Erstellen der Container-Instanz, ein Datenelement, insbesondere ein Token und/oder ein Lizenzzertifikat, durch die Lizenzierungskomponente übergeben wird, wobei das Datenelement mit einem privaten Schlüssel eines Schlüsselpaares signiert ist, wobei das Datenelement einen ersten Zeitwert aufweist. Das hat den Vorteil, dass der erste Zeitwert mit einem zweiten Zeitwert des Erstellens der Container-Instanz verglichen werden kann. Der zweite Zeitwert des Erstellens der Container-Instanz kann insbesondere die Uptime der Container-Instanz und/oder den Zeitpunkt des Erstellens der Container-Instanz beinhalten.
-
In einer weiteren Weiterbildung der Erfindung wird der Container-Instanz, bei dem Erstellen der Container-Instanz, ein öffentlicher Schlüssel des Schlüsselpaares übergeben, wobei der öffentliche Schlüssel signiert ist. Das hat den Vorteil, dass überprüft werden kann, ob das Token auf einem bekannten / vertrauten Gerät oder System erstellt wurde. Damit kann herausgefunden werden kann, insbesondere von einer Applikation der Container-Instanz, ob das Token von einem lizenzierten / bekannten Gerät ausgestellt wurde, kann der Lizenzgeber - wie bei der Erstellung von X509-Zertifikaten - den öffentlichen Schlüssel des ausstellenden Gerätes signieren und beim Start/Erstellen der Container-Instanz als Laufzeitvariable injizieren. Der öffentliche Schlüssel (Vertrauensanker) des Lizenzgebers muss hierzu fest und modifikationssicher in der Applikation oder der Bibliothek hinterlegt sein oder von der Laufzeitumgebung injiziert werden (der Container-Instanz als Laufzeitvariable injiziert worden sein).
-
In einer weiteren Weiterbildung der Erfindung weist das Verfahren die folgenden weiteren Schritte auf:
- - Laden des Datenelements durch eine Applikation der Container-Instanz,
- - Laden eines zweiten Zeitwertes durch die Applikation, wobei der zweite Zeitwert einen Wert in Abhängigkeit des Erstellens der Container-Instanz angibt und
- - Vergleichen des ersten Zeitwerts mit dem zweiten Zeitwert durch die Applikation.
-
Der zweite Zeitwert gibt insbesondere den Zeitpunkt des Erstellens der Container-Instanz oder die bisherige Laufzeit, auch als Uptime bezeichenbar, der Container-Instanz an.
-
Die weiteren Schritte des Verfahrens haben den Vorteil, dass eine eigenständige Prüfung, ob eine gültige Lizenzierung vorliegt durch eine Applikation der Container-Instanz (Applikation, die in der Container-Instanz läuft; Applikation, die nach Ausführen des Container-Images in der Container-Instanz enthalten ist) durchgeführt werden kann. Diese Prüfung kann insbesondere durchgeführt werden, indem zum Start der Container-Instanz von der Lizenzierungskomponente über Laufzeitvariablen der Container-Instanz ein mit einem privaten (und entsprechend geschütztem) Geräteschlüssel signiertem Token, insbesondere Zeitstempel, übergeben wird. Durch den Zeitstempel kann die containerisierte Applikation erkennen, ob das Token gültig ist, indem sie prüft, ob der Zeitstempel identisch mit dem Startzeitpunkt/Zeitpunkt des Starts der Container-Instanz ist.
-
Das hat den Vorteil, dass wenn ein Vergleich mit der Laufzeit/Uptime der Container-Instanz mit dem Token/Zeitstempel durchgeführt werden kann und der Token genauso alt wie die Container-Instanz in der die Applikation läuft ist und somit die in diesem Abschnitt beschriebene Validierungskette verifiziert ist, die Applikation weiß, dass sie in einer Umgebung (Gerät) ausgeführt wird, die durch den Lizenzgeber autorisiert wurde.
-
Das hat außerdem den Vorteil, dass ein Abziehen/Kopieren des Dateisystems der Container-Instanz und ein Neuerstellen eines Container-Images mit dem gleichen Dateisystem nichts bringt, da der Lizenzcheck der Applikation in der Container-Instanz prüft, ob eine gültige Lizensierungsinformation vorhanden ist und/oder ob der erste Zeitwert zu dem zweiten Zeitwert passt.
-
In einer weiteren Weiterbildung der Erfindung weist das Verfahren außerdem ein Deaktivieren der Applikation und ein Deaktivieren der Container-Instanz. Das hat den Vorteil, dass falls die Validierung (Vergleichen des Tokens mit dem Zeitwert durch die Applikation) fehlschlägt, sich die Applikation und somit auch die Container-Instanz beendet und auf dem Gerät nur lizenzierte Applikationen und Container-Instanzen laufen.
-
Möchte der Lizenzgeber kompromittierte Lizenzen/Lizenzinformationen zurückziehen, ist das Vertrauen des Geräteschlüssels der Lizenzdatei über Listen analog zu Certificate Revocation Lists im X509-Umfeld gegenüber dem Lizenzgeber zu entziehen. Die Publikation der Liste kann er entweder über öffentlich zugängliche Listen (analog zu Certificate Revocation Lists) im Internet durchgeführt werden. Analog können in der Bibliothek selbst oder in der Applikation diese gesperrten Schlüssel hinterlegt werden.
-
In einer erweiterten Variante ist es möglich, dass die Lizenzierungskomponente, auch außerhalb des Gerätes, auf dem die Container-Instanzen laufen, betrieben wird. Eine Umsetzungsmöglichkeit bieten beispielsweise Kubernetes AdmissionController. Ein speziell entwickelter Lizenz-Admission-Controller müsste hierfür entwickelt werden. Möchte man die beschriebene Laufzeitüberprüfung durchführen, ist es jedoch erforderlich, dass auf den Geräten, auf denen die Container-Instanzen laufen, zusätzliche Komponenten laufen, die die Laufzeitüberprüfung vornehmen und gegebenenfalls nicht entsprechend lizenzierte Container-Instanzen stoppen. Eine Lizenzierung außerhalb des Gerätes wäre möglich, wenn die Lizenzierungskomponenten auf den Geräten sich den Token von der außerhalb des Gerätes befindlichen Lizenzierungskomponente signieren lassen.
-
Die Erfindung umfasst außerdem ein Computerprogrammprodukt, umfassend ein Computerprogramm, wobei das Computerprogramm in eine Speichereinrichtung einer Recheneinheit ladbar ist, wobei mit dem Computerprogramm die Schritte eines erfindungsgemäßen Verfahrens ausgeführt werden, wenn das Computerprogramm auf der Recheneinheit ausgeführt wird.
-
Die Erfindung umfasst außerdem ein computerlesbares Medium, auf welchem ein Computerprogramm gespeichert ist, wobei das Computerprogramm in eine Speichereinrichtung einer Recheneinheit ladbar ist, wobei mit dem Computerprogramm die Schritte eines erfindungsgemäßen Verfahrens ausgeführt werden, wenn das Computerprogramm auf der Recheneinheit ausgeführt wird.
-
Figurenliste
-
Die Besonderheiten und Vorteile der Erfindung werden aus den nachfolgenden Erläuterungen mehrerer Ausführungsbeispiele anhand der schematischen Zeichnungen ersichtlich.
-
Es zeigen
- 1 ein Ablaufdiagramm des erfindungsgemäßen Verfahrens,
- 2 eine schematische Darstellung erfindungsgemäßer Komponenten eines Erstellens einer Container-Instanz und
- 3 eine schematische Darstellung erfindungsgemäßer Komponenten eines Betreibens einer Container-Instanz.
-
DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
-
1 zeigt ein Ablaufdiagramm des Verfahrens zum Erstellen einer Container-Instanz 4 (dargestellt in 2) in einer Container-Laufzeitumgebung 1 (dargestellt in 2) auf einem Gerät 5 (dargestellt in 2). Das Verfahren weist folgende Schritte auf:
- - Schritt S1: Laden eines Container-Images in die Container-Laufzeitumgebung, wobei das Container-Image mindestens eine erste Schicht und mindestens eine zweite Schicht aufweist, wobei die mindestens eine zweite Schicht auf die mindestens eine erste Schicht aufbaut,
- - Schritt S2: Laden einer Lizenzierungskomponente 2 (dargestellt in 2) in die Container-Laufzeitumgebung 1, wobei die Lizenzierungskomponente 2 eine gerätespezifische Bindung zu dem Gerät 5 aufweist,
- - Schritt S3: Laden einer Lizenzinformation 3 (dargestellt in 2) in die Container-Laufzeitumgebung 1, wobei die Lizenzinformation 3 erste gerätespezifische Daten zu dem Gerät 5 aufweist, und wobei die Lizenzinformation 3 erste schichtspezifische Daten aufweist, wobei die ersten schichtspezifischen Daten eine Lizenzierung der mindestens einen zweiten Schicht beinhalten,
- - Schritt S4: Spezifizieren zweiter schichtspezifischer Daten, wobei die zweiten schichtspezifischen Daten auf die mindestens eine erste Schicht und die mindestens eine zweite Schicht Bezug nehmen,
- - Schritt S5: Laden zweiter gerätespezifischer Daten zu dem Gerät 5 durch die Lizenzierungskomponente 2,
- - Schritt S6: Abgleichen der ersten gerätespezifischen Daten mit den zweiten gerätespezifischen Daten durch die Lizenzierungskomponente 2,
- - Schritt S7: Abgleichen der ersten schichtspezifischen Daten mit den zweiten schichtspezifischen Daten durch die Lizenzierungskomponente 2 und
- - Schritt S8: Erstellen der Container-Instanz 4 durch Ausführen der mindestens einen ersten Schicht und der mindestens einen zweiten Schicht des Container-Images.
-
Im Rahmen von Schritt S8, dem Erstellen der Container-Instanz 4, wird der Container-Instanz 4 ein Token 8 (dargestellt in 3) durch die Lizenzierungskomponente 2 übergeben, wobei der Token 8 mit einem privaten Schlüssel 9b (dargestellt in 3) eines Schlüsselpaares 9 (dargestellt in 3) signiert ist.
-
Im Rahmen von Schritt S8, dem Erstellen der Container-Instanz 4, wird der Container-Instanz 4 ein öffentlicher Schlüssel 9a (dargestellt in 3) des Schlüsselpaares 9 übergeben, wobei der öffentliche Schlüssel 9a signiert ist.
-
Das Verfahren weist außerdem den Schritt S9, Validieren der Lizenzinformation durch die Lizenzierungskomponente 2, auf.
-
Die Schritte Schritt S6, Abgleichen der ersten gerätespezifischen Daten mit den zweiten gerätespezifischen Daten durch die Lizenzierungskomponente 2, und/oder Schritt S7, Abgleichen der ersten schichtspezifischen Daten mit den zweiten schichtspezifischen Daten durch die Lizenzierungskomponente 2, werden nach Schritt S8, Erstellens der Container-Instanz 4, in Schritt S10 periodisch und/oder eventgesteuert wiederholt.
-
2 zeigt Komponenten des Verfahrens zum Erstellen einer Container-Instanz 4 in einer Container-Laufzeitumgebung 1 auf einem Gerät 5.
-
Ein Container-Image ist in die Container-Laufzeitumgebunggeladen (S1). Das Container-Image weist mindestens eine erste Schicht und mindestens eine zweite Schicht auf. Die mindestens eine erste Schicht und die mindestens eine zweite Schicht weisen jeweils mehrere Schichten auf. So kann die mindestens eine erste Schicht insbesondere X Schichten aufweisen und die mindestens eine zweite Schicht insbesondere Y aufweisen. X und Y sind natürliche Zahlen. Es kann mindestens eine dritte Schicht auf die mindestens eine zweite Schicht folgen und aufbauen.
-
Die mindestens eine zweite Schicht baut auf die mindestens eine erste Schicht auf. Das bedeutet, dass die mindestens eine zweite Schicht nur ausgeführt werden kann, wenn auch die mindestens eine erste Schicht ausgeführt wird oder wurde.
-
Die mindestens eine zweite Schicht weist eine kryptographische Verschlüsselung auf. Das bedeutet, dass die mindestens eine zweite Schicht bevor sie ausgeführt werden kann, entschlüsselt werden muss.
-
Basierend auf einer Benutzeranfrage über ein Gerät wird ein Spezifizieren (S4) zweiter schichtspezifischer Daten durchgeführt. Ein Benutzer kann insbesondere die mindestens eine erste Schicht und die mindestens eine zweite Schicht des Container-Images ausführen wollen. Die zweiten schichtspezifischen Daten spezifizieren eine Menge an Schichten, die ein Benutzer ausführen will und nehmen auf die mindestens eine erste Schicht und die mindestens eine zweite Schicht Bezug.
-
Eine Lizenzierungskomponente 2 wird in die Container-Laufzeitumgebung 1 geladen (S2). Die Lizenzierungskomponente 2 weist eine gerätespezifische Bindung zu dem Gerät 5 auf. Das hat den Vorteil, dass die Lizenzierungskomponente 2 eine Hardware-spezifische Bindung zu dem Gerät 5 aufweist.
-
Außerdem wird eine Lizenzinformation 3 in die Container-Laufzeitumgebung 1 geladen (S3). Die Lizenzinformation 3 weist erste gerätespezifische Daten zu dem Gerät 5 auf. Die ersten gerätespezifischen Daten spezifizieren das Gerät 5, für welches die Lizenzinformation 3 gilt.
-
Die Lizenzinformation 3 weist außerdem erste schichtspezifische Daten auf. Die ersten schichtspezifischen Daten beinhalten eine Lizenzierung der mindestens einen zweiten Schicht. Die ersten schichtspezifische Daten spezifizieren die Schichten, für welche die Lizenzinformation 3 gilt.
-
Außerdem werden zweite gerätespezifische Daten zu dem Gerät 5 durch die Lizenzierungskomponente 2 geladen (S5). Die zweiten gerätespezifischen Daten geben insbesondere Information über das Gerät 5 der Container-Laufzeitumgebung.
-
In einem weiteren Schritt validiert die Lizenzierungskomponente 2 die Lizenzinformation 3 und Geräteschlüssel/Schlüssel 7 der Lizenzinformation 3. Dadurch wird überprüft, ob die Lizenzinformation 3 valide ist und von einem vertrauenswürdigen/bekannten Gerät ausgestellt wurde.
-
Anschließend findet ein Abgleichen (S6) der ersten gerätespezifischen Daten mit den zweiten gerätespezifischen Daten durch die Lizenzierungskomponente 2 und ein Abgleichen (S7) der ersten schichtspezifischen Daten mit den zweiten schichtspezifischen Daten durch die Lizenzierungskomponente 2 statt. So kann die Lizenzierungskomponente 2 feststellen, ob das Gerät lizensiert ist und ob für die insbesondere von dem Benutzer ausgewählten Schichten eine gültige Lizenzierung vorliegt.
-
Anschließend und insbesondere in Abhängigkeit von Ergebnissen 6 der vorherigen Schritte wird ein Erstellen (S8) der Container-Instanz 4 durch Ausführen der mindestens einen ersten Schicht und der mindestens einen zweiten Schicht des Container-Images durchgeführt.
-
Das Abgleichens (S6) der ersten gerätespezifischen Daten mit den zweiten gerätespezifischen Daten durch die Lizenzierungskomponente 2 und/oder das Abgleichen (S7) der ersten schichtspezifischen Daten mit den zweiten schichtspezifischen Daten durch die Lizenzierungskomponente 2 können nach dem Erstellen der Container-Instanz 4, zur Laufzeit der Container-Instanz 4, periodisch und/oder eventgesteuert wiederholt (S10) werden.
-
Das hat den Vorteil, dass zur Laufzeit von der Lizenzierungskomponente 2 überwacht wird, ob nicht-lizenzierte Container-Images, bzw. nicht-lizenzierte Konfigurationen (eine nicht-lizenzierte Auswahl an Layern/Schichten) von Container-Images auf der Plattform des Gerätes/in der Container-Laufzeitumgebung 1 laufen bzw. Container-Instanzen 4 vorhanden sind.
-
3 zeigt links ein Schlüsselpaar 9. Das Schlüsselpaar 9 wird insbesondere von einem Lizenzgeber bereitgestellt. Das Schlüsselpaar weist einen öffentlichen Schlüssel 9a und einen privaten Schlüssel 9b auf. Das Schlüsselpaar 9 wird signiert (Schritt S11) und insbesondere der private Schlüssel 9b in einem sicheren Schlüsselspeicher 11, insbesondere TPM, abgelegt.
-
Das Schlüsselpaar wird verwendet, um einen Token 8 mit dem privaten Schlüssel 9b des Schlüsselpaares 9 zu signieren. Der Token 8 ist insbesondere ein Zeitstempel. Der öffentliche Schlüssel 9a und das signierte Token 8 werden an eine Container-Laufzeitumgebung 1 weitergegeben. In der Container-Laufzeitumgebung 1 wird eine Container-Instanz 4 erstellt.
-
3 zeigt rechts die Container-Instanz 4. Der Container-Instanz 4 wurde bei dem Erstellen (S8) der Token 8 durch die Lizenzierungskomponente 2 (dargestellt in 2) übergeben. Der Container-Instanz 4 wurde bei dem Erstellen (S8) außerdem der öffentliche Schlüssel 9a des Schlüsselpaares 9 übergeben.
-
Die Container-Instanz 4 weist eine Applikation 10 auf. Die Applikation validiert den öffentliche Schlüssel 9a (hinterlegter Schlüssel des Lizenzgebers). Anschließend lädt die Applikation 10 das Token 8, welches der Container-Instanz 4 bei dem Erstellen (S8) übergeben wurde. Außerdem lädt die Applikation 10 einen Zeitwert, wobei der Zeitwert einen Wert in Abhängigkeit des Erstellens (S8) der Container-Instanz 4 angibt. Der Zeitwert gibt insbesondere an, wann die Container-Instanz 4 gestartet wurde und/oder wie lange die Container-Instanz 4 bereits läuft. Anschließend führt die Applikation ein Vergleichen des Tokens 8 mit dem Zeitwert durch.
-
In Abhängigkeit von Ergebnissen des Vergleichens des Tokens 8 mit dem Zeitwert kann die Applikation 10 und die Container-Instanz 4 weiter laufen/aktiv sein oder ein Deaktivieren der Applikation 10 und ein Deaktivieren der Container-Instanz 4 durchgeführt werden.
-
Obwohl die Erfindung im Detail durch die Ausführungsbeispiele näher illustriert und beschrieben wurde, ist die Erfindung durch die offenbarten Beispiele nicht eingeschränkt und andere Variationen können vom Fachmann daraus abgeleitet werden, ohne den Schutzumfang der Erfindung zu verlassen.
-
Bezugszeichenliste
-
- 1
- Container-Laufzeitumgebung
- 2
- Lizenzierungskomponente
- 3
- Lizenzinformation
- 4
- Container-Instanz
- 5
- Gerät
- 6
- Ergebnisse
- 7
- Geräteschlüssel/Schlüssel
- 8
- Tokens/Datenelement
- 9
- Schlüsselpaare
- 9a
- öffentlicher Schlüssel
- 9b
- privater Schlüssel