GitHub Actions: Secrets einrichten

GitBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie GitHub Actions Secrets verwenden. Secrets sind verschlüsselte Umgebungsvariablen, die Sie in einer Organisation, einem Repository oder einer Repository-Umgebung erstellen. Die von Ihnen erstellten Secrets stehen Ihnen in Ihren GitHub Actions Workflows zur Verfügung.

Dies ist unerlässlich, um sensible Informationen wie API-Schlüssel, Zugriffstoken und Passwörter sicher aufzubewahren. GitHub Actions schwärzt Secrets automatisch in den Protokollen (Logs), um sicherzustellen, dass sie nicht offengelegt werden.

Dieses Lab baut auf dem Repository auf, das Sie in den vorherigen Labs erstellt haben. Sie werden Ihrem github-actions-demo-Repository ein Secret hinzufügen und einen Workflow erstellen, der dieses verwendet.

Sie werden die folgenden Schritte durchführen:

  1. Ein Repository-Secret zu Ihrem bestehenden GitHub-Repository hinzufügen.
  2. Das Repository klonen und eine Workflow-Datei erstellen, die auf das Secret verweist.
  3. Schritte hinzufügen, um das Secret zu verwenden.
  4. Den Workflow nach GitHub pushen.
  5. Überprüfen, ob das Secret in den Ausführungsprotokollen maskiert (geschwärzt) ist.

Erstellen eines Repository Secrets namens MY_SECRET in den GitHub-Einstellungen

In diesem Schritt fügen Sie Ihrem bestehenden github-actions-demo-Repository auf GitHub ein Secret (Geheimnis) hinzu und klonen das Repository in Ihre LabEx-Umgebung.

Ein Repository-Secret hinzufügen

  1. Öffnen Sie Ihren Webbrowser und navigieren Sie zu Ihrem github-actions-demo-Repository auf GitHub: https://github.com/your-username/github-actions-demo
  2. Klicken Sie auf die Registerkarte Settings (Einstellungen).
  3. Scrollen Sie in der linken Seitenleiste zum Abschnitt Security (Sicherheit), klicken Sie auf Secrets and variables (Geheimnisse und Variablen) und wählen Sie dann Actions aus.
  4. Klicken Sie auf die grüne Schaltfläche New repository secret (Neues Repository-Geheimnis).
  5. Geben Sie die folgenden Details ein:
    • Name: MY_SECRET
    • Secret: SuperSecretValue123
  6. Klicken Sie auf Add secret (Geheimnis hinzufügen).
GitHub Actions secrets

Sie sollten nun MY_SECRET unter "Repository secrets" aufgelistet sehen.

Das Repository klonen

Wechseln Sie nun zurück zur LabEx-Umgebung, um das Repository zu klonen.

  1. Klicken Sie auf der GitHub-Repository-Seite für github-actions-demo auf die grüne Schaltfläche Code.
  2. Stellen Sie sicher, dass die Registerkarte HTTPS ausgewählt ist, und kopieren Sie die URL. Sie sollte etwa so aussehen: https://github.com/your-username/github-actions-demo.git.
  3. Öffnen Sie das Terminal in der LabEx-Umgebung. Der Standardpfad ist ~/project.
  4. Verwenden Sie den Befehl git clone, um das Repository herunterzuladen. Ersetzen Sie your-username durch Ihren tatsächlichen GitHub-Benutzernamen.
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git

Beispielausgabe:

