In großen AWS-Umgebungen möchten Sie Ihren Benutzern sichere und konforme Möglichkeiten zur Nutzung von AWS-Clouddiensten bieten. Sie können Ihre Benutzer befähigen, Dienste unabhängig zu verwenden, und gleichzeitig die Arbeitsbelastung Ihrer operativen Teams reduzieren. Das Ergebnis? Erhöhte Benutzerzufriedenheit und mehr Zeit für operative Teams, um sich auf wertschöpfende Aktivitäten zu konzentrieren. AWS bietet eine native Möglichkeit, Ihre Produkte in Ihrer AWS- Organisation mit dem AWS Service Catalog zu erstellen und freizugeben.
Das Erstellen, Verwalten und Steuern der AWS Service Catalog-Produkte Ihres Unternehmens ist der erste Schritt hin zur Self-Service-Bereitstellung. Ihr Unternehmen profitiert von einer Vielzahl von Vorteilen, darunter:
Jedes AWS-Produkt basiert auf einer AWS CloudFormation-Vorlage. In der Vorlage wird festgelegt, was ein Produkt ausführt und was ein Benutzer damit tun kann. Durch verschiedene Maßnahmen können zudem zusätzliche Beschränkungen eingeführt werden, die als Constraints bezeichnet werden:
Launch Constraints definieren, welche IAM-Rolle der AWS Service Catalog beim Start des Produkts übernimmt
Notification Constraints bieten die Möglichkeit, Informationen über SNS (Simple Notification Service) zu erhalten, wenn Produkte verwaltet werden
Tag Update Constraints sorgen dafür, Tag-Updates auf bereitgestellten Ressourcen zu verhindern
Stack Set Constraints ermöglichen StackSets-Bereitstellungen in mehreren Konten oder Regionen
Template Constraints begrenzen die Optionen für Benutzer beim Start
Neben diesen Beschränkungen (Constraints) gibt es sogenannte „Service-Aktionen“, mit denen vordefinierte Maßnahmen an bereits bereitgestellten AWS Service Catalog-Produkten durchgeführt werden können. (Zum Beispiel das Initiieren eines Neustarts bei einem EC2-Rechner.) Service-Aktionen können in AWS Systems Manager-Dokumenten definiert und an ein Produkt angehängt werden.
Einer unserer Unternehmenskunden musste Self-Service-Funktionen für zentral verwaltete und gemeinsam genutzte Dienste ermöglichen. Darüber hinaus durften die Nutzer nur Dienste verwenden, die ein Mindestmaß an Sicherheit bieten. Hier kam der AWS Service Catalog ins Spiel: Mit seinen Funktionen konnten alle Bedürfnisse abgedeckt werden. Da unser Kunde zudem hohe Automatisierungsanforderungen hatte, musste die gesamte Lösung automatisiert und wieder verwendbar eingerichtet werden. In diesem Fall war eine CI/CD-Integration unabdingbar.
Während der Implementierung haben wir mit dem privaten GitLab-Repository unseres Kunden, AWS CodePipeline und CodeBuild gearbeitet. Den Sicherheitsanforderungen entsprechend sollen die IAM-Berechtigungen für den programmatischen GitLab-Zugriff auf den AWS-Account möglichst gering sein. Aus diesem Grund wird GitLab nur als Repository verwendet, das den Lösungscode in jedem der Test- und Produktionskonten des Kunden in einen S3-Bucket schiebt.
Die oben genannten Aktionen lösen die tatsächliche Bereitstellung des AWS Service Catalog-Portfolios, einschließlich der Produkte, aus. Die Bereitstellung erfolgt automatisch, wenn neue Produkte in die AWS Service Catalog-Konfiguration integriert oder ein vorhandenes Produkt durch eine neue Vorlage ersetzt wird.
Die Konten, in denen die Konfiguration der AWS Service Catalog-Portfolios und -Produkte eingeführt wird, werden mit einer delegierten AWS Service Catalog-Administratorberechtigung ausgestattet. Die Berechtigung ermöglicht die Freigabe der Produkte für die AWS-Organisation von den jeweiligen AWS Service Catalog-Konten.
AWS Service Catalog in einem Unternehmen AWS-Organisation in Kombination mit Gitlab
Wenn Sie Ihren Benutzern eine sichere und konforme Möglichkeit bieten möchten, AWS-Clouddienste zu nutzen, bietet der AWS Service Catalog gute Funktionen. Eine mögliche Schwachstelle ist jedoch eine unvermeidbare Verbindung mit dem AWS CloudFormation Service, die gelegentlich einen Workaround mit benutzerdefinierten Ressourcen erfordert, um eine Lambda-Funktion auszulösen. In diesem Fall ist das AWS Service Catalog-Produkt nur eine Shell, und die eigentliche Automatisierungslogik wird in einer Lambda-Funktion platziert.