GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So speichern Sie den AWS-Benutzerzugriffsschlüssel und den geheimen Schlüssel in Jenkins

Sie können Ihre AWS-Schlüssel sicher in Jenkins-Anmeldeinformationen speichern. Wenn Sie von Ihrem Jenkins-Server aus mit AWS interagieren möchten, können Sie Ihre AWS IAM-Benutzerschlüssel sicher in Jenkins speichern, anstatt die Schlüssel offen in Ihrer Jenkins-Pipeline zu verwenden. Das Jenkins-Plug-in „CloudBees AWS Credentials“ ermöglicht das Speichern von AWS IAM-Benutzeranmeldeinformationen innerhalb der Jenkins Credentials API. Wir können diese Anmeldedaten dann in unserer Pipeline verwenden und sie mit dem Schritt „withAWS“ in die Pipeline einfügen. Um den Schritt „withAWS“ zu verwenden, müssen wir das Plug-in „AWS Steps Plugin“ installieren.

In diesem Artikel installieren wir das Plugin „CloudBees AWS Credentials“ und speichern den geheimen Schlüssel und den Zugriffsschlüssel des AWS IAM-Benutzers in Jenkins mit diesem Plugin. Wir werden das „AWS Steps Plugin“ installieren, damit wir „awsStep“ verwenden können, um die von uns erstellten Anmeldeinformationen einzufügen. Wir führen S3-Objekt-Upload- und -Download-Objekt-Vorgänge innerhalb der Pipeline aus, um die von uns erstellten Anmeldeinformationen zu testen.

Voraussetzungen

  1. AWS-IAM-Benutzer mit seinem Zugriffsschlüssel und geheimen Schlüssel mit Lese-/Schreibzugriff auf S3-Buckets (Klicken Sie hier, um zu erfahren, wie Sie einen IAM-Benutzer auf AWS erstellen).
  2. S3-Bucket (Klicken Sie hier, um zu erfahren, wie Sie einen S3-Bucket auf AWS erstellen).
  3. Jenkins-Server (Suchen Sie nach "How to install Jenkins using a war file on AWS EC2 Ubuntu instance?", um zu lernen, wie man einen Jenkins-Server erstellt)

Was werden wir tun?

  1. Installieren Sie das Plug-in für Cloudbees-AWS-Anmeldeinformationen.
  2. Speichern Sie AWS Access und Secret Keys in Jenkins Credentials.
  3. Installieren Sie das AWS Steps-Plug-in.
  4. Erstellen Sie eine Pipeline und testen Sie die von uns erstellten Anmeldeinformationen.

Installieren Sie das Cloudbees AWS Credentials-Plugin

Melden Sie sich unter http://:8080/jenkins

bei Jenkins an

Hier habe ich http://52.87.233.129:8080/jenkins/

Sie sehen das Dashboard wie folgt. Klicken Sie im linken Bereich auf „Jenkins verwalten“.

Klicken Sie hier unter "Systemkonfiguration" auf "Plugins verwalten", um das benötigte Plugin zu installieren.

Sie sehen 4 Registerkarten, Updates, Verfügbar, Installiert und Erweitert. Klicken Sie auf die Registerkarte "Verfügbar", um nach dem Plugin zu suchen.

Suchen Sie im Suchfeld auf der Registerkarte „Verfügbar“ nach „cloudbees secret manager“. Aktivieren Sie das Kontrollkästchen des Plugin-Ergebnisses „Cloudbees AWS Credentials“, das Sie erhalten, und klicken Sie auf „Install without restart“, um das Plugin zu installieren, ohne Jenkins neu zu starten.

Sobald das Plugin installiert ist, erhalten Sie die folgende "Erfolgs"-Meldung.

Speichern Sie AWS Access und Secret Keys in Jenkins Credentials

Wir sind jetzt bereit, AWS-Anmeldeinformationen zu speichern.

Gehen Sie zurück zum Haupt-Dashboard und klicken Sie auf „Manage Jenkins“.

Klicken Sie nun unter „Sicherheit“ auf „Anmeldeinformationen verwalten“, um den geheimen AWS-Schlüssel und den Zugriffsschlüssel zu speichern.

Klicken Sie auf „global“ unter „Auf Jenkins beschränkte Stores“ --> „Anmeldeinformationen hinzufügen“.

Auf dieser Seite können Sie die Geheimnisse speichern. Klicken Sie auf das Dropdown-Menü Art und wählen Sie AWS aus. Geben Sie einen Namen für die Geheimnisse, eine Beschreibung, eine Zugriffsschlüssel-ID und einen geheimen Zugriffsschlüssel an. Klicken Sie auf OK, um die Geheimnisse zu speichern.

Sie können sehen, dass das Geheimnis jetzt verfügbar ist.

Installieren Sie das AWS Steps-Plug-in

