Von Tagen zu Sekunden: Automatisierung von AWS-Zertifikatanfragen mit n8n und Slack

Entwickler, die sich AWS-Zertifikate holen, sind wie Teenager, die nach den Auto-Schlüsseln bitten – es gibt viel Wartezeit, Papierarbeit und verkrampftes Fingerspitzengefühl. Wenn du es mit der Zertifikatstür bewältigen oder der Entwickler bist, der im Ticket-Purgatorium steckt, ist das Spiel sicherlich langweilig.

Lass uns diesen mindestens lustigen Zertifikatsanforderungsprozess in eine einfache Slack-Befehlsanwendung verwandeln, indem wir n8n, ein intuitives Workflow-Automatisierungs-Tool verwenden, mit dem deine Entwickler sagen werden, „Das ist es?“

Wir werden ein Beispielszenario von A bis Z abarbeiten, keine Details verpassen, um zu zeigen, wie das n8n-Workflow-Automatisierungs-Tool den übertriebenen Overtime-Aufwand von beschäftigten Entwicklern und Managern sparen kann.

Der aktuelle Zertifikatsanforderungs-Tanz

Vorstellung: Ein Entwickler braucht ein neues AWS-Zertifikat für seine Entwicklungsumgebung. Hier geht es typischerweise so ab:

  1. Der Entwickler sendet einen Ticket mit genug Text, um ein Roman zu schreiben
  2. Das Ticket sitzt in der Warteschlange, während der Entwickler seine E-Mail-Posteingang mit stressigem Aktualisieren verfolgt
  3. Der Berechtigte sieht das Ticket zwischen 47 anderen dringenden Anfragen schließlich
  4. Halb des notwendigen Inhalts fehlt (offensichtlich)
  5. Es folgen schmerzhaftes Pong-Spiel per E-Mail
  6. Der Berechtigte loggt sich in die AWS-Konsole ein (nachdem er seinen 2FA-Gerät gefunden hat)
  7. Manuelles Zertifikatserstellungsgeschehen
  8. Der Entwickler erhält schließlich die Zertifikatdetails… vielleicht.
  9. Jeder verliert ein bisschen von seiner Seele

Kommt dir das bekannt vor? Ich dachte es mir. Lass uns das beheben.

Der Traum: Slack-Befehl → Sofortzertifikat

Was wäre, wenn deine Entwickler einfach /newcert in den Slack-Kanal ihrer Entwicklungsumgebung eingeben könnten und innerhalb von Sekunden eine AWS-Zertifikat-ARN zurückbekommen? Keine Tickets, kein Warten, kein seelenzerstörendes Hin und Her. Genau das bauen wir.

In diesem Szenario bist du ein Entwickler in einer Organisation, die Slack für die Kommunikation nutzt. Du hast einen Slack-Kanal für jede Entwicklungsumgebung erstellt, um die Gespräche organisiert zu halten.

So wird unser automatisierter Workflow funktionieren:

  1. Der Entwickler gibt /newcert in den Slack-Kanal seiner Umgebung ein
  2. Der n8n-Workflow erhält die Anfrage mit dem Kontext des Kanals
  3. Der Workflow erstellt das Zertifikat in AWS
  4. Die Zertifikat-ARN erscheint im selben Slack-Kanal

Das war’s. Vier Schritte statt neun, und null Warten auf Menschen, die menschliche Dinge tun!

Da wir an den Details nicht sparen, wird dieser Beitrag dir nicht nur sagen, dass n8n diesen Prozess automatisieren kann, sondern ich werde dir zeigen, wie (ich habe es selbst von Grund auf gemacht!).

n8n verwendet Workflows, um Aufgaben mithilfe von Knoten zu verknüpfen. Diese Workflows können dann ausgeführt werden, wodurch alle Knoten innerhalb des Workflows aktiviert werden, um einfache bis komplexe Prozesse zu automatisieren.

Wenn du daran interessiert bist, wie man diesen Workflow einrichtet oder wie ein n8n-Workflow eingerichtet werden könnte, lies weiter!

Erst die wichtigsten Dinge: Der Webhook-Trigger

Öffne deine n8n-Instanz und beginne mit einem leeren Canvas:

