Skip to main content

Verwenden von Geheimnissen in GitHub-Aktionen

Mithilfe von Geheimnissen können Sie vertrauliche Informationen in Ihrer Organisation, im Repository oder in Repositoryumgebungen speichern.

Tool navigation

Informationen zu Geheimnissen

Geheimnisse sind Variablen, die du in einer Organisation, einem Repository oder einer Repositoryumgebung erstellst. Du kannst diese Geheimnisse in GitHub Actions-Workflows verwenden. GitHub Actions kann ein Geheimnis nur lesen, wenn du das Geheimnis explizit in einen Workflow aufnimmst.

Für Geheimnisse, die auf Organisationsebene gespeichert sind, kannst Du Zugriffsrichtlinien festlegen, um zu kontrollieren, welche Repositorys die Organisations-Geheimnisse verwenden können. Geheimnisse auf Organisationsebene ermöglichen es Dir, Geheimnisse zwischen mehreren Repositories zu teilen, was die Notwendigkeit zur Erstellung von doppelten Geheimnissen verringert. Die Aktualisierung eines Organisationsgeheimnisses an nur einem Ort stellt außerdem sicher, dass die Änderung in allen Workflows aller Repositorys wirksam wird, die dieses Geheimnis verwenden.

Zur Steuerung des Zugriffs auf Geheimnisse, die auf der Umgebungsebene gespeichert sind, kannst du genehmigende Personen aktivieren. So kann ein Workflowauftrag erst dann auf Umgebungsgeheimnisse zugreifen, nachdem eine genehmigende Person die entsprechende Genehmigung erteilt hat.

Hinweis: Wenn deine GitHub Actions-Workflows auf Ressourcen eines Cloudanbieters zugreifen müssen, der OpenID Connect (OIDC) unterstützt, kannst du deine Workflows so konfigurieren, dass die Authentifizierung direkt beim Cloudanbieter erfolgt. Dadurch musst du diese Anmeldeinformationen nicht mehr als langlebige Geheimnisse speichern und profitierst zudem von weiteren Sicherheitsvorteilen. Weitere Informationen findest du unter Informationen zur Sicherheitshärtung mit OpenID Connect.

Benennen von Geheimnissen

Für Geheimnisnamen gelten folgende Regeln:

  • Namen dürfen nur alphanumerische Zeichen ([a-z], [A-Z], [0-9]) oder Unterstriche (_) enthalten. Leerzeichen sind nicht zulässig.

  • Namen dürfen nicht mit dem Präfix GITHUB_ beginnen.

  • Namen dürfen nicht mit einer Ziffer beginnen.

  • Bei den Namen wird die Groß-/Kleinschreibung nicht berücksichtigt.

  • Namen müssen auf der Ebene eindeutig sein, auf der sie erstellt werden.

    So muss ein auf der Umgebungsebene erstelltes Geheimnis einen eindeutigen Namen in dieser Umgebung besitzen, ein auf der Repositoryebene erstelltes Geheimnis einen eindeutigen Namen in diesem Repository und ein auf der Organisationsebene erstelltes Geheimnis einen eindeutigen Namen auf dieser Ebene.

    Wenn ein Geheimnis mit demselben Namen auf mehreren Ebenen vorhanden ist, erhält das Geheimnis auf der niedrigsten Ebene Vorrang. Wenn beispielsweise ein Geheimnis auf Organisationsebene denselben Namen wie ein Geheimnis auf Repositoryebene aufweist, erhält das Geheimnis auf Repositoryebene Vorrang. Analog dazu hat bei einem Geheimnis mit demselben Namen in einer Organisation, einem Repository und einer Umgebung das Geheimnis auf Umgebungsebene Vorrang.

Damit GitHub dein Geheimnis in Protokollen bearbeitet, verwende keine strukturierten Daten als Werte von Geheimnissen. Vermeide beispielsweise Geheimnisse zu erstellen, die JSON oder codierte Git-Blobs enthalten.

Zugreifen auf Geheimnisse