Cloning into 'github-actions-demo'...
remote: Enumerating objects: X, done.
remote: Counting objects: 100% (X/X), done.
remote: Total X (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (X/X), done.
  1. Navigieren Sie in das geklonte Repository:
cd ~/project/github-actions-demo

Das Secret im Workflow mit ${{ secrets.MY_SECRET }} referenzieren

In diesem Schritt erstellen Sie eine Workflow-Datei, die das gerade erstellte Secret referenziert.

  1. Stellen Sie sicher, dass Sie sich im Repository-Verzeichnis befinden:
cd ~/project/github-actions-demo
  1. Erstellen Sie eine neue Datei namens secrets-demo.yml im Verzeichnis .github/workflows:
touch .github/workflows/secrets-demo.yml
  1. Öffnen Sie .github/workflows/secrets-demo.yml im WebIDE und fügen Sie den folgenden Inhalt hinzu. Dies definiert einen Basis-Workflow, der bei push-Ereignissen ausgelöst wird.
name: Secrets Demo
on: [push]

jobs:
  use-secret:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

Dies richtet den Job ein. Im nächsten Schritt fügen wir die Logik hinzu, um das Secret zu verwenden.

Einen Schritt hinzufügen, um den Secret-Wert sicher auszugeben (echo)

In diesem Schritt modifizieren Sie den Workflow, um auf das Geheimnis zuzugreifen. GitHub Actions ermöglicht Ihnen den Zugriff auf Secrets über die Syntax ${{ secrets.SECRET_NAME }}.

Workflow modifizieren

Öffnen Sie .github/workflows/secrets-demo.yml und fügen Sie den folgenden Schritt zur steps-Liste hinzu. Achten Sie auf die korrekte Einrückung.

- name: Print Secret
  env:
    MY_SECRET_VAL: ${{ secrets.MY_SECRET }}
  run: |
    echo "Printing secret directly (masked): ${{ secrets.MY_SECRET }}"
    echo "Printing secret from env (masked): $MY_SECRET_VAL"

Ihre vollständige Datei .github/workflows/secrets-demo.yml sollte wie folgt aussehen:

name: Secrets Demo
on: [push]

jobs:
  use-secret:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Print Secret
        env:
          MY_SECRET_VAL: ${{ secrets.MY_SECRET }}
        run: |
          echo "Printing secret directly (masked): ${{ secrets.MY_SECRET }}"
          echo "Printing secret from env (masked): $MY_SECRET_VAL"

Schlüsselkonzept

Wenn Sie ein Secret in einem Workflow verwenden, maskiert GitHub es automatisch in den Logs. Selbst wenn Sie versuchen, es mit echo auszugeben, zeigt die Ausgabe Sternchen (***) anstelle des tatsächlichen Wertes.

Workflow mit Secret-Referenz committen und pushen

In diesem Schritt committen Sie Ihre Änderungen und pushen sie auf GitHub. Dadurch wird die GitHub Action ausgelöst.

  1. Stellen Sie sicher, dass Sie sich im Repository-Verzeichnis befinden:
cd ~/project/github-actions-demo
  1. Stagen Sie die Workflow-Datei:
git add .github/workflows/secrets-demo.yml
  1. Comitten Sie die Änderungen mit einer aussagekräftigen Nachricht:
git commit -m "Add workflow to test secrets"
  1. Pushen Sie die Änderungen in das Remote-Repository auf GitHub:
git push

Hinweis zur Authentifizierung:
Wenn Sie git push ausführen, werden Sie von der WebIDE automatisch zur Authentifizierung aufgefordert. Befolgen Sie diese detaillierten Schritte:

  1. Ein Popup erscheint mit der Meldung: "The extension 'GitHub' wants to sign in using GitHub." Klicken Sie auf Allow.
  2. Es erscheint eine neue Benachrichtigung. Klicken Sie auf "Copy&Continue to GitHub" und anschließend im nächsten Dialog auf "Open".
  3. Melden Sie sich in dem sich öffnenden Browserfenster bei Ihrem GitHub-Konto an und geben Sie den kopierten Autorisierungscode ein. Nach Bestätigung der Autorisierung schließt sich die Seite automatisch.
  4. Warten Sie einige Sekunden, und Sie werden sehen, wie das Terminal den Push-Vorgang erfolgreich abschließt.

Datenschutzhinweis: Die WebIDE wird für Authentifizierungszwecke vollen Zugriff auf Ihr GitHub-Konto anfordern. Sie müssen sich keine Sorgen um Datenschutzbedenken machen – die LabEx VM wird sofort nach Abschluss des aktuellen Labs zerstört, und Ihre Anmeldeinformationen sowie Autorisierungsinformationen werden nicht gespeichert.

Logs überprüfen, um sicherzustellen, dass das Secret ohne Offenlegung verwendet wird

Nach dem Pushen Ihres Codes wird der Workflow automatisch auf GitHub ausgelöst. Sie können die Protokolle des Workflow-Laufs einsehen, um zu überprüfen, ob das Secret sicher verwendet wird.

  1. Besuchen Sie Ihr Repository auf GitHub in einem Webbrowser: https://github.com/your-username/github-actions-demo
  2. Klicken Sie oben auf der Repository-Seite auf den Tab Actions.
  3. Sie sollten einen aufgeführten Workflow-Lauf sehen, der wahrscheinlich "Add workflow to test secrets" oder "Secrets Demo" heißt.

Hinweis: Wenn Sie Code pushen, können mehrere Actions ausgelöst werden, falls Sie mehrere Workflow-Dateien in Ihrem Repository haben. Bitte identifizieren Sie den korrekten Workflow-Lauf, indem Sie den Workflow-Namen in der linken Seitenleiste überprüfen oder die Liste der Workflow-Läufe auf der rechten Seite verwenden.

  1. Klicken Sie auf den Titel des Workflow-Laufs und dann auf den Job use-secret.
  2. Erweitern Sie den Schritt Print Secret, um die Ausgabe zu sehen.

Sie sollten etwas Ähnliches sehen wie:

Printing secret directly (masked): ***
Printing secret from env (masked): ***

Beachten Sie, dass GitHub Actions das Secret automatisch mit *** in den Protokollen maskiert hat, obwohl der Workflow versucht hat, den Secret-Wert auszugeben. Dies ist ein entscheidendes Sicherheitsmerkmal – es verhindert, dass sensible Informationen versehentlich in Protokollen offengelegt werden, selbst wenn Sie versuchen, sie auszugeben. Dies bestätigt, dass Ihr Secret sicher konfiguriert ist und im Workflow verwendet wird, ohne seinen tatsächlichen Wert preiszugeben.

GitHub Actions logs

Zusammenfassung

In diesem Lab haben Sie erfolgreich gelernt, wie Sie:

  1. Ein Repository Secret in den GitHub Settings erstellen, um sensible Daten zu speichern.
  2. Eine GitHub Actions Workflow-Datei erstellen.
  3. Auf das Secret mithilfe der Syntax ${{ secrets.MY_SECRET }} referenzieren.
  4. Das Secret an Umgebungsvariablen innerhalb eines Job-Schritts übergeben.
  5. Überprüfen, dass GitHub den Secret-Wert automatisch in den Build-Logs maskiert.

Diese Vorgehensweise stellt sicher, dass Ihre sensiblen Daten, wie z.B. Deployment-Schlüssel und API-Tokens, während Ihres gesamten CI/CD-Prozesses sicher bleiben.