1. Erstelle ein neues Workflow. Unten sehen Sie das leere Canvas eines neuen n8n-Workflows, der bereit ist, den ersten Trigger-Knoten einzurichten.

2. Add next webhook trigger node. Der Webhook-Trigger-Knoten ist der Weg, wie Slack mit diesem Workflow kommuniziert, um das Workflow zu benachrichtigen, wann Requests an AWS gesendet werden sollen, um neue Zertifikate zu erzeugen.

Aus dem oben gezeigten Screenshot ist zu sehen, dass der Webhook-Trigger-Knoten auf POST-HTTP-Anfragen lauscht.

3. Konfiguriere es, um POST-Anfragen von Slack zu empfangen

Dieser Webhook wird unsere Frontdoor sein – es ist der Ort, an dem Slack bei der Benutzung unseres Befehls /newcert klingelt.

Erstellen des Slack-Apps

Es ist Zeit, die Slack-Seite der Sache zu einzurichten. Du brauchst eine Slack-App, um Benutzern das Senden von Slash-Befehlen (/newcert) im Kanal zu ermöglichen. Die Slack-App wird auch als Methode dienen, um n8n zu autorisieren, um Nachrichten zurückzuliefern.

1. Wenn du auf der Slack-Apps-Seite bist, klicke auf Create New App, um einen Namen zu geben.

2. Als nächstes setzen Sie die Scopes so, dass sie Befehle mit Schrägstrichen ausgeben und auch Nachrichten zurück in den Kanal senden können. Sie benötigen

channels:read

chat:write

commands

3. Richten Sie als nächstes einen Slash-Befehl ein. Ein Slash-Befehl ermöglicht es Benutzern, Befehle an Ihre Slack-App zu senden, indem sie einen Schrägstrich gefolgt von einem Befehl eingeben. In diesem Fall wird der Befehl /newcert sein, um ein neues AWS-Zertifikat zu generieren.

Gehen Sie in die Einstellungen Ihrer App, wählen Sie „Slash-Befehle“ und klicken Sie auf „Neuen Befehl erstellen“

4. Installieren Sie die App in Ihren Workspace, nachdem Sie die Scopes und den Slash-Befehl eingerichtet haben.

5. Schließlich laden Sie den Bot (die Anwendung, die Sie gerade erstellt haben) in einen Slack-Kanal ein, in dem er arbeiten soll. In diesem Fall wird der Kanal der Name der Entwicklerumgebung qa-1 sein.

/invite @devenvironmentautomation

Testen des Webhook-Triggers

Sie haben nun die Slack-App und den Webhook-Trigger konfiguriert. Es ist an der Zeit, ihre Interaktivität zu testen.

1. Klicken Sie in Ihrem n8n-Workflow auf die Schaltfläche „Auf Testereignis warten“. Dadurch kann der Webhook-Trigger damit beginnen, auf Anfragen zu hören, die die Slack-App senden sollte.

2. Gegenüberstehen Sie anschließend im Ihren Entwicklungsumfeld-Slack-Kanal die Slash-Befehls-Ausführung /newcert. Sobald Sie dies getan haben, sollten Sie im n8n den Webhook-Knoten sehen, der die Anfrage empfängt.

Beachten Sie unten, dass es den Kanalnamen und die Benutzer-ID in der Anfrage enthält. Dies ermöglicht uns zu erkennen, für welches Entwicklungsumfeld dieses Zertifikat gilt und für welchen Benutzer die Anfrage gestartet wurde.

Wenn alles gut gelaufen ist, sollten Sie die Standard-JSON-Antwort sehen, die Ihnen mitteilt, dass der Workflow die Anfrage erhalten und den Workflow gestartet hat.

AWS-Zugriff einrichten

n8n muss sich bei AWS authentifizieren, um neue Zertifikate zu erstellen. Um dies zu tun, muss ein IAM-Benutzer mit den entsprechenden Rechten erstellt werden. Da wir in diesem Leitfaden von vorne beginnen, finden Sie unten einen schnellen Weg, um diesen IAM-Benutzer via AWS CLI einzurichten.