Um ein Geheimnis für eine Aktion verfügbar zu machen, legest du das Geheimnis als Eingabe oder Umgebungsvariable in der Workflow-Datei fest. In der README-Datei der Aktion erfährst Du, welche Eingaben und Umgebungsvariablen die Aktion erwartet. Weitere Informationen findest du unter Workflowsyntax für GitHub Actions.

Sie können Geheimnisse in einer Workflow-Datei verwenden und lesen, wenn Sie auf die Datei Bearbeitungs-Zugriff haben. Weitere Informationen findest du unter Zugriffsberechtigungen auf GitHub.

Warnung: Wenn in der Aufgabe ein Geheimnis verwendet wurde, werden GitHub automatisch die in das Protokoll ausgegebenen Geheimnisse unkenntlich gemacht. Sie sollten die Geheimnisse nicht absichtlich in das Protokoll ausgeben.

Geheimnisse auf der Organisations- und Repositoryebene werden gelesen, wenn eine Workflowausführung in die Warteschlange eingereiht wird, während Geheimnisse auf der Umgebungsebene beim Starten eines Auftrags gelesen werden, der auf die Umgebung verweist.

Mit der REST-API kannst du Geheimnisse auch verwalten. Weitere Informationen findest du unter REST-API-Endpunkte für GitHub-Actions-Geheimnisse.

Einschränken von Berechtigungen für Anmeldeinformationen

Beim Generieren von Anmeldeinformationen wird empfohlen, möglichst geringe Berechtigungen zu erteilen. Verwende z. B. anstelle von persönlichen Anmeldeinformationen Bereitstellungsschlüssel oder ein Dienstkonto. Ziehe in Erwägung, Nur-Lese-Berechtigungen zu gewähren, wenn dies ausreicht, und schränke den Zugriff so weit wie möglich ein.

Wählen Sie beim Generieren einer personal access token (classic) die wenigen erforderlichen Bereiche aus. Wählen Sie beim Generieren einer fine-grained personal access token die erforderlichen Mindestberechtigungen und den erforderlichen Repository-Zugriff aus.

Anstelle eines personal access token solltest du eine GitHub App verwenden, die differenzierte Berechtigungen und kurzlebige Token verwendet, ähnlich einem fine-grained personal access token. Im Gegensatz zu einem personal access token ist eine GitHub App nicht an einen Benutzer gebunden, sodass der Workflow auch dann weiterhin funktioniert, wenn der Benutzer, der die App installiert hat, deine Organisation verlässt. Weitere Informationen findest du unter Authentifizierte API-Anforderungen mit einer GitHub-App in einem GitHub Actions-Workflow.

Hinweis: Benutzerinnen mit Projektmitarbeiterzugriff auf ein Repository können die REST-API verwenden, um Geheimnisse für dieses Repository zu verwalten. Benutzerinnen mit Administratorzugriff auf eine Organisation können die REST-API verwenden, um Geheimnisse für diese Organisation zu verwalten. Weitere Informationen findest du unter REST-API-Endpunkte für GitHub-Actions-Geheimnisse.

Erstellen von Geheimnissen für ein Repository

Um Geheimnisse oder Variablen auf GitHub für ein Repository eines persönlichen Kontos zu erstellen, müssen Sie Repositorybesitzer*in sein. Um Geheimnisse oder Variablen auf GitHub für ein Organisationsrepository zu erstellen, müssen Sie über admin-Zugriff verfügen. Um Geheimnisse oder Variablen für ein Repository eines persönlichen Kontos oder einer Organisation über die REST-API zu erstellen, müssen Sie über Projektmitarbeiterzugriff verfügen.

  1. Navigieren Sie auf GitHub zur Hauptseite des Repositorys.

  2. Wähle unter dem Namen deines Repositorys die Option Einstellungen aus. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

    Screenshot eines Repositoryheaders mit den Registerkarten. Die Registerkarte „Einstellungen“ ist dunkelorange umrandet.

  3. Wählen Sie im Abschnitt „Sicherheit“ in der Randleiste Geheimnisse und Variablen und klicken Sie dann auf Aktionen.

  4. Klicke auf die Registerkarte Geheimnisse.

    Screenshot der Seite „Aktionsgeheimnisse und Variablen“. Die Registerkarte „Geheimnisse“ ist dunkelorange umrandet.

  5. Klicke auf Neues Repositorygeheimnis.

  6. Gib im Feld Name einen Namen für dein Geheimnis ein.

  7. Gib im Feld Geheimnis einen Wert für dein Geheimnis ein.

  8. Klicke auf Geheimnis hinzufügen.

