Van Dagen naar Seconden: AWS Certificaatverzoeken Automatiseren met n8n en Slack

Ontwikkelaars die AWS-certificaten aanvragen zijn als tienerjongens die de sleutels van een auto willen – er is veel wachten, papierwerk en gevleugeldevingers. Als u zich vervelend aan het spelen van de certificaatwachtende of de ontwikkelaar die vastzit in ticketpurgatorio begint tegen te zijn.

Laat ons die vervelende certificaatrequestsproces omgaan tot eenvoudige Slack-opdrachten maken met behulp van n8n, een intuitieve workflowautomatiseringstool dat uw ontwikkelaars zal laten zeggen, “Dat’s het?”

We zullen van A naar Z een voorbeeld scenario behandelen, geen details sparen, om u te laten zien hoe het n8n workflowautomatiseringstool drukke ontwikkelaars en beheerders vele uren overuren kan besparen.

Het huidige Certificaatrequestdans

Verbeeld deze al te lang herhalende scenario: Een ontwikkelaar heeft een nieuw AWS-certificaat nodig voor hun testomgeving. Hoe het meestal gaat:

  1. De ontwikkelaar stuurt een ticket met genoeg tekst om een roman te schrijven
  2. Het ticket ligt in de rij terwijl de ontwikkelaar stressmatig hun inbox vernieuwt
  3. De goedkeurder ziet het ticket tussen 47 andere dringende verzoeken
  4. Halfs het vereist informatie ontbreekt (duidelijk genoeg)
  5. Er volgt een pijnlijke pongerspel van e-mails
  6. De goedkeurder logt in op de AWS-console ( nadat hij zijn 2FA-apparaat heeft gevonden)
  7. Het handmatige certificaat aanmaken gebeurt
  8. De ontwikkelaar krijgt uiteindelijk de certificaatdetails… misschien.
  9. Iedereen verliest een beetje van zijn of haar ziel

Heb je dat gehoord voor? Ik denk dat ja. Laat’s dit verhelpen.

Het Droom: Slack Commando → Direct Certificaat

Wat als uw ontwikkelaars gewoon /newcert typen in de Slack-kanaal van hun ontwikkelingsomgeving, en binnen enkele seconden een AWS-certificaat ARN terugkrijgen? Geen tickets, geen wachten, geen helenvreemde terug en toch. Dat is exact wat we aan het bouwen zijn.

In dit scenario ben je een ontwikkelaar binnen een organisatie die Slack gebruikt voor communicatie. U heeft een Slack-kanaal voor elke ontwikkelingsomgeving gemaakt om de conversaties georganiseerd te houden.

Hier is hoe ons geautomatiseerde werkproces zal werken:

  1. De ontwikkelaar typ /newcert in het Slack-kanaal van hun omgeving
  2. De n8n workflow krijgt de aanvraag met kanaalcontext
  3. De workflow maakt een certificaat in AWS
  4. Certificaat ARN verschijnt in hetzelfde Slack-kanaal

Dat is het. Vier stappen in plaats van negen, en geen wachten op mensen om menselijke dingen te doen!

Omdat we geen details sparen, zal dit artikel niet alleen vertellen dat n8n deze processen kan automatiseren, maar ik zal je dat laten zien (ik heb het zelf van de grond af gemaakt!).

n8n gebruikt workflow om taken samen te binden met behulp van nodes. Deze workflows kunnen dan worden uitgevoerd, waardoor alle nodes binnen de workflow worden geactiveerd om eenvoudige tot complexe processen te automatiseren.

Als u geïnteresseerd bent in het aanmaken van deze workflow of hoe een n8n workflow kan worden opgebouwd, ga dan verder lezen!

Eerstens: Het Webhook Trigger

Open uw n8n-instance en begin met een lege doekenbord:

1. Maak een nieuwe workflow aan. Hierboven zult u het lege doekenbord van een nieuwe n8n-workflow zien, die klaar is om de eerste trigger-node in te stellen.

2. Voeg daarna een webhook trigger node toe. De webhook-trigger-node is de manier waarop Slack met deze workflow communiceert om de workflow te verwittigen wanneer het AWS moet aanvragen om nieuwe certificaten te maken.

U kunt zien dat de webhook-trigger-node erop uit gaat dat POST HTTP-verzoeken worden ontvangen, zoals in het schermab snapshot hierboven.

