Skip to main content

OpenID Connect

OpenID Connect ermöglicht es deinen Workflows, kurzlebige Token direkt mit deinem Cloudanbieter auszutauschen.

Übersicht über OpenID Connect (OIDC)

          GitHub Actions Workflows sind häufig für den Zugriff auf einen Cloudanbieter (z. B. AWS, Azure, GCP, HashiCorp Vault und andere) konzipiert, um Software bereitzustellen oder die Clouddienste zu verwenden. Bevor der Workflow auf diese Ressourcen zugreifen kann, werden dem Cloudanbieter Anmeldeinformationen, z. B. ein Kennwort oder ein Token, bereitgestellt. Diese Anmeldeinformationen werden in der Regel als geheimer Schlüssel GitHubgespeichert, und der Workflow stellt diesen geheimen Schlüssel bei jeder Ausführung an den Cloudanbieter vor.

Die Verwendung hartcodierter Geheimnisse erfordert jedoch, dass Sie Anmeldeinformationen im Cloudanbieter erstellen und diese dann in GitHub als Geheimnis duplizieren.

Nachdem du eine vertrauenswürdige Verbindung mit einem Cloudanbieter hergestellt hast, der OIDC unterstützt, kannst du deinen Workflow so konfigurieren, dass ein kurzlebiges Zugriffstoken direkt vom Cloudanbieter angefordert wird.

Vorteile der Verwendung von OIDC

Wenn du deine Workflows für die Verwendung von OIDC-Token aktualisierst, kannst du die folgenden bewährten Sicherheitspraktiken übernehmen:

  •         **Keine Cloud-Geheimnisse:** Sie müssen Ihre Cloudanmeldeinformationen nicht als langlebige Geheimnisse duplizieren. Stattdessen kannst du die OIDC-Vertrauensstellung auf deinem Cloudanbieter konfigurieren und dann deine Workflows aktualisieren, um ein kurzlebiges Zugriffstoken vom Cloudanbieter über OIDC anzufordern.
    
  •         **Authentifizierungs- und Autorisierungsverwaltung**: Du hast genauere Kontrolle darüber, wie Workflows Anmeldeinformationen verwenden können, indem du die Authentifizierungs- (authN) und Autorisierungstools (authZ) deines Cloudanbieters verwendest, um den Zugriff auf Cloudressourcen zu steuern.
    
  •         **Rotierende Anmeldeinformationen**: Mit OIDC stellt dein Cloudanbieter ein kurzlebiges Zugriffstoken aus, das nur für einen einzelnen Auftrag gültig ist und dann automatisch abläuft.
    

Wie OIDC mit GitHub Actions integriert wird

Das folgende Diagramm gibt einen Überblick darüber, wie GitHubder OIDC-Anbieter in Ihre Workflows und Cloudanbieter integriert wird:

Diagramm der Integration eines Cloudanbieters mit GitHub Actions über Zugriffstoken und JSON-Webtoken-Cloudrollen-IDs.

  1. Sie richten eine OIDC-Vertrauensstellung im Cloudanbieter ein, sodass bestimmte GitHub Workflows Cloudzugriffstoken im Auftrag einer definierten Cloudrolle anfordern können.
  2. Jedes Mal, wenn Ihr Auftrag ausgeführt wird, GitHubgeneriert der OIDC-Anbieter automatisch ein OIDC-Token. Dieses Token enthält mehrere Ansprüche zum Einrichten einer sicherheitsfesten und überprüften Identität über den spezifischen Workflow, der versucht, sich zu authentifizieren.
  3. Ein Schritt oder eine Aktion im Workflowauftrag kann ein Token vom GitHubOIDC-Anbieter anfordern, der dann dem Cloudanbieter als Nachweis der Identität des Workflows angezeigt werden kann.
  4. Nachdem der Cloudanbieter die im Token dargestellten Ansprüche erfolgreich überprüft hat, stellt er ein kurzlebiges Cloudzugriffstoken bereit, das nur für die Dauer des Auftrags verfügbar ist.

Grundlegendes zum OIDC-Token