Wenn Sie keinen IAM-Benutzer bereits haben, können Sie den folgenden Code verwenden, um einen zu erstellen:


## policy datei erzeugen
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "acm:DescribeCertificate",
                "acm:ListCertificates",
                "acm:GetCertificate",
								"acm:RequestCertificate"
								"acm:AddTagsToCertificate"
            ],
            "Resource": "*"
        }
    ]
}

## Benutzer erzeugen
aws iam create-user --user-name CertificateManager

## Zugriffsschlüssel-ID und geheimer Zugriffsschlüssel erzeugen
aws iam create-access-key --user-name CertificateManager --query 'AccessKey.[AccessKeyId,SecretAccessKey]' --output text > certificate_manager_credentials.txt

## Richtlinie erzeugen
$policy = Get-Content -Raw ~/Downloads/cert-policy.json                                                           PS /Users/adam> $policy_arn = aws iam create-policy --policy-name CertificateManagerPolicy --policy-document $policy --query 'Policy.Arn' --output text

## Richtlinie anhängen

aws iam attach-user-policy --user-name CertificateManager --policy-arn $policy_arn

## Zugriffsschlüssel-ID und geheimer Zugriffsschlüssel lesen, die wir später für den Workflow brauchen
Get-Content ./certificate_manager_credentials.txt

Dieser Code verwendet die AWS CLI, um verschiedene Aufgaben durchzuführen:

1. Richtlinienerstellung: Erstellt eine IAM-Richtlinie, die exakt definiert, welche Zertifikat-bezogenen Aktionen zugelassen sind:

– Anzeige der Zertifikatdetails

– Auflistung von Zertifikaten

– Herausfinden von Zertifikatdaten

– Erstellung neuer Zertifikate

– Hinzufügen von Tags zu Zertifikaten

2. Benutzer Erstellung: Erstellt einen dedizierten IAM-Benutzer mit dem Namen „CertificateManager“, der explizit für Zertifikatmanagementaufgaben verwendet wird

3. Zugriffsschlüsselgenerierung: Erstellt ein Zugriffsschlüsselpaar (Zugriffsschlüssel-ID und geheimer Zugriffsschlüssel) für den neuen Benutzer und speichert es in einer Datei

4. Richtlinienanhängung: Erstellt die IAM-Richtlinie und hängt sie an den neuen Benutzer an, sodass dieser nur die spezifischen Zertifikatmanagementberechtigungen erhält, die in der Richtlinie definiert sind

5. Verwendet den PowerShell-Befehl Get-Content, um die Textdatei mit dem Zugriffsschlüssel und dem geheimen Schlüssel zu lesen, die du dem Workflow geben musst.

Dies folgt den Best Practices für Sicherheit dadurch:

  • Das Verwenden des Prinzips der Mindestberechtigung (nur die notwendigen Berechtigungen gewähren).
  • Einen dedizierten Benutzer für das Zertifikatsmanagement erstellen
  • Die Anmeldeinformationen vom Administratorkonto trennen

Hinweis: In einer Produktionsumgebung sollten Sie die generierten Anmeldeinformationen sicher speichern und nicht in einer Textdatei. Ziehen Sie in Betracht, AWS Secrets Manager oder eine andere sichere Lösung zur Speicherung von Geheimnissen zu verwenden.

Einrichten der n8n Workflow AWS-Anmeldeinformationen

Wenn wir zu diesem Schritt gelangen, muss der Workflow in der Lage sein, sich beim AWS Certificate Manager zu authentifizieren, um neue Zertifikate auszustellen. n8n verwendet Anmeldeinformationen, um dies zu tun. Um eine neue Anmeldeinformation für AWS zu erstellen:

1. Klicken Sie in Ihrem Arbeitsbereich oben auf Ihrem Bildschirm auf Anmeldeinformationen und dann auf Anmeldeinformation hinzufügen.

2. Geben Sie AWS als Anmeldeinformationstyp an.

3. Geben Sie die Zugangsschlüssel und geheimen Zugangsschlüssel an, die zuvor mit den AWS CLI-Befehlen generiert wurden.

n8n verfügt über eine praktische Funktion, die die Anmeldeinformationen automatisch testet, wenn Sie sie speichern, sodass Sie sofort wissen, ob die Anmeldeinformationen funktionieren oder nicht.