3. Configureer het om POST-verzoeken van Slack te ontvangen

Deze webhook zal onze voorhal zijn – dat is waar Slack op knipt als iemand onze /newcert-opdracht gebruikt.

Het maken van de Slack-app

Het is nu tijd om de Slack-kant van de zaak in order te brengen. U zult een Slack-app nodig hebben om gebruikers toe te staan om slash commands (/newcert) uit te voeren in het kanaal. De Slack-app zal ook een manier zijn voor n8n om terug te authenticëren naar Slack om berichten terug te geven.

1. Als u zich op het scherm van Slack-apps bevindt, klik op Nieuwe app maken waar u een naam kunt opgeven.

2. Volgendenset de Scopes om te kunnen uitgeven aan slash commando’s en om ook berichten terug naar het kanaal te kunnen sturen. U zult behoefden

channels:read

chat:write

commands

3. Volgensmaak een slash commando. Een slash commando laat gebruikers commando’s uitvoeren op uw Slack app als een voorwaarts slash gevolgd door een commando. In dit geval zal het commando zijn /newcert om een nieuwe AWS certificaat te genereren.

Ga naar de instellingen van uw app en kies “Slash Commands” en klik dan op “Nieuw Commando”

4. Installeer de app in uw werkruimte Zodra u de scopes en slash commando hebt ingesteld.

5. Ten slotte uitnodig de bot (de applicatie die u net hebt aangemaakt) voor een Slack kanaal om in te werken. In dit geval zal het kanaal de naam zijn van de ontwikkelingsomgeving qa-1.

/invite @devenvironmentautomation

Testen van de Webhook Trigger

U heeft nu de Slack app en de webhook trigger geconfigureerd. Het is nu tijd om hun interactiviteit te testen.

1. Klik in uw n8n workflow op de knop “Luister naar Testevenement”. Doet u dit zal de webhook trigger beginnen om te luisteren naar verzoeken die de Slack app moet verzenden.

2. Volgensgaande, voer in uw ontwikkelingsomgeving van Slack de slashcommando /newcert uit. Zodra u dat doet, zou u moeten zien dat de webhook-node de aanvraag in n8n ontvangt.

Bekijk eronder dat het de kanaamnaam en de gebruikers-ID in de aanvraag bevat. dit zal ons toestaan te zien voor welke ontwikkelingsomgeving dit certificaat is en de gebruiker die ervraagt.

Indien alles goed is gegaan, zou u de standaard JSON-reactie moeten zien die u vertelt dat de workflow de aanvraag heeft ontvangen die de workflow heeft gestart.

Instellen van AWS toegang

Om nieuwe certificaten te maken, moet n8n geauthenticateerd worden bij AWS. Om dat te doen, is een IAM-gebruiker met de juiste rechten nodig. Aangezien we in dit handleiding vanaf nul beginnen, vindt u hieronder een manier om deze IAM-gebruiker snel in te stellen via de AWS CLI.

Als u nog geen IAM-gebruiker heeft, kunt u de volgende code gebruiken om dat te doen:


## maak het beleid bestand
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "acm:DescribeCertificate",
                "acm:ListCertificates",
                "acm:GetCertificate",
								"acm:RequestCertificate"
								"acm:AddTagsToCertificate"
            ],
            "Resource": "*"
        }
    ]
}

## maak de gebruiker
aws iam create-user --user-name CertificateManager

## maak de toegangssleutel ID en het geheime toegangssleutel
aws iam create-access-key --user-name CertificateManager --query 'AccessKey.[AccessKeyId,SecretAccessKey]' --output text > certificate_manager_credentials.txt

## maak het beleid
$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

## koppel het beleid

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

## lees de toegangssleutel ID en geheime sleutel die we later nodig hebben voor het werkingsproces
Get-Content ./certificate_manager_credentials.txt

Dit code gebruikt de AWS CLI om verschillende taken uit te voeren:

1. Beleid Creation: Maakt een IAM-beleid dat precies bepaalt welke certificaatgerelateerde acties zijn toegestaan:

– Certificaat details bekijken

– Certificaten lijsten

– Certificaatgegevens ophalen

– Nieuwe certificaten maken

– Labels toevoegen aan certificaten

