Datenverschlüsselung im virtuellen Rechenzentrum in der Public Cloud
Hallo,
Wir betreiben Webapplikationen, die Dienste für Kunden bereitstellen, die schützenswerte Daten verarbeiten und speichern. Die Webapplikationen sind vorwiegend Eigenentwicklungen, die über die Jahre gewachsen sind.
Diese sollen nun als virtuelles Rechenzentrum in die Cloud verlagert werden.
Da stellt sich nun für mich erstmals die Frage, wie man schützenswerte Daten (der Kunden, aber auch unseren Source Code) da so verschlüsselt, dass sie vor eventuellem Fremdzugriff sicher sind und dass der Betrieb soweit praktikabel ist.
Die Daten sind in MS SQL und MySQL Datenbanken gespeichert, als Dokumentspeicher soll soll ein S3 Objektspeicher des Cloud-Anbieters genutzt werden, der Source Code liegt üblicherweise am Laufwerk in den Webroots, in SVN und Git.
Mit Ausnahme des S3 sollen vorerst keine Cloud-Services genutzt werden. Alles andere soll in eigenen VMs, auf Windows und Linux eingerichtet werden.
Für den Storage hätten wir die Datenverschlüsselung abgeklärt. Es geht mir jetzt um die Datenbanken, um VM-Datenträger und um die Code-Repositories.
Bei der Recherche kommt man schnell auf die Datenträger Verschlüsselung. Mit dieser wäre meiner Ansicht doch auch gleich die Verschlüsselung der Datenbanken und Repositories ausreichend abgedeckt, wenn die auf einem verschlüsselten Datenträger gespeichert sind. Aber vielleicht bedenke ich da jetzt nicht alles.
Jedoch ist da offenbar das noch typische Szenario, dass man beim Booten den Key eingeben muss, was ich mir als ungeeignet für den gedachten Betrieb in der Cloud erscheint, zumal da auch keine wirklich tolle Konsole zur Verfügung steht.
Gibt es da einen besseren Ansatz.
Ein Gedanke war da, eine eigene Key Wallet zu betreiben, bei welcher man etwa zwar erstmal beim Starten den Key eingeben müsste, die anderen VM könnten sich aber dann von da die Keys ziehen.
Der Provider bietet nichts derartiges an. Auch würde ich bei einem Provider-Service die Sinnhaftigkeit in Frage stellen.
Die Systempartion müsste meiner Meinung nicht verschlüsselt werden. Da gibt es vielleicht aber andere Ansichten.
So könnte man vielleicht die Schlüssel irgendwie doch verschlüsselt auf der Systemplatte ablegen?
Ich wäre dankbar, wenn mich jemand bei diesem Thema in die richtige Richtung lenken könnte.
VG
Wir betreiben Webapplikationen, die Dienste für Kunden bereitstellen, die schützenswerte Daten verarbeiten und speichern. Die Webapplikationen sind vorwiegend Eigenentwicklungen, die über die Jahre gewachsen sind.
Diese sollen nun als virtuelles Rechenzentrum in die Cloud verlagert werden.
Da stellt sich nun für mich erstmals die Frage, wie man schützenswerte Daten (der Kunden, aber auch unseren Source Code) da so verschlüsselt, dass sie vor eventuellem Fremdzugriff sicher sind und dass der Betrieb soweit praktikabel ist.
Die Daten sind in MS SQL und MySQL Datenbanken gespeichert, als Dokumentspeicher soll soll ein S3 Objektspeicher des Cloud-Anbieters genutzt werden, der Source Code liegt üblicherweise am Laufwerk in den Webroots, in SVN und Git.
Mit Ausnahme des S3 sollen vorerst keine Cloud-Services genutzt werden. Alles andere soll in eigenen VMs, auf Windows und Linux eingerichtet werden.
Für den Storage hätten wir die Datenverschlüsselung abgeklärt. Es geht mir jetzt um die Datenbanken, um VM-Datenträger und um die Code-Repositories.
Bei der Recherche kommt man schnell auf die Datenträger Verschlüsselung. Mit dieser wäre meiner Ansicht doch auch gleich die Verschlüsselung der Datenbanken und Repositories ausreichend abgedeckt, wenn die auf einem verschlüsselten Datenträger gespeichert sind. Aber vielleicht bedenke ich da jetzt nicht alles.
Jedoch ist da offenbar das noch typische Szenario, dass man beim Booten den Key eingeben muss, was ich mir als ungeeignet für den gedachten Betrieb in der Cloud erscheint, zumal da auch keine wirklich tolle Konsole zur Verfügung steht.
Gibt es da einen besseren Ansatz.
Ein Gedanke war da, eine eigene Key Wallet zu betreiben, bei welcher man etwa zwar erstmal beim Starten den Key eingeben müsste, die anderen VM könnten sich aber dann von da die Keys ziehen.
Der Provider bietet nichts derartiges an. Auch würde ich bei einem Provider-Service die Sinnhaftigkeit in Frage stellen.
Die Systempartion müsste meiner Meinung nicht verschlüsselt werden. Da gibt es vielleicht aber andere Ansichten.
So könnte man vielleicht die Schlüssel irgendwie doch verschlüsselt auf der Systemplatte ablegen?
Ich wäre dankbar, wenn mich jemand bei diesem Thema in die richtige Richtung lenken könnte.
VG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 92854889592
Url: https://administrator.de/contentid/92854889592
Ausgedruckt am: 03.12.2024 um 17:12 Uhr
9 Kommentare
Neuester Kommentar
Hallo,
muss es denn zwingend eine Public Cloud sein? Ich gehe davon aus, dass ihr es aufgrund der Anbindung auslagern wollt. Ggf. ist ja aber auch eine CoLocation mit eigener Hardware eine Variante.
Leider sagst du nichts über den eingesetzten HyperVisor.
Falls VMware eingesetzt wird, so gibt es die Lektüre hier Verschlüsselung von Virtuellen Maschinen
muss es denn zwingend eine Public Cloud sein? Ich gehe davon aus, dass ihr es aufgrund der Anbindung auslagern wollt. Ggf. ist ja aber auch eine CoLocation mit eigener Hardware eine Variante.
Leider sagst du nichts über den eingesetzten HyperVisor.
Falls VMware eingesetzt wird, so gibt es die Lektüre hier Verschlüsselung von Virtuellen Maschinen
Hallo,
die Verschlüsselung kann natürlich nicht dazu dienen, Daten vor dem Zugriff des Cloudproviders zu schützen (es geht um die Nutzung von dessen Sicherheitsorganisation/-segmentierung und kryptografische Datenentfernung).
Erwartet wird in dem Zusammenhang entweder Datenträgerverschlüsselung oder Datenbankverschlüsselung/TDE (oder beides). Ein Schritt weiter wäre anwendungsbasierte Verschlüsselung, die dann dem SaaS-Kunden BYOK etc. erlaubt - mit entsprechendem Entwicklungsaufwand.
Datenträgerverschlüsselung muss auf alle Volumes einer VM angewandt werden. Ich würde auch darüber nachdenken, sie auf der gesamten Infrastruktur zu nutzen. Bei den Anbietern aus dem kapitalistischen Ausland hast du vernünftige Schlüsselverwaltungsinstrumente wie Azure Key Vaults. Man kann im schlechtesten Fall auch mit Schlüsseleingabe über VNC-Konsole und ansonsten automatisierten temporären Boot-Schlüsseln leben, aber ein Restrisiko (für die Verfügbarkeit) bleibt.
Grüße
Richard
die Verschlüsselung kann natürlich nicht dazu dienen, Daten vor dem Zugriff des Cloudproviders zu schützen (es geht um die Nutzung von dessen Sicherheitsorganisation/-segmentierung und kryptografische Datenentfernung).
Erwartet wird in dem Zusammenhang entweder Datenträgerverschlüsselung oder Datenbankverschlüsselung/TDE (oder beides). Ein Schritt weiter wäre anwendungsbasierte Verschlüsselung, die dann dem SaaS-Kunden BYOK etc. erlaubt - mit entsprechendem Entwicklungsaufwand.
Datenträgerverschlüsselung muss auf alle Volumes einer VM angewandt werden. Ich würde auch darüber nachdenken, sie auf der gesamten Infrastruktur zu nutzen. Bei den Anbietern aus dem kapitalistischen Ausland hast du vernünftige Schlüsselverwaltungsinstrumente wie Azure Key Vaults. Man kann im schlechtesten Fall auch mit Schlüsseleingabe über VNC-Konsole und ansonsten automatisierten temporären Boot-Schlüsseln leben, aber ein Restrisiko (für die Verfügbarkeit) bleibt.
Grüße
Richard
Jedoch ist da offenbar das noch typische Szenario, dass man beim Booten den Key eingeben muss, was ich mir als ungeeignet für den gedachten Betrieb in der Cloud erscheint, zumal da auch keine wirklich tolle Konsole zur Verfügung steht.
Clevis in Verbindung mit einem Tang Server ermöglicht eine automatische und sichere Entsperrung von Datenträgern beim Boot übers Netzwerk.
Configuring automated unlocking of encrypted volumes by using policy-based decryption
Gruß schrick
Moin,
was du suchst ist "confidential computing" - das gibt es bei einigen cloud-providern schon (bspw. AWS https://aws.amazon.com/de/blogs/security/confidential-computing-an-aws-p ..).
Alles andere erhöht nur ein wenig die Sicherheit, mindestens aber der cloud-provider hat weiterhin Zugriff auf die Daten, wenn er möchte. Anhand deiner Formulierung lässt sich aber erraten, dass selbst das schon ein Fortschritt für euch wäre.
Bevor ihr Datenbanken selbst betreibt macht es Sinn einmal zu prüfen, ob euer ORM denn nicht einfach die Daten verschlüsseln kann, bevor er sie in die DB schreibt - dann die DB as service holen und die Sorgen sind verkauft. Euer Framework (Spring?) wird ja sowieso schon genutzt um verschlüsselt auf S3-kompatiblem Speicher zu speichern, dann wäre der nächste Schritt nur konsequent. Gepaart mit confidential VMs hat dann - erstmal - niemand außer euch Zugriff auf die Daten.
Ein key-wallet (aka secrets manager, aka vault) verschiebt die credentials nur woanders hin und du speicherst halt credentials, um credentials zu holen, auf deinen VMs. Ja, macht man heute so, ist aber auch nur eine weitere Hürde für potentielle Angreifer.
Last but not least - wenn Container interessant sind dann wäre confidential kubernetes sicherlich sehr spannend - da werden dann auch gleich die volumes verschlüsselt; das setzen wir bei einem hochkritischen Kundenprojekt (öffentliche Hand) ein (as service in der cloud).
Viele Grüße, Flo
was du suchst ist "confidential computing" - das gibt es bei einigen cloud-providern schon (bspw. AWS https://aws.amazon.com/de/blogs/security/confidential-computing-an-aws-p ..).
Alles andere erhöht nur ein wenig die Sicherheit, mindestens aber der cloud-provider hat weiterhin Zugriff auf die Daten, wenn er möchte. Anhand deiner Formulierung lässt sich aber erraten, dass selbst das schon ein Fortschritt für euch wäre.
Bevor ihr Datenbanken selbst betreibt macht es Sinn einmal zu prüfen, ob euer ORM denn nicht einfach die Daten verschlüsseln kann, bevor er sie in die DB schreibt - dann die DB as service holen und die Sorgen sind verkauft. Euer Framework (Spring?) wird ja sowieso schon genutzt um verschlüsselt auf S3-kompatiblem Speicher zu speichern, dann wäre der nächste Schritt nur konsequent. Gepaart mit confidential VMs hat dann - erstmal - niemand außer euch Zugriff auf die Daten.
Ein key-wallet (aka secrets manager, aka vault) verschiebt die credentials nur woanders hin und du speicherst halt credentials, um credentials zu holen, auf deinen VMs. Ja, macht man heute so, ist aber auch nur eine weitere Hürde für potentielle Angreifer.
Last but not least - wenn Container interessant sind dann wäre confidential kubernetes sicherlich sehr spannend - da werden dann auch gleich die volumes verschlüsselt; das setzen wir bei einem hochkritischen Kundenprojekt (öffentliche Hand) ein (as service in der cloud).
Viele Grüße, Flo