Der nächste Schritt ist die Installation des Plugins „Pipeline AWS Steps“. Gehen Sie zurück zum Haupt-Dashboard und klicken Sie auf Manage Jenkins --> Manage Plugins.

Suchen Sie auf der Registerkarte „Verfügbar“ nach „AWS Steps“. Wählen Sie das Plugin „Pipeline:AWS Steps“ aus und klicken Sie auf „Install without restart“. Dadurch wird das Plugin installiert, ohne Jenkins neu zu starten.

Sobald das Plugin erfolgreich installiert wurde, erhalten Sie die Erfolgsmeldung wie folgt.

Erstellen Sie eine Pipeline und testen Sie die von uns erstellten Anmeldeinformationen.

Lassen Sie uns nun einen neuen Job erstellen. In diesem Job werden wir versuchen das von uns erstellte Secret zu verwenden.

Gehen Sie zurück zum Haupt-Dashboard und klicken Sie auf „Neue Artikel“.

Geben Sie dem Job einen Namen und wählen Sie als Jobtyp "Pipeline". Klicken Sie auf "Ok", damit wird ein Job vom Typ Pipeline erstellt.

Klicken Sie auf "Trigger erstellen", scrollen Sie nach unten zu "Pipeline", wählen Sie "Pipeline-Skript" aus und fügen Sie den folgenden Code in das Textfeld ein.

Dies ist eine Pipeline mit 1 Stufe „AWS-Anmeldeinformationen testen“. In diesem Schritt verwenden wir „withAWS“ und geben hier unseren geheimen Namen an. Darin erstellen wir eine Beispieldatei „hello.txt“ mit einer „hello Jenkins“-Nachricht. Diese Datei wird dann in den S3-Bucket "devopslee" in meinem Konto hochgeladen.

Sie müssen Ihren Bucket-Namen anstelle von devopslee angeben.

Um zu sehen, ob die Datei hochgeladen wurde, versuchen wir, sie als „downloadedHello.txt“ herunterzuladen und mit dem Befehl „cat“ auszudrucken.

Wenn all diese Schritte erfolgreich waren, bedeutet dies, dass wir unseren geheimen Schlüssel und unseren Zugriffsschlüssel erfolgreich mit den von uns erstellten Anmeldedaten verwenden konnten.

pipeline {
    agent any
    stages {
        stage('test AWS credentials') {
            steps {
                withAWS(credentials: 'jenkins-test-user', region: 'us-east-1') {
                    sh 'echo "hello Jenkins">hello.txt'
                    s3Upload acl: 'Private', bucket: 'devopslee', file: 'hello.txt'
                    s3Download bucket: 'devopslee', file: 'downloadedHello.txt', path: 'hello.txt'
                    sh 'cat downloadedHello.txt'
                }
            }
        }
    }
}

Um nun die obige Pipeline zu testen, gehen Sie zur Pipeline und klicken Sie auf "Jetzt erstellen". Dadurch wird die Pipeline ausgeführt.

Klicken Sie auf Build-Verlauf --> Konsolenausgabe.

Hier, in der Konsolenausgabe, können Sie sehen, dass die Datei erfolgreich erstellt, hochgeladen, heruntergeladen und gelesen wurde.

Das bedeutet, dass wir den S3-Bucket mithilfe des Zugriffsschlüssels und des Geheimnisses, das wir in den Anmeldeinformationen gespeichert haben, erfolgreich authentifizieren konnten.

Schlussfolgerung

In diesem Artikel haben wir Cloudbees AWS Credentials- und AWS Steps-Plug-in-Plugins in Jenkins installiert. Wir haben die geheimen und Zugriffsschlüssel des AWS IAM-Benutzers in Jenkins unter Verwendung von Jenkins-Anmeldeinformationen gespeichert. Wir haben auch eine Jenkins-Pipeline erstellt, in der wir die von uns erstellten Anmeldeinformationen getestet haben, indem wir ein Objekt in den S3-Bucket hoch- und heruntergeladen haben.


Linux
  1. So verwalten Sie den Ablauf und die Alterung von Benutzerkennwörtern in Linux

  2. So fügen Sie einen neuen MySQL-Benutzer hinzu und gewähren Zugriffsrechte

  3. Zugriff auf Linux-Dateisysteme in Windows 10 und WSL 2

  4. So erstellen und löschen Sie Benutzergruppen in Linux

  5. Wie erstelle ich einen neuen Benutzer mit SSH-Zugriff?

So erstellen Sie ein SNS-Thema und einen Abonnenten auf AWS

Was ist UID in Linux, wie man es findet und ändert

So beschränken Sie den SSH-Zugriff auf bestimmte Benutzer in Linux

So beschränken Sie den Zugriff auf Verzeichnisse und Unterverzeichnisse auf Nginx

So erstellen Sie einen Sudo-Benutzer unter Ubuntu und Debian

So beschränken Sie Ihren Root-Benutzerzugriff in Debian und Ubuntu