Wenn dein Repository über Umgebungsgeheimnisse verfügt oder auf Geheimnisse der übergeordneten Organisation zugreifen kann, werden diese Geheimnisse auch auf dieser Seite aufgeführt.

Weitere Informationen zur GitHub CLI findest du unter Informationen zur GitHub CLI.

Verwende zum Hinzufügen eines Geheimnisses auf Repositoryebene den Unterbefehl gh secret set. Ersetze secret-name durch den Namen deines Geheimnisses.

gh secret set SECRET_NAME

Du wirst von der CLI zur Eingabe eines Werts für das Geheimnis aufgefordert. Alternativ kannst du den Wert des Geheimnisses aus einer Datei lesen.

gh secret set SECRET_NAME < secret.txt

Verwende zum Auflisten aller Geheimnisse für das Repository den Unterbefehl gh secret list.

Erstellen von Geheimnissen für eine Umgebung

Um Geheimnisse oder Variablen für eine Umgebung in einem Repository eines persönlichen Kontos zu erstellen, müssen Sie Besitzer des Repositorys sein. Für das Erstellen von Geheimnissen oder Variablen für eine Umgebung in einem Organisationsrepository benötigen Sie admin-Zugriff. Weitere Informationen zu Umgebungen finden Sie unter „Verwalten von Umgebungen für die Bereitstellung“.

  1. Navigieren Sie auf GitHub zur Hauptseite des Repositorys.

  2. Wähle unter dem Namen deines Repositorys die Option Einstellungen aus. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

    Screenshot eines Repositoryheaders mit den Registerkarten. Die Registerkarte „Einstellungen“ ist dunkelorange umrandet.

  3. Klicke auf der linken Randleiste auf Umgebungen.

  4. Klicke auf die Umgebung, der du ein Geheimnis hinzufügen möchtest.

  5. Klicke unter Umgebungsgeheimnisse auf Geheimnis hinzufügen.

  6. Gib einen Namen für dein Geheimnis in das Eingabefeld Name ein.

  7. Gib den Wert für das Geheimnis ein.

  8. Klicke auf Geheimnis hinzufügen.

Wenn du ein Geheimnis für eine Umgebung hinzufügen möchtest, verwende den Unterbefehl gh secret set mit dem Flag --env oder -e und dem Namen der Umgebung.

gh secret set --env ENV_NAME SECRET_NAME

Wenn du alle Geheimnisse für eine Umgebung auflisten möchtest, verwende den Unterbefehl gh secret list mit dem Flag --env oder -e und dem Namen der Umgebung.

gh secret list --env ENV_NAME

Erstellen von Geheimnissen für eine Organisation

Beim Erstellen eines Geheimnisses oder einer Variable in einer Organisation kannst du mit einer Richtlinie den Zugriff jeweils nach Repository einschränken. Du kannst beispielsweise allen Repositorys Zugriff gewähren oder nur private Repositorys oder eine angegebene Liste von Repositorys zulassen.

Organisationsbesitzerinnen und Benutzerinnen mit den Berechtigungen „Organisationsaktionenvariablen verwalten“ oder „Organisationsaktioneneheimnisse verwalten“ können Geheimnisse oder Variablen auf Organisationsebene erstellen.

