Im Jahr 2018 beschloss ich, meine Freizeit zu nutzen, um bei der Modernisierung des Unternehmens eines Familienmitglieds zu helfen. Dabei wollte ich etwas Erfahrung und Verständnis für AWS gewinnen.
Letztendlich stellte ich fest, dass ich fast meine gesamte Freizeit damit verbrachte, Konzepte der AWS-Cloud-Infrastruktur zu lernen. Mir blieb nur ein kleiner Teil meiner Zeit, um mich auf die Entwicklung der modernen, Cloud-basierten Lösung zu konzentrieren, die mir ursprünglich vorschwebte. Als ich weitere Funktionsanfragen für die App plante, wurde mir klar, dass ich einen besseren Ansatz brauchte.
Anfang 2020 entdeckte ich Heroku. Da ich mich nicht um die zugrunde liegenden Cloud-Konfigurationen kümmern musste, konnte ich mich auf das Hinzufügen neuer Funktionen konzentrieren.
Für meinen einfachen Anwendungsfall hat sich das Heroku-Ökosystem hervorragend bewährt, aber ich begann, mich mit komplexeren Anwendungsfällen zu beschäftigen. Was ist mit dem Szenario, in dem eine Sammlung sicherer und privater Dienste für eine Zahlungsabwicklungslösung miteinander interagieren muss ?
Würde mich dieser Anwendungsfall dazu zwingen, im Ökosystem eines der drei großen Cloud-Service-Provider zu leben? Ich werde es herausfinden.
Mehrere Jahre lang hatte ich das Glück, in einem Umfeld zu arbeiten, in dem der DevOps- Lebenszyklus einen hohen Stellenwert hatte. Das DevOps-Team kümmerte sich für mich um alle Cloud-Angelegenheiten, sodass ich mich auf die Architektur und den Aufbau von Microservices konzentrieren konnte, um die Anforderungen meiner Kunden zu erfüllen.
Zu dieser Zeit meines Lebens war diese Umgebung die Ausnahme, nicht die Regel. Ich habe gerade in meinem Browser nach „Unternehmen ohne Kenntnisse über Cloud-Infrastrukturen“ gesucht und die Ergebnisse haben einige ziemlich überraschende Schlussfolgerungen geliefert:
Die Top-Suchergebnisse sprachen von mangelndem Verständnis der zentralen Cloud-Konzepte und der Notwendigkeit wichtiger Schulungen , damit Teams effektiv arbeiten können. Die Schulungen, die die meisten Teams benötigen, bleiben normalerweise auf der Strecke, da Kundenanforderungen und -leistungen höhere Priorität haben.
Mit diesem aktuellen Ansatz müssen die meisten Cloud-Implementierungen langsamer vorankommen und sind oft unbekannten Schwachstellen ausgesetzt.
Der aktuelle Stand der Sicherung Ihrer Microservices in der Cloud ist nicht erfreulich.
Der Idealzustand für Cloud-native-Lösungen würde einem persönlichen Leitbild entsprechen, das ich vor einigen Jahren aufgestellt habe:
„Konzentrieren Sie sich auf die Bereitstellung von Features/Funktionalitäten, die den Wert Ihres geistigen Eigentums steigern. Nutzen Sie Frameworks, Produkte und Services für alles andere.“
– J. Vester
In diesem Zusammenhang sollten diejenigen, die Cloud-native Lösungen vorantreiben möchten, in der Lage sein, in einem Tempo zu agieren, das mit den Unternehmenszielen im Einklang steht. Sie sollten sich nicht durch die Lernkurve bremsen lassen, die mit der zugrunde liegenden Cloud-Infrastruktur verbunden ist.
Wie sieht das also aus, wenn wir es mit einer Cloud-Lösung zu tun haben, die mehrere Microservices umfasst, die alle von der Öffentlichkeit isoliert sein und Compliance-Vorschriften (wie SOC, ISO, PCI oder HIPAA) einhalten müssen ?
Meine Heroku-Erfahrung im Jahr 2020 war positiv. Daher wollte ich sehen, wie es mit diesem komplexen Anwendungsfall funktioniert. Dabei entdeckte ich Private Spaces .
Private Spaces sind als Teil von Heroku Enterprise verfügbar. Dabei handelt es sich um dedizierte Umgebungen zum Ausführen von Microservices in einem isolierten Netzwerk. Mit diesem Ansatz können Teams ihre Dienste in einem Netzwerk bereitstellen, das nicht dem öffentlichen Internet ausgesetzt ist. Unter der Haube funktionieren diese Dienste genauso wie in meinem grundlegenden Anwendungsfall. Ich kann sie über die Heroku-CLI einrichten und einfache Git-basierte Befehle können Bereitstellungen auslösen.
Zur Einhaltung gesetzlicher Vorschriften kann ich mich auf Heroku Shield verlassen, das mir bei der Einhaltung von PCI DSS, HIPAA, ISO (27001, 27017 und 27018) und SOC (1, 2 und 3) hilft.
Auf einer hohen Ebene ermöglicht mir Heroku die Implementierung eines sicheren Cloud-nativen Designs, das wie folgt veranschaulicht werden kann:
Hier haben wir eine Implementierung, die Heroku Shield in einem privaten Bereich nutzt. Dies ermöglicht einer Sammlung von Microservices – die mehrere verschiedene Programmiersprachen verwenden – die Interaktion mit allen wichtigen primären und sekundären Kartennetzwerken und erfüllt dabei verschiedene gesetzliche Compliance-Anforderungen. Darüber hinaus erhalte ich eine sichere Kommunikation mit der Salesforce-Plattform und GitLab.
Mithilfe der Heroku CLI kann ich meinen Private Space und Heroku Shield zum Laufen bringen. In Heroku wird dies als Shield Private Space bezeichnet. Hier sind einige allgemeine Beispiele, um den Prozess durchzuarbeiten.
Um einen neuen privaten Shield-Bereich zu erstellen, verwenden wir spaces:create
und fügen die Option --shield
hinzu.
$ heroku spaces:create payment-network --shield --team payments-team --region oregon Creating space payment-network in team payments-team... done === payment-network Team: payments-team Region: oregon State: allocating
Wenn der Anwendungsfall CIDR-Bereiche (Classless Inter-Domain Routing) erfordert, kann ich die Flags --cidr
und --data-cidr
verwenden.
Sie werden feststellen, dass ich meinen Private Space in der Region Oregon erstellt habe. Sie können einen Private Space in einer von 10 verfügbaren Regionen erstellen (in den USA, Europa, Asien und Australien). Gehen Sie wie folgt vor, um eine Liste der verfügbaren Regionen anzuzeigen:
$ heroku regions ID Location Runtime ───────── ─────────────────────── ────────────── eu Europe Common Runtime us United States Common Runtime dublin Dublin, Ireland Private Spaces frankfurt Frankfurt, Germany Private Spaces london London, United Kingdom Private Spaces montreal Montreal, Canada Private Spaces mumbai Mumbai, India Private Spaces oregon Oregon, United States Private Spaces singapore Singapore Private Spaces sydney Sydney, Australia Private Spaces tokyo Tokyo, Japan Private Spaces virginia Virginia, United States Private Spaces
Für jeden Microservice, der im Private Space des payment-network
ausgeführt werden muss, füge ich beim Ausführen des Befehls apps:create
einfach die Option --space
hinzu:
$ heroku apps:create clearing-service --space payment-network Creating app... done, clearing-service
Um Verbrauchern Zugriff auf den payment-network
zu gewähren, kann ich die Zulassungsliste vertrauenswürdiger IPs verwalten:
$ heroku trusted-ips:add 192.0.2.128/26 --space payment-network Added 192.0.2.128/26 to trusted IP ranges on payment-network ▸ WARNING: It may take a few moments for the changes to take effect.
Teams erhalten oft von oben die Anweisung, einen Cloud-nativen Ansatz zu verfolgen. Viele Teams haben jedoch erhebliche Wissenslücken, wenn es um die Bereitstellung sicherer Cloud-Architekturen geht. Wenn Sie einen der drei großen Cloud-Anbieter verwenden, hat das Schließen dieser Lücke seinen Preis – wahrscheinlich werden die vom Produktbesitzer erwarteten Zeitpläne nicht eingehalten.
Gibt es eine bessere Option für eine sichere Cloud-Bereitstellung? Ich denke, Private Spaces in Kombination mit Heroku Shield stellt diese bessere Option dar. Für mich persönlich ist auch wichtig, dass Heroku Teil der Lösungsplattform von Salesforce ist, das sich seit jeher der Bereitstellung einer Cloud-Einführungsalternative verschrieben hat, die auf den Erfolg seiner Kunden ausgerichtet ist. Daher hatte ich das Gefühl, dass dies eine langfristige Strategie ist, die in Betracht gezogen werden sollte.
Habt einen richtig schönen Tag!