Erstellen des HTTP-Anforderungs-Knotens

Obwohl n8n Unterstützung für den AWS-Zertifikatverwaltungsdienst bietet, unterstützt es derzeit nicht das Erstellen neuer Zertifikate, also haben Sie kein Glück! Sie können den generischen HTTP-Anforderungsknoten verwenden. Dieser Knoten ermöglicht es Ihnen, generische HTTP-Anforderungen an API-Operationen zu senden, die derzeit nicht unterstützt werden.

 No need to worry about complex API authentication. Once you create a credential, n8n can leverage that and manage all that OAuth goodness for you. 

1. Um den gewünschten HTTP-Anforderungsknoten zu erstellen, definieren Sie zunächst alle Parameter, die die AWS-API benötigt. Diese sind:

URL – Der API-Endpunkt in der Region, in der Sie arbeiten

Authentifizierung – Verwenden Sie Vordefinierter Anmeldetyp, um das zuvor erstellte Anmeldeinformationen zu nutzen.

AnmeldetypAWS

AWS – Die zuvor erstellten AWS-Anmeldeinformationen.

Header senden – Sie benötigen den X-Amz-Target-Header, um der API mitzuteilen, welche Operation Sie verwenden möchten; in diesem Fall ist das CertificateManager.RequestCertificate.

Inhaltstyp des Bodyapplication/x-amz-json-1.1

2. Legen Sie als nächstes den HTTP-Body fest. Dies ist ein entscheidender Schritt, um eine API-Anforderung mit dem Entwicklungs-Umgebungsnamen zu erstellen. In diesem Szenario weisen wir einem AWS-Tag namens Umgebung das Zertifikat zu und setzen den Wert des Umgebungsnamens, der von der Slack-Anforderung erhalten wurde.

Sie benötigen eine dynamische Eingabe oder Expression für diese Aufgabe. Klicken Sie auf Expression im Body Feld, und Sie werden sehen, dass die Eingabe in einen Funktionstext umgewandelt wird.

3. Klicken Sie auf das Ausklapp-Symbol in der unteren rechten Ecke des Body-Feldes, und Sie erhalten einen intuitiven Editor.

Der HTTP-Body muss im JSON-Format vorliegen. Ich verwende hier einen meiner Domainnamen und validiere das Zertifikat mit DNS.

Sie können unten sehen, dass ich den Tag-Wert einfügen kann, indem ich den Wert, der von Slack empfangen wurde, in die Expression ziehe.

    {
        "DomainName": "atademos.com",
        "ValidationMethod": "DNS",
        "Tags": [
            {
                "Key": "Environment",
                "Value": "{{ $('Webhook').item.json.body.channel_name }}"
    }
    ]}

Der Wert ist nun {{ $('Webhook').item.json.body.channel_name }} Diese Variable wird in der API-Anfrage an AWS übergeben, die den Slack-Kanalnamen (den Namen der Entwicklungsumgebung in diesem Szenario) enthält.

[su_hightlight]The expressions in n8n are powerful. They’ve developed their own templating language that’s intuitive and is integrated well in various parts of the tool.[/su_hightlight]

4. Testen Sie schließlich den HTTP-Anforderungs-Knoten, indem Sie auf Testschritt klicken. Wenn alles gut gelaufen ist, sollten Sie die JSON-Antwort von AWS sehen, einschließlich der Zertifikat-ARN

Erstellen Sie den Slack-Knoten

Zu diesem Zeitpunkt haben Sie zwei der drei Knoten in diesem einfachen n8n-Workflow abgeschlossen: den Webhook-Trigger für Slack und den HTTP-Anforderungs-Knoten, der API-Anfragen an AWS stellt. Der letzte Knoten ist der Slack-Knoten, der eine Antwortnachricht an den Benutzer initiiert.

1. Öffnen Sie das Knoten-Panel und klicken Sie auf die Plus-Taste, um einen neuen Slack-Knoten in Ihrem Workflow zu erstellen.

2. Suchen Sie nach Slack und wählen Sie die Aktion Nachricht senden.