2. Gebruiker Creation: Maakt een speciaal IAM-gebruiker genaamd “CertificateManager” die expliciet wordt gebruikt voor certificatemanagement taken

3. Toegangssleutel Genereren: Maakt een toegangssleutelpaar (Toegangssleutel ID en Geheime Toegangssleutel) voor de nieuwe gebruiker en slaat ze op in een bestand

4. Beleid Koppelen: Maakt het IAM-beleid en koppelt het aan de nieuwe gebruiker, die alleen de specifieke certificatemanagement-toestemmingen heeft die in het beleid zijn gedefinieerd

5. Gebruikt de PowerShell `Get-Content` commando om de tekstbestand met de toegangssleutel en geheim te lezen die u moet opgeven voor het werkingsproces.

Dit volgt de best practices voor beveiliging door:

  • Het gebruik van de minste machtsprincipe (alleen de nodige toestemmingen toewijzen).
  • Aanmaken van een speciaal gebruiker voor certificatenbeheer
  • Scheiden van de aanmachtigingen van het beheeraccount

Opmerking: In een productieomgeving zou u de gegenereerde aanmachtigingen veilig opslaan, niet in een platte tekstbestand. Overweeg het gebruik van AWS Secrets Manager of een andere veilige oplossing voor geheime gegevens.

Instellen van de n8n Workflow AWS Aanmachtiging

Bij het bereiken van deze stap moet de workflow in staat zijn om te autoriseren bij AWS Certificate Manager om nieuwe certificaten uit te rekenen. n8n gebruikt aanmachtigingen hiervoor. Om een nieuwe aanmachtiging voor AWS aan te maken:

1. Klik in uw werkruimte op Aanmachtigingen bovenaan uw scherm en klik op Aanmachtiging toevoegen.

2. Specificeer AWS als het type aanmachtiging.

3. Geef de toegangssleutel en geheime toegangssleutel die u eerder met de AWS CLI-opdrachten heeft gegenereerd.

n8n heeft een mooi feature dat de aanmachtiging automatisch test bij het opslaan, zodat u direct weet of de aanmachtiging werkt of niet.

Aanmaken van het HTTP Request Node

Hoewel n8n wel ondersteuning biedt aan de AWS Certificate Manager service, ondersteund het momenteel niet het aanmaken van nieuwe certificaten, dus zijn uw slimme ideeën nog altijd in orde! U kunt de algemene HTTP Request knooppunt gebruiken. dit knooppunt laat u toe om algemene HTTP verzoeken uit te voeren naar API-bewerkingen die momenteel niet worden ondersteund.

 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. Om het HTTP Request knooppunt te maken dat we nodig hebben, moet u eerst alle parameters definiëren die de AWS API vereist. Dat zijn:

URL – Het API-eindpunt naar de regio waarin u werkt

Authenticatie – Gebruik Voorgedefinieerde Credentieel Type om de eerder aangemaakte credentieel te gebruiken.

Credentieel TypeAWS

AWS – Het eerder aangemaakte AWS credentieel.

Stuur headers – U moet de X-Amz-Target header nodig hebben om de API te laten weten welke bewerking u wilt gebruiken; dat is CertificateManager.RequestCertificate in dit geval.

Body Content Typeapplication/x-amz-json-1.1

2. Vervolgens moet u de HTTP-body instellen. Dit is een crucial step in het maken van een API-verzoek met de dev-omgeving naam. In deze situatie wordt een AWS-etiket genaamd Environment toegekend aan het certificaat en wordt de waarde van de ontvangen omgeving naam uit het Slack verzoek ingesteld.

Je hebt een dynamische invoer of Expressie nodig voor deze taak. Klik op Expressie in het veld Lichaam, en je ziet dat de invoer verandert in een functietekst.

3. Klik op het uitvouwpictogram in de rechterbenedenhoek van het lichaamsveld, en je krijgt een intuïtieve editor.

Het HTTP-lichaam moet in JSON zijn. Ik gebruik hier een van mijn domeinnamen en valideer het certificaat met DNS.

Je kunt hieronder zien dat ik de tagwaarde kan opnemen door de waarde die van Slack is ontvangen in de expressie te slepen.

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

De waarde is nu {{ $('Webhook').item.json.body.channel_name }} Deze variabele zal worden doorgegeven aan AWS in het API-verzoek met daarin de naam van het Slack-kanaal (de naam van de ontwikkelomgeving in dit scenario).

