Dieses Lernprogramm führt Sie durch die Verwendung der GITHUB_TOKEN Authentifizierung in GitHub Actions Workflows, einschließlich Beispielen zum Übergeben des Tokens an Aktionen, zum Erstellen von API-Anforderungen und zum Konfigurieren von Berechtigungen für die sichere Automatisierung.
Referenzinformationen findest du unter Workflowsyntax für GitHub Actions.
Verwenden des GITHUB_TOKEN in einem Workflow
Sie können die GITHUB_TOKEN Standardsyntax zum Verweisen auf geheime Schlüssel verwenden: ${{ secrets.GITHUB_TOKEN }}. Beispiele für die Verwendung des Tokens sind das GITHUB_TOKEN Übergeben des Tokens als Eingabe an eine Aktion oder die Verwendung, um eine authentifizierte GitHub API-Anforderung zu erstellen.
Wichtig
Eine Aktion kann über den GITHUB_TOKEN-Kontext auf das github.token zugreifen, auch wenn der Workflow das GITHUB_TOKEN nicht explizit für die Aktion übergibt. Als gute Sicherheitsmethode solltest du immer sicherstellen, dass Aktionen nur über den minimalen benötigten Zugriff verfügen, indem du die Berechtigungen für GITHUB_TOKEN einschränkst. Weitere Informationen finden Sie unter Workflowsyntax für GitHub Actions.
Beispiel 1: Übergeben des GITHUB_TOKEN als Eingabe
In diesem Beispielworkflow wird die GitHub CLI verwendet, die das GITHUB_TOKEN als Wert für den GH_TOKEN-Eingabeparameter erfordert:
name: Open new issue
on: workflow_dispatch
jobs:
open-issue:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
steps:
- run: |
gh issue --repo ${{ github.repository }} \
create --title "Issue title" --body "Issue body"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
name: Open new issue
on: workflow_dispatch
jobs:
open-issue:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
steps:
- run: |
gh issue --repo ${{ github.repository }} \
create --title "Issue title" --body "Issue body"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Beispiel 2: Aufrufen der REST-API
Du kannst das GITHUB_TOKEN für authentifizierte API-Aufrufe verwenden. In diesem Beispielworkflow wird ein Problem mit der GitHub REST-API erstellt:
name: Create issue on commit
on: [ push ]
jobs:
create_issue:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Create issue using REST API
run: |
curl --request POST \
--url https://api.github.com/repos/${{ github.repository }}/issues \
--header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
--header 'content-type: application/json' \
--data '{
"title": "Automated issue for commit: ${{ github.sha }}",
"body": "This issue was automatically created by the GitHub Action workflow **${{ github.workflow }}**. \n\n The commit hash was: _${{ github.sha }}_."
}' \
--fail
Ändern der Berechtigungen für GITHUB_TOKEN
Verwende den permissions-Schlüssel in deiner Workflowdatei, um Berechtigungen für das GITHUB_TOKEN für einen gesamten Workflow oder für einzelne Aufträge zu ändern. So kannst du die erforderlichen Mindestberechtigungen für einen Workflow oder Auftrag konfigurieren. Als bewährte Sicherheitsmethode sollten Sie dem GITHUB_TOKEN nur den geringsten erforderlichen Zugriff gewähren.
Eine Liste der verfügbaren Berechtigungen und deren parametrisierte Namen findest du unter Verwalten deiner persönlichen Zugriffstoken.
Die beiden zuvor in diesem Artikel beschriebenen Workflowbeispiele zeigen, wie der permissions-Schlüssel auf Auftragsebene verwendet wird.
Erteilen zusätzlicher Berechtigungen
Wenn Sie ein Token benötigen, das Berechtigungen erfordert, die im GITHUB_TOKEN nicht verfügbar sind, erstellen Sie ein GitHub App und generieren Sie innerhalb Ihres Workflows ein Installationszugriffstoken. Weitere Informationen finden Sie unter Erstellen authentifizierter API-Anforderungen mit einer GitHub App in einem GitHub Actions-Workflow. Alternativ können Sie ein Objekt personal access tokenerstellen, es als geheimer Schlüssel in Ihrem Repository speichern und das Token in Ihrem Workflow mit der ${{ secrets.SECRET_NAME }} Syntax verwenden. Weitere Informationen findest du unter Verwalten deiner persönlichen Zugriffstoken und Verwenden von Geheimnissen in GitHub-Aktionen.