Weitere Informationen findest du unter Informationen zu benutzerdefinierten Organisationsrollen.

  1. Navigieren Sie auf GitHub zur Hauptseite der Organisation.

  2. Klicke unter deinem Organisationsnamen auf die Option Einstellungen. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

    Screenshot der Registerkarten im Profil einer Organisation. Die Registerkarte „Einstellungen“ ist dunkelorange umrandet.

  3. Wählen Sie im Abschnitt „Sicherheit“ in der Randleiste Geheimnisse und Variablen und klicken Sie dann auf Aktionen.

  4. Klicke auf die Registerkarte Geheimnisse.

    Screenshot: Seite „Geheimnisse und Variablen für Aktionen“. Die Registerkarte „Geheimnisse“ ist dunkelorange umrandet.

    Hinweis: Auf der Seite „Aktionen Geheimnisse und Variablen“ werden je nach Ihren Berechtigungen möglicherweise keine unterschiedlichen Registerkarten für Geheimnisse und Variablen angezeigt. Organisationsbesitzerinnen und Benutzerinnen mit den Berechtigungen „Organisationsaktionenvariablen verwalten“ und „Organisationsaktionengeheimnisse verwalten“ sehen die Registerkarten Variablen und Geheimnisse. Weitere Informationen findest du unter Informationen zu benutzerdefinierten Organisationsrollen.

  5. Klicke auf Neues Organisationsgeheimnis.

  6. Gib einen Namen für dein Geheimnis in das Eingabefeld Name ein.

  7. Gib den Wert für das Geheimnis ein.

  8. Wähle in der Dropdownliste Repositoryzugriff eine Zugriffsrichtlinie aus.

  9. Klicke auf Geheimnis hinzufügen.

Hinweis: Standardmäßig erfolgt die GitHub CLI-Authentifizierung mit den Bereichen repo und read:org. Zur Verwaltung von Organisationsgeheimnissen musst du zusätzlich den Bereich admin:org autorisieren.

gh auth login --scopes "admin:org"

Wenn du ein Geheimnis für eine Organisation hinzufügen möchtest, verwende den Unterbefehl gh secret set mit dem Flag --org oder -o und dem Namen der Organisation.

gh secret set --org ORG_NAME SECRET_NAME

Standardmäßig ist das Geheimnis nur für private Repositorys verfügbar. Wenn du angeben möchtest, dass das Geheimnis für alle Repositorys innerhalb der Organisation verfügbar sein soll, verwende das Flag --visibility oder -v.

gh secret set --org ORG_NAME SECRET_NAME --visibility all

Wenn du angeben möchtest, dass das Geheimnis für ausgewählte Repositorys innerhalb der Organisation verfügbar sein soll, verwende das Flag --repos oder -r.

gh secret set --org ORG_NAME SECRET_NAME --repos REPO-NAME-1, REPO-NAME-2

Wenn du alle Geheimnisse für eine Organisation auflisten möchtest, verwende den Unterbefehl gh secret list mit dem Flag --org oder -o und dem Namen der Organisation.

gh secret list --org ORG_NAME

Überprüfen des Zugriffs auf Organisationsgeheimnisse

Du kannst überprüfen, welche Zugriffsrichtlinien auf ein Geheimnis in deiner Organisation angewendet werden.

  1. Navigieren Sie auf GitHub zur Hauptseite der Organisation.

  2. Klicke unter deinem Organisationsnamen auf die Option Einstellungen. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

    Screenshot der Registerkarten im Profil einer Organisation. Die Registerkarte „Einstellungen“ ist dunkelorange umrandet.

  3. Wählen Sie im Abschnitt „Sicherheit“ in der Randleiste Geheimnisse und Variablen und klicken Sie dann auf Aktionen.

  4. Die Liste der Geheimnisse enthält alle konfigurierten Berechtigungen und Richtlinien. Klicke auf Aktualisieren, um weitere Details zu den konfigurierten Berechtigungen des jeweiligen Geheimnisses anzuzeigen.

Verwenden von Geheimnissen in einem Workflow