[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. Test tot slot de HTTP-verzoeknode door te klikken op Teststap. Als alles goed is gegaan, zou je de JSON-reactie van AWS moeten zien, inclusief de certificaat-ARN.

Maak de Slack-node

Op dit punt heb je twee van de drie nodes voltooid in deze eenvoudige n8n-workflow: de webhook-trigger voor Slack om te bellen en de HTTP-verzoeknode die API-verzoeken naar AWS zal maken. De laatste node is de Slack-node, die een reactiebericht naar de gebruiker initieert.

1. Open het Nodes-paneel en klik op de plusknop om een nieuwe Slack-node in je workflow te maken.

2. Zoek naar Slack en kies de Stuur een bericht actie.

3. Volgendens klikt u op Inloggegevens voor verbinding en kies Nieuwe inloggegevens maken om een Slack-inloggegevens aan te maken die lijkt op de AWS-inloggegevens. Zodra u een inloggegevens heeft gecreëerd, kunt u deze gebruiken in de Slack-knooppunt.

4. Geef de juiste parameters aan het Slack-knooppunt:

  • ResourceBericht (om een kanaalbericht te verzenden)
  • BewerkingVerzenden
  • Bericht verzenden naarKanaal
  • KanaalNaam gebruiken. U kunt opnieuw het expressiebewerker gebruiken en het attribuut channel_name van de webhooktrigger sleep om een dynamische expressie te gebruiken.
  • Bericht tekst – In dit scenario zal de workflow het certificaat ARN van AWS teruggeven aan de ontwikkelaar in het Slack-kanaal. Aangezien AWS een JSON-tekenreeks teruggeeft, kunnen we de ingebouwde expressiefunctie JSON.parse gebruiken om het JSON uit te parsen om alleen de waarde CertificateArn te halen.

 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. Klik op Test stap en het originele Slack-kanaal moet het bericht krijgen!

Test de workflow

Op dit moment zou u een workflow moeten hebben met drie knooppunten. Het is nu tijd om de gehele workflow samen te testen!

Klik op Test workflow, en u zult zien dat n8n beginnen om te wachten op de trigger.

Ga naar het ontwikkelingsomgeving Slack-kanaal en voer het /newcert commando uit. En zo, de workflow zou ongehinderd moeten worden uitgevoerd!

U zou nu een certificaat moeten hebben dat expliciet is gemarkeerd voor de ontwikkelingsomgeving waarin het zal worden gebruikt, een geschiedenis van de aanvraag, en veel vrijere ontwikkelaars, bijvoorbeeld, toegang tot nieuwe certificaten!

Waarom dit belangrijk is

Denk over wat we net hebben gebouwd:

  • Het middelman systeem voor tickets is verwijderd
  • Het tijdsspanne voor het aanvragen van certificaten is verkort van dagen tot seconden
  • Automatische documentatie (AWS-labels)
  • Ontwikkelaars zijn nu gelukkiger (onrekelijk)

Deze blogpost beschreef slechts één taak: het bouwen van de workflow. Het kan nu onbegrensd aangeroepen worden om vele uren te besparen!

En het beste deel? Dat is nog maar het begin. U kunt deze workflow uitbreiden om verschillende typen certificaten af te handelen, goedkeuringen toe te voegen voor productieomgevingen of zelfs automatische notificaties voor certificatenverlenging toe te voegen.

Bekijk voorgebuilde sjablonen

n8n biedt honderden voorgebuilde sjablonen zoals deze workflow. Deze sjablonen staan u toe de door ons behandelde processen te versnellen en gebruik te maken van door n8n gebouwde en getestte workflow.

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

Eindgedachten

n8n maakt het ongekende gemakkelijk om dergelijke workflow’s te automatiseren. We hebben een proces dat normaal gesproken uitgaat over meerdere systemen, mensen en niveaus van geduld, omgezet tot een enkele Slack-opdracht.

Wil je dit zelf proberen? De basisversie van n8n is gratis, en je kunt dit waarschijnlijk sneller opzetten dan een enkele certificaatrequest op de oude manier af te handelen. Je ontwikkelaars zullen je danken, en je zult één minder administratieve hoofdpijn hebben.

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