Jeder Auftrag fordert ein OIDC-Token vom GitHubOIDC-Anbieter an, der mit einem automatisch generierten JSON-Webtoken (JWT) antwortet, das für jeden Workflowauftrag eindeutig ist, in dem er generiert wird. Wenn der Auftrag ausgeführt wird, wird das OIDC-Token für den Cloudanbieter bereitgestellt. Zur Überprüfung des Tokens ermittelt der Cloudanbieter, ob der Antragsteller des OIDC-Tokens und andere Ansprüche mit den Bedingungen übereinstimmen, die für die OIDC-Vertrauensdefinition der Cloudrolle vorkonfiguriert wurden.

Im folgenden Beispiel verwendet das OIDC-Token einen Antragsteller (sub), der auf eine Auftragsumgebung namens prod im Repository octo-org/octo-repo verweist.

{
  "typ": "JWT",
  "alg": "RS256",
  "x5t": "example-thumbprint",
  "kid": "example-key-id"
}
{
  "jti": "example-id",
  "sub": "repo:octo-org/octo-repo:environment:prod",
  "environment": "prod",
  "aud": "https://HOSTNAME/octo-org",
  "ref": "refs/heads/main",
  "sha": "example-sha",
  "repository": "octo-org/octo-repo",
  "repository_owner": "octo-org",
  "actor_id": "12",
  "repository_visibility": "private",
  "repository_id": "74",
  "repository_owner_id": "65",
  "run_id": "example-run-id",
  "run_number": "10",
  "run_attempt": "2",
  "runner_environment": "github-hosted",
  "actor": "octocat",
  "workflow": "example-workflow",
  "head_ref": "",
  "base_ref": "",
  "event_name": "workflow_dispatch",
  "enterprise": "avocado-corp",
  "enterprise_id": "2",
  "ref_type": "branch",
  "job_workflow_ref": "octo-org/octo-automation/.github/workflows/oidc.yml@refs/heads/main",
  "iss": "https://HOSTNAME/_services/token",
  "nbf": 1632492967,
  "exp": 1632493867,
  "iat": 1632493567
}

Authentifizieren benutzerdefinierter Aktionen mit OIDC

Benutzerdefinierte Aktionen verwenden für die Authentifizierung mit OIDC die getIDToken()-Methode aus dem Toolkit für Aktionen oder einen curl-Befehl.

Weitere Informationen finden Sie unter OpenID Connect-Referenz.

Aktualisieren deiner Workflows für OIDC

          GitHub Actions Workflows können OIDC-Token anstelle von geheimen Schlüsseln verwenden, um sich bei Cloudanbietern zu authentifizieren. Viele beliebte Cloudanbieter bieten offizielle Anmeldeaktionen, die den Verwendungsprozess von OIDC in Workflows vereinfachen. Weitere Informationen zum Aktualisieren deiner Workflows bei bestimmten Cloudanbietern findest du unter [AUTOTITLE](/actions/how-tos/security-for-github-actions/security-hardening-your-deployments).

OIDC-Unterstützung für Dependabot

          Dependabot kann OIDC verwenden, um sich bei privaten Registrys zu authentifizieren, wodurch die Notwendigkeit entfällt, langfristige Anmeldeinformationen als Repository-Geheimnisse zu speichern. Mit der OIDC-basierten Authentifizierung Dependabot können Aktualisierungsaufträge dynamisch kurzlebige Anmeldeinformationen von Ihrem Cloudidentitätsanbieter abrufen.

          Dependabot unterstützt die OIDC-Authentifizierung für jeden Registrierungstyp, der `username` und `password` Authentifizierung verwendet, wenn die Registrierung auf AWS CodeArtifact, Azure DevOps Artifacts oder JFrog Artifactory gehostet wird.

Die Vorteile der OIDC-Authentifizierung für Dependabot :

  •         **Erweiterte Sicherheit:** Entfernt statische, langlebige Anmeldeinformationen aus Ihren Repositorys.
    
  •         **Einfachere Verwaltung:** Ermöglicht den sicheren, richtlinienkonformen Zugriff auf private Registrierungen.
    
  •         **Vermeiden Sie die Ratenbegrenzung:** Dynamische Anmeldeinformationen helfen Ihnen, Geschwindigkeitsbeschränkungen zu vermeiden, die mit statischen Tokens verbunden sind.
    

Weitere Informationen finden Sie unter Konfigurieren des Zugriffs auf private Registrierungen für Dependabot.

Nächste Schritte

Weitere Informationen zum Konfigurieren von OIDC findest du unter Sicherheitshärtung deiner Bereitstellungen.

Referenzinformationen zu OIDC findest du unter OpenID Connect-Referenz.