Hinweise:

  • Mit Ausnahme von GITHUB_TOKEN werden Geheimnisse nicht an den Runner übergeben, wenn ein Workflow von einem geforkten Repository aus ausgelöst wird.

  • Geheimnisse werden nicht automatisch an wiederverwendbare Workflows übergeben. Weitere Informationen findest du unter Wiederverwenden von Workflows.

Wenn du für eine Aktion ein Geheimnis als Eingabe- oder Umgebungsvariable bereitstellen möchtest, kannst du mithilfe des secrets-Kontexts auf Geheimnisse zugreifen, die du in deinem Repository erstellt hast. Weitere Informationen findest du unter Zugreifen auf kontextbezogene Informationen zu Workflowausführungen und unter Workflowsyntax für GitHub Actions.

steps:
  - name: Hello world action
    with: # Set the secret as an input
      super_secret: ${{ secrets.SuperSecret }}
    env: # Or as an environment variable
      super_secret: ${{ secrets.SuperSecret }}

In if:-Bedingungen kann nicht direkt auf Geheimnisse verwiesen werden. Erwäge stattdessen, Geheimnisse als Umgebungsvariablen auf Auftragsebene festzulegen, und verweise dann auf die Umgebungsvariablen, um Schritte im Auftrag bedingt auszuführen. Weitere Informationen findest du unter Zugreifen auf kontextbezogene Informationen zu Workflowausführungen und jobs.<job_id>.steps[*].if.

Wurde kein Geheimnis festgelegt, gibt ein Ausdruck, der auf das Geheimnis verweist (z. B. ${{ secrets.SuperSecret }} im Beispiel), eine leere Zeichenfolge zurück.

Wann immer dies möglich ist, vermeide die Übergabe von Geheimnissen zwischen Prozessen von der Befehlszeile aus. Befehlszeilenprozesse sind möglicherweise für andere Benutzer*innen sichtbar (mit dem Befehl ps) oder können durch Sicherheitsüberwachungsereignisse erfasst werden. Verwende zum Schutz von Geheimnissen Umgebungsvariablen, STDIN oder andere Methoden, die vom Zielprozess unterstützt werden.

Wenn du Geheimnisse innerhalb einer Kommandozeile übergeben musst, umschließe sie im Rahmen der gültigen Quotierungsregeln. Geheimnisse enthalten oft Sonderzeichen, die in deiner Shell unbeabsichtigte Wirkungen entfalten können. Um diese Sonderzeichen zu vermeiden, verwende deine Umgebungsvariablen mit Anführungszeichen. Beispiel:

Beispiel mit Bash

steps:
  - shell: bash
    env:
      SUPER_SECRET: ${{ secrets.SuperSecret }}
    run: |
      example-command "$SUPER_SECRET"

Beispiel mit PowerShell

steps:
  - shell: pwsh
    env:
      SUPER_SECRET: ${{ secrets.SuperSecret }}
    run: |
      example-command "$env:SUPER_SECRET"

Beispiel mit Cmd.exe

steps:
  - shell: cmd
    env:
      SUPER_SECRET: ${{ secrets.SuperSecret }}
    run: |
      example-command "%SUPER_SECRET%"

Einschränkungen für Geheimnisse

Du kannst bis zu 1.000 Organisationsgeheimnisse, 100 Repositorygeheimnisse und 100 Umgebungsgeheimnisse speichern.

Ein Workflow, der in einem Repository erstellt wurde, kann auf die folgende Anzahl von Geheimnissen zugreifen:

  • Alle 100 Repositorygeheimnisse.
  • Wurde dem Repository der Zugriff auf mehr als 100 Geheimnisse auf Organisationsebene zugewiesen, kann der Workflow nur die ersten 100 Organisationsgeheimnisse (alphabetisch nach dem Namen des Geheimnisses sortiert) verwenden.
  • Alle 100 Umgebungsgeheimnisse.

Geheimnisse sind auf 48 KB beschränkt. Weitere Informationen zum Speichern größerer Geheimnisse findest du unter der Problemumgehung Speichern großer Geheimnisse unten.

Speichern großer Geheimnisse

Um Geheimnisse zu verwenden, die größer als 48 KB sind, können Sie mit einer Problemumgehung Geheimnisse in Ihrem Repository speichern und die Passphrase zur Entschlüsselung als Geheimnis auf GitHub speichern. Mit gpg kannst du z. B. eine Datei mit deinem Geheimnis lokal verschlüsseln, bevor du die verschlüsselte Datei in deinem Repository auf GitHub eincheckst. Weitere Informationen findest du unter gpg manpage.

Warnung: Vergewissere dich, dass deine Geheimnisse beim Ausführen des Workflows nicht gedruckt werden. Wenn du diesen Workaround verwendest, redigiert GitHub keine Geheimnisse, die in Protokollen gedruckt werden.

  1. Führe in deinem Terminal den folgenden Befehl aus, um die Datei mit deinem Geheimnis mithilfe von gpg und dem AES256-Verschlüsselungsalgorithmus zu verschlüsseln. In diesem Beispiel ist my_secret.json die Datei, die das Geheimnis enthält.

    gpg --symmetric --cipher-algo AES256 my_secret.json
    
  2. Du wirst aufgefordert, eine Passphrase einzugeben. Merke dir die Passphrase, denn du musst ein neues Geheimnis auf GitHub mit der Passphrase als Wert erstellen.

  3. Erstelle ein neues Geheimnis, das die Passphrase enthält. Erstelle z. B. ein neues Geheimnis mit dem Namen LARGE_SECRET_PASSPHRASE, und lege den Wert des Geheimnisses auf die Passphrase fest, die du im vorherigen Schritt verwendet hast.

  4. Kopiere deine verschlüsselte Datei in einen Pfad in deinem Repository, und committe sie. In diesem Beispiel lautet die verschlüsselte Datei my_secret.json.gpg.

    Warnung: Kopiere die verschlüsselte my_secret.json.gpg-Datei, die mit der Dateierweiterung .gpg endet, und nicht die unverschlüsselte my_secret.json-Datei.

    git add my_secret.json.gpg
    git commit -m "Add new secret JSON file"
    
  5. Erstelle ein Shellskript in deinem Repository, um die Geheimnisdatei zu entschlüsseln. In diesem Beispiel heißt das Skript decrypt_secret.sh.

    Shell
    #!/bin/sh
    
    # Decrypt the file
    mkdir $HOME/secrets
    # --batch to prevent interactive command
    # --yes to assume "yes" for questions
    gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \
    --output $HOME/secrets/my_secret.json my_secret.json.gpg
    
  6. Stelle sicher, dass dein Shell-Skript ausführbar ist, bevor du es in deinem Repository eincheckst.

    chmod +x decrypt_secret.sh
    git add decrypt_secret.sh
    git commit -m "Add new decryption script"
    git push
    
  7. Verwende in deinem GitHub Actions-Workflow einen step, um das Shellskript aufzurufen und das Geheimnis zu entschlüsseln. Verwende für eine Kopie deines Repositorys in der Umgebung, in der dein Workflow ausgeführt wird, die Aktion actions/checkout. Verweise relativ zum Stamm des Repositorys mithilfe des Befehls run auf dein Shellskript.

    name: Workflows with large secrets
    
    on: push
    
    jobs:
      my-job:
        name: My Job
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - name: Decrypt large secret
            run: ./decrypt_secret.sh
            env:
              LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
          # This command is just an example to show your secret being printed
          # Ensure you remove any print statements of your secrets. GitHub does
          # not hide secrets that use this workaround.
          - name: Test printing your secret (Remove this step in production)
            run: cat $HOME/secrets/my_secret.json
    

Speichern binärer Base64-Blobs als Geheimnisse

Mithilfe der Base64-Codierung kannst du kleine binäre Blobs als Geheimnisse speichern. Anschließend kannst du in deinem Workflow auf das Geheimnis verweisen und es zur Verwendung im Runner decodieren. Die Größenbeschränkungen findest du unter Verwenden von Geheimnissen in GitHub-Aktionen.

Hinweis: Base64 ermöglicht nur eine Konvertierung von Binärdaten in Text und ersetzt nicht die eigentliche Verschlüsselung.

  1. Verwende base64, um die Datei in eine Base64-Zeichenfolge zu codieren. Zum Beispiel:

    Unter macOS können Sie Folgendes ausführen:

    base64 -i cert.der -o cert.base64
    

    Unter Linux können Sie Folgendes ausführen:

    base64 -w 0 cert.der > cert.base64
    
  2. Erstelle ein Geheimnis, das die Base64-Zeichenfolge enthält. Beispiel:

    $ gh secret set CERTIFICATE_BASE64 < cert.base64
    ✓ Set secret CERTIFICATE_BASE64 for octocat/octorepo
    
  3. Leite das Geheimnis per Pipeline an base64 --decode weiter, um vom Runner auf die Base64-Zeichenfolge zuzugreifen. Beispiel:

    name: Retrieve Base64 secret
    on:
      push:
        branches: [ octo-branch ]
    jobs:
      decode-secret:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - name: Retrieve the secret and decode it to a file
            env:
              CERTIFICATE_BASE64: ${{ secrets.CERTIFICATE_BASE64 }}
            run: |
              echo $CERTIFICATE_BASE64 | base64 --decode > cert.der
          - name: Show certificate information
            run: |
              openssl x509 -in cert.der -inform DER -text -noout
    

Hinweis: Die Verwendung einer anderen Shell erfordert möglicherweise andere Befehle zum Decodieren des Geheimnisses in eine Datei. Unter Windows-Runnern wird empfohlen, eine Bash-Shell mit shell: bash zu verwenden, um die Befehle im obigen run-Schritt zu verwenden.

Geheimnisse aus Workflow-Runner-Protokollen überarbeiten

GitHub Actions bearbeitet automatisch den Inhalt aller GitHub-Geheimnisse, die in Workflow-Protokolle gedruckt werden.

GitHub Actions macht auch Informationen unkenntlich, die zwar als sensibel erkannt, aber nicht als Geheimnis gespeichert werden. Derzeit unterstützt GitHub Folgendes:

  • Azure-Schlüssel mit 32 Byte und 64 Byte
  • Azure AD-Client-App-Kennwörter
  • Azure Cache-Schlüssel
  • Azure Container Registry-Schlüssel
  • Azure-Funktions-Host-Schlüssel
  • Azure Search-Schlüssel
  • Datenbankverbindungszeichenfolgen
  • HTTP Bearertoken-Header
  • JWTs
  • NPM-Autorentoken
  • API-Schlüssel für NuGet
  • v1 GitHub-Installationstoken
  • v2 GitHub-Installationstoken (ghp, gho, ghu, ghs, ghr)
  • v2 GitHub-PATs

Note

Wenn Sie möchten, dass andere Arten vertraulicher Informationen automatisch unkenntlich gemacht werden, wenden Sie sich bitte in unseren Community-Diskussionen an uns.

Als Gewohnheit der bewährten Methode sollten Sie alle vertraulichen Informationen maskieren, die kein GitHub-Geheimnis sind.::add-mask::VALUE Dadurch wird der Wert als geheim behandelt und aus den Protokollen herausgenommen. Weitere Informationen zu Maskendaten finden Sie unter „Workflow commands for GitHub Actions (Workflowbefehle für GitHub Actions)“.

Die Schwärzung von Geheimnissen wird von Ihren Workflow-Runnern durchgeführt. Das bedeutet, dass ein Geheimnis nur dann unkenntlich gemacht wird, wenn es im Rahmen einer Aufgabe verwendet wurde und für den Runner zugänglich ist. Wenn ein nicht geschwärztes Geheimnis an ein Workflow- Ausführungsprotokoll gesendet wird, sollten Sie das Protokoll löschen und das Geheimnis drehen lassen. Informationen zum Löschen von Protokollen finden Sie unter „Verwenden von Workflowausführungsprotokollen“.