Vollständig automatisierte Bereitstellung von AWS-Konten auf Unternehmensebene über Self-Service mit Jira Service Desk
In diesem Artikel zeigen wir euch, wie wir die Bereitstellung von AWS-Konten über Self-Service mit Jira Service Desk automatisieren und so die Bereitstellungszeit für unsere AWS-Konten von 4 Stunden auf 25 Minuten reduzieren können.
Mit mehr als 5 Millionen Artikeln von über 7.000 Marken ist OTTO eine der führenden deutschen Online-Shopping-Plattformen. Im Rahmen der Transformation wird sich OTTO künftig für noch mehr Marken und Partner öffnen. OTTO ist Teil der international tätigen Otto Group mit Hauptsitz in Hamburg und beschäftigt deutschlandweit 6.100 Mitarbeiter. Im Geschäftsjahr 2020/21 erwirtschaftete OTTO einen Umsatz von 4,5 Milliarden Euro.
Bei OTTO standen wir bei der Einrichtung einer skalierbaren Umgebung mit mehreren Konten in AWS vor mehreren Herausforderungen. Wir müssen mehrere hundert AWS-Konten für unsere Produktteams verwalten und dabei den Spagat zwischen Flexibilität und Kontrolle schaffen. Bei dieser Größenordnung kann die Cloud-Einrichtung und -Verwaltung komplex und zeitaufwändig sein, das Onboarding von Produktteams und neuen Umgebungen muss beschleunigt werden, und manuelle Schritte sollten auf ein Minimum reduziert werden. All dies geschieht, um die Agilität zu erhöhen und die Fehlerquote zu senken, während gleichzeitig eine vollständige Integration in die Unternehmensumgebung über Genehmigungsprozesse mit SIEM-Integration erfolgt. SIEM (Security Information and Event Management) ist ein Bereich der Computersicherheit, der Produkte und Dienstleistungen für das Sicherheitsinformationsmanagement und das Sicherheitsereignismanagement umfasst.
Das Cloud-Kompetenzzentrum von OTTO IT, auch bekannt als das Governance at Scale (GAS)-Team, hat eine serverlose, selbstverwaltete Landing Zone entwickelt, die in das OTTO-Tooling-Ökosystem mit Jira Service Desk und Quest One Identity Manager integriert ist. Die Lösung ermöglicht es Produktteams, neue AWS-Konten über ein Self-Service-Portal in Jira Service Desk bereitzustellen, während das zentrale GAS-Team vorab genehmigte, gesicherte und verwaltete AWS-Konten bereitstellt, die den Unternehmensrichtlinien entsprechen. Die Integration mit Jira Service Desk ermöglicht es dem zentralen Team, Ressourcen und Konfigurationen zu verfolgen und den Compliance-Status zu überwachen sowie den Produktteams eine Dokumentation zur Verfügung zu stellen, um das Onboarding der Produktteams zu beschleunigen.
OTTO arbeitete mit globaldatanet zusammen, um seine Landing Zone einzurichten. globaldatanet ist ein preisgekrönter AWS Advanced Consulting Partner und langjähriger Cloud Solution Provider für OTTO und unterstützt das Team in den Bereichen Cloud-Sicherheit und GAS. Ihr Fokus auf den Aufbau von Cloud-nativen Lösungen unter Verwendung von Serverless hat innerhalb von 5 Jahren über 100 Unternehmen bei der Entwicklung und Innovation von Produkten und Dienstleistungen in der Cloud unterstützt.
Wie bereits erwähnt, zeigen wir, wie die Bereitstellung von AWS-Konten über Self-Service mit Jira Service Desk automatisiert werden kann, wodurch die Bereitstellungszeit für neue AWS-Konten von 4 Stunden auf 25 Minuten reduziert werden kann. Der Lösungsworkflow umfasst die folgenden Schritte:
Schauen wir uns an, wie das funktioniert.
Die folgenden Voraussetzungen sind notwendig , um den Inhalten dieses Beitrags zu folgen:
Die folgende Architektur zeigt die gesamte Lösung des Kontoverkaufsautomaten. In diesem Beitrag konzentrieren wir uns auf die Jira Service Desk-Integration, die grün hervorgehoben ist.
Wir haben uns gegen die Verwendung eines Plugins entschieden, um die Abhängigkeiten/Einschränkungen zu reduzieren, insbesondere mit dem Fokus auf Jira Cloud. Glücklicherweise bietet Jira alles, was wir brauchen, um unsere eigene Lösung zu entwickeln.
Anfragetyp
Mit Anfragetypen kann man eingehende Anfragen definieren und organisieren. Erstellt einen neuen Anfragetyp für die Anforderung neuer AWS-Konten. Um den Kunden die Suche zu erleichtern, erstellt zusätzlich eine Gruppe "Account Vending Machine", in der diese Anfragetypen organisiert werden.
Der Request Type basiert auf dem Issue Type "New Feature" und wird vom OTTO-Jira-Administrationsteam bereitgestellt. Der verwendete Workflow ist die Standardkonfiguration "open"=>"in progress"=>"in validation"=>"closed"-Konfiguration.
Beachtet dabei, dass ihr den Zugriff auf den Jira-Anfragetyp auf eine begrenzte Anzahl von Ressourcen beschränken sollten, die eine Geschäftsrolle in eurem Unternehmen haben, um die Beantragung neuer AWS-Konten zu ermöglichen.
Besonders in großen Umgebungen ist es für Jira-Administratoren ein zusätzlicher Aufwand, für jeden Anwendungsfall neue Felder zu erstellen. Wir haben dies umgangen, indem wir bestehende Felder wiederverwendet und einen "Anzeigenamen" gesetzt haben.
Nach der Einrichtung sieht die Ansicht des Kunden im Supportportal wie folgt aus:
Sobald die erforderlichen Felder ausgefüllt sind und die Schaltfläche "Erstellen" gewählt wird, wird ein neuer Antrag gestellt.
Beachtet das Feld "IT-Shop Genehmiger", das später sehr wichtig ist. Das Feld basiert auf dem "Person Picker" von Jira, mit dem ihr Personen aus dem Jira-Verzeichnis abrufen könnt, das in unserem Fall mit dem Active Directory des Unternehmens synchronisiert ist.
In Bezug auf den Prozess haben wir uns gegen eine vollständige Automatisierung entschieden, so dass wir die Qualität der eingegebenen Felder kurz überprüfen können, bevor wir die Jira-Automatisierung in Gang setzen.
MitJira-Automatisierungsregeln könnt ihr Aktionen auf der Grundlage bestimmter Auslöser und Bedingungen durchführen. In unserem Fall möchten wir die Anfrage genehmigen und die ausgefüllten Felder aus der neuen AWS-Kontoanfrage senden, um die Kontoerstellung in AWS auszulösen.
Diese Automatisierungsregel wendet die folgende Aktion an, nachdem ein Kunde eine neue AWS-Kontoanforderung erstellt hat:
Jira Automation verwendet eine Kombination aus "WHEN", "IF" und "THEN", um Aufgaben zu automatisieren.
API-Gateway
Die nächste Anforderung an die Architektur ist die API, die unsere Nutzdaten empfängt, zum Beispiel "etwas", das wir als Webhook-URL verwenden können.
Die naheliegende Lösung war die Verwendung von API Gateway.
Es kümmert sich um die Authentifizierung, indem es das im Header gelieferte API-Token auswertet und bei Erfolg die Lambda-Integration verwendet, um die von Jira empfangene Nutzlast zu übergeben. Seht hier, wie man ein API-Gateway mit Lambda-Integration einrichtet.
Aufgrund der Informationen, die für den Konto-Automaten benötigt werden, kommt ihr um benutzerdefinierte Felder in Jira nicht herum. Diese Felder sind nicht so benannt, wie ihr es in der Jira-Konfiguration seht. Stattdessen verwenden sie das Format "customfield_xyz" innerhalb der Nutzdaten.
Um die Felder zu identifizieren, die ihr für die Verarbeitung benötigt, empfehlen wir, ein Ticket mit leicht erkennbaren Werten zu füllen und dann einen Payload-Dumper wie diesen (oder euren Lambda) zu verwenden, um die Payload auf die benötigten Feldschlüssel zu überprüfen.
Alternativ könnt ihr auch die Funktion "Inspect Element" eures Browsers verwenden, während ihr das JSD-Ticket geöffnet haben.
In unserem Fall, wie im Screenshot des Tickets gezeigt, verwenden wir einige Felder, z. B. "E-Mail-Adresse", um die Kontakt-E-Mail des Kontos abzufragen. Dieses Feld ist in unserer OTTO-spezifischen Jira-Umgebung als "customfield_12949" gekennzeichnet.
Sobald alle erforderlichen Felder identifiziert sind, verwendet Lambda, um die Nutzlast zu verarbeiten. Je nach der von euch verwendeten Programmiersprache können ihr sie entweder direkt in Python ansprechen oder das JSON in ein Datenobjekt umwandeln.
Sobald dies geschehen ist, empfehlen wir, Lambda für die Vorverarbeitung der Werte zu verwenden, z. B. um sicherzustellen, dass keine führenden oder nachfolgenden Leerzeichen vorhanden sind, oder um Groß- in Kleinbuchstaben zu konvertieren.
Schließlich verwendet Lambda AWS SDK, um einen neuen Codebuild-Projektlauf auszulösen, wobei die aus der Nutzlast abgerufenen Variablen als Umgebungsvariablen verwendet werden.
Das Kontoautomaten-Backend besteht aus AWS Systems Manager-Parametern, einem AWS CodeBuild, ein paar Lambdas und einem Amazon SES. Anstatt eine Lambda-Funktion für die Hauptlogik wie den Kontoautomaten zu verwenden, haben wir uns für CodeBuild entschieden, da wir bei der Verwendung von Lambdas einige Fallstricke hatten.
Hier sind einige Probleme, die wir während der Entwicklung gelöst haben:
Da das Backend stark von eurer Einrichtung abhängt, halten wir dies in einer Blackbox fest. Wir sind jedoch einige Wege gegangen, von denen auch ihr lernen könnt:
Um den Status der Kontoerstellung an Jira Service Desk zu senden, verwenden wir eine E-Mail , die über die Amazon SES Email API an die Jira-Instanz gesendet wird. Wir haben die gesamte Domäne unseres Mailservers verifiziert, um in der Lage zu sein, Mails von verschiedenen Teammitgliedern als Account Vending Machine zu versenden. Auf diese Weise weiß der Anfragende, wer den Account Vending Machine aufgerufen hat. Außerdem verwenden wir DKIM, um eine E-Mail mit einem privaten Schlüssel zu signieren, um zu überprüfen, dass Teile der E-Mail während der Übertragung nicht verändert wurden. Das eingesetzte Amazon SES ist ein zweites Tool-Konto, und wir können diese SES-Konfiguration für alle unsere Governance-Tools verwenden.
Wir haben uns für die E-Mail-API von Jira entschieden, weil wir bereits Erfahrung mit dieser API haben und einige unserer anderen Dienste diese API bereits nutzen, um Informationen an Jira-Tickets zurückzusenden. In Zukunft werden wir mit allen unseren Diensten auf die Jira-API umsteigen.
Der E-Mail-Text wird im Kontoverkaufsautomaten mit relevanten Informationen zu Kontometadaten, Links zum Zugriff auf das AWS-Konto- und Abrechnungs-Dashboard, Onboarding-Dokumentation für die Produktteams und implementierte Sicherheitsrichtlinien erstellt. Die E-Mail aktualisiert das entsprechende Jira-Thema Account Request, so dass das Produktteam schnell mit der Arbeit beginnen kann, während das zentrale Plattformteam einen Konfigurationsverlauf hat und Änderungen nachverfolgt.
Der Beauftragte des Tickets wird als Absenderadresse der E-Mail verwendet, was zu einer persönlicheren Ansicht führt, da Jira seine Identität für den Kommentar verwendet. Wichtig ist, dass beim Senden der E-Mail an Jira die Ticket-ID als Betreff verwendet wird, damit der Kommentar dem Ticket zugeordnet werden kann.
Den Teams wird die folgende Ansicht in der Jira Service Desk AWS-Kontoanforderung angezeigt:
In diesem Beitrag haben wir eine Lösung zur Integration von Jira Service Desk mit einem Kontoautomaten in AWS vorgestellt. Die Lösung bietet ein Self-Service-Portal in Jira Service Desk für Produktteams, und die Bereitstellungszeit für neue AWS-Konten konnte von 4 Stunden auf 25 Minuten reduziert werden. Durch die Bereitstellung relevanter Informationen wie Kontometadaten sowie den schnellen Zugriff auf relevante Konten, Dashboards und Dokumentationen konnte die Onboarding-Zeit für neue Teams um den gleichen Betrag reduziert werden. Gleichzeitig wurde der operative Aufwand des zentralen Cloud-Plattform-Teams reduziert. In der Kontoanforderung verfolgt das Team Ressourcen und Konfigurationen und behält den Überblick über den Compliance-Status, was die Governance verbessert und zu einer erhöhten Sicherheitslage führt.
Want to be part of the team?
We have received your feedback.