3. Nächstes, klicken Sie auf Zertifikat zum Verbinden und wählen Sie Neues Zertifikat anlegen, um ein Slack-Zertifikat zu erstellen, das dem AWS-Zertifikat ähnelt. Sobald Sie ein Zertifikat eingerichtet haben, können Sie es im Slack-Knoten verwenden.

4. Geben Sie dem Slack-Knoten die geeigneten Parameter:

  • RessourceNachricht (um eine Kanall Nachricht zu senden)
  • AktionSenden
  • Nachricht anKanal
  • KanalPer Name. Sie können den Ausdruck-Editor erneut verwenden und das channel_name Attribut von der Webhook-Trigger-Knoten in den dynamischen Ausdruck ziehen.
  • Nachrichtentext – In diesem Szenario sendet der Workflow das von AWS empfangene Zertifikat-ARN dem Entwickler im Slack-Kanal zurück. Da AWS eine JSON-Zeichenfolge zurückgibt, können wir die integrierte Ausdruckfunktion JSON.parse verwenden, um das JSON aufzulösen, um nur den Wert CertificateArn herauszuziehen.

 The ability to run simple JavaScript like JSON.parse directly in expressions is extremely handy. If I didn’t have this ability, I’d have to create a whole new node just to format this simple data. 

5. Klicken Sie auf Test Schritt und die ursprüngliche Slack-Kanall Nachricht sollte erhalten!

Teste den Workflow

An dieser Stelle sollte Sie ein Workflow mit drei Knoten haben. Es ist Zeit, den gesamten Workflow zusammen zu testen!

Klicken Sie auf Workflow testen, und Sie werden sehen, dass n8n anfängt, auf den Trigger zu warten.

Gehe zu dem Entwicklungsumgebung Slack Kanal und gib den Befehl /newcert ein. Vollkommen, der Workflow sollte flüssig ausgeführt werden!

Sie sollten nun ein Zertifikat erhalten, das ausdrücklich für die Entwicklungsumgebung gekennzeichnet ist, in der es verwendet werden wird, eine Verlaufshistorie der Anforderung und sehr zufriedene Entwickler, beispielsweise Zugriff auf neue Zertifikate!

Warum das Wichtig ist

Denken Sie daran, was wir gerade erstellt haben:

  • Middleware des Ticket-Systems eliminiert
  • Zeit bis zur Zertifikatsanforderung von Tagen auf Sekunden verkürzt
  • Automatisierte Dokumentation (AWS-Tags)
  • Entwickler glücklicher (unbezahlbar)

Dieser Blogbeitrag beschäftigte sich nur mit einer Aufgabe: der Erstellung der Workflow-Prozess. Dieser kann nun unbegrenzt oft ausgeführt werden, um unzählige Stunden zu sparen!

Und das Beste? Dies ist nur der Anfang. Sie könnten diesen Workflow verlängern, um unterschiedliche Zertifikatstypen zu verwalten, Zustimmungen für Produktionsumgebungen hinzuzufügen oder sogar Zertifikatverlängerungsbenachrichtigungen automatisieren.

Probe erstellte Vorlagen

n8n bietet Hunderte von fertiggestellten Vorlagen wie dieser Workflow. Diese Vorlagen ermöglichen Ihnen, den von uns beschriebenen Prozess zu verkürzen und auf Workflows zuzugreifen, die von n8n erstellt und getestet wurden.

 If you’d like another great example of a Slack workflow, check out their Advanced Slackbot template. 

Schlussgutachten

n8n macht die Automatisierung solcher Workflows unglaublich einfach. Wir haben einen Prozess umgeformt, der gewöhnlich mehrere Systeme, Personen und Geduld erfordert, und ihn in eine einzige Slack-Befehlskommando umgewandelt.

Möchtest du es selbst ausprobieren? Die grundlegende Version von n8n ist kostenlos und du kannst dies wahrscheinlich schneller aufbauen als das alte Verfahren für die Behandlung einer einzelnen Zertifikatsanforderung. Deine Entwickler werden dir dafür dankbar sein und du kannst dich um eine weniger administrative Sorgen machen.

Source:
https://adamtheautomator.com/automate-aws-cert-creation